Source: https://mokxi.com/teachers/plans/software-capstone
Updated: 2026-11-12

Lesson plan

# Software capstone: your own project lesson plan

The end of the Coding track: design and ship a project of your own on a Raspberry Pi, milestone by milestone, from the problem and the spec through modules, slices, tests and polish to a demo you can share.

4 chapters, 7 lessons, about 8 hours, on the Raspberry Pi 4 Model B. Every lesson runs in the browser, with nothing to install.

Start a class from this course

The unit

## Objectives and materials

### By the end, students can

- Pick a problem worth solving and write a spec the program can check.
- Give every job a module, then grow the product one working slice at a time.
- A test suite with fakes that finds bugs first, then polish a stranger can use.
- A demo that cannot go wrong, a write-up, and a link to share.

### Materials for the whole unit

- Eight-channel ADC, MCP3008
- Half breadboard
- LED
- Potentiometer
- Raspberry Pi 5
- Resistor

Every part is already on the simulator’s bench, so there is nothing to buy or hand out. The counts are the most any one lesson uses, if you build it on real breadboards too.

Chapter 1. About 2 h 20 min

## Plan

Pick a problem worth solving and write a spec the program can check.

Lesson | Time | What students do

Pick a problem Start the capstone: what makes a problem worth a portfolio project, evidence that a sensor can see it, the smallest program that helps, the edge case that would fool it, and a one-sentence problem statement for your own project. | 65 min

- Run it: the brief
- Evidence first: can the sensor see it?
- The smallest thing that helps
- An output a person acts on
- The case that would fool it
- Your version: pick your problem

Write the spec Turn the problem into a written spec with user stories and an out-of-scope list, then into acceptance checks the program prints: a boundary bug the spec catches, a spec change made test first, and the spec run against the hardware. | 75 min

- Run it: a spec you can read
- A story becomes a check
- Predict: which check fails?
- Fix it, and count
- Change the spec first
- Predict: the spec on the hardware
- Your version: write your spec

### Materials

- Eight-channel ADC, MCP3008
- Half breadboard
- LED
- Potentiometer
- Raspberry Pi 5
- Resistor

### Check for understanding

Each student finishes "Write the spec" on their own, without opening the hints. The simulator checks 7 of its 7 steps as they go.

Then ask each one to explain, in a sentence or two, the last thing it asked of them: "Your version: write your spec".

Chapter 2. About 2 h 20 min

## Build

Give every job a module, then grow the product one working slice at a time.

Lesson | Time | What students do

Architecture Split the working script by job: pure care rules, a sensor adapter behind a read() interface with a fake for tests, JSON storage, and a report layer, so each part can change, or be tested, without touching the others. | 65 min

- Run it: one file, four jobs
- Decide: care.py
- Sense: an interface, and a fake
- Remember: store.py
- Tell: report.py
- Your version: draw your modules

Build in slices Grow Sprout one vertical slice at a time, each a command that goes from typed text through every layer to a result: status, water, history and a setting, with bad input answered instead of crashing. | 75 min

- Run it: a shell with one command
- Slice 1: status
- Slice 2: water
- Slice 3: history
- Slice 4: a setting
- Bad input gets an answer
- Your version: plan your slices

### Materials

- Eight-channel ADC, MCP3008
- Half breadboard
- LED
- Potentiometer
- Raspberry Pi 5
- Resistor

### Check for understanding

Each student finishes "Build in slices" on their own, without opening the hints. The simulator checks 7 of its 7 steps as they go.

Then ask each one to explain, in a sentence or two, the last thing it asked of them: "Your version: plan your slices".

Chapter 3. About 2 h 20 min

## Prove

A test suite with fakes that finds bugs first, then polish a stranger can use.

Lesson | Time | What students do

Tests A test suite of plain asserts with a tiny runner that counts: boundary tests from the spec, the command handler tested through a fake probe and a fake lamp, a test that finds a real bug before you fix it, and a gate that will not start the app until every test passes. | 75 min

- Run it: a runner in twelve lines
- Test the boundaries
- Test a command with fakes
- Predict: a test that finds a bug
- Make it pass
- A missing sensor, and a gate
- Your version: your test suite

Polish and docs Make Sprout feel finished: a version string and --help from argparse, options that change behavior, logging with levels, errors that are logged instead of crashing, help text that documents itself, and a README and docstrings for the next reader. | 65 min

- A version and a --help
- Options that do something
- Logging, not print
- Errors are logged, never fatal
- Help that documents itself
- Your version: polish and a README

### Materials

- Eight-channel ADC, MCP3008
- Half breadboard
- LED
- Potentiometer
- Raspberry Pi 5
- Resistor

### Check for understanding

Each student finishes "Polish and docs" on their own, without opening the hints. The simulator checks 6 of its 6 steps as they go.

Then ask each one to explain, in a sentence or two, the last thing it asked of them: "Your version: polish and a README".

Chapter 4. About 1 h 5 min

## Ship

A demo that cannot go wrong, a write-up, and a link to share.

Lesson | Time | What students do

Demo and write-up Finish the capstone: a scripted --demo mode that runs every command, a live moment with the lamp, the spec's acceptance checks run against the finished code, a one-line share card, then your README, a 60 second demo script and the Mokxi project link. | 65 min

- A demo that cannot go wrong
- The live moment
- Prove the spec, one more time
- Predict: the share card
- Your version: the write-up
- Your version: demo it and share it

### Materials

- Eight-channel ADC, MCP3008
- Half breadboard
- LED
- Potentiometer
- Raspberry Pi 5
- Resistor

### Check for understanding

Each student finishes "Demo and write-up" on their own, without opening the hints. The simulator checks 6 of its 6 steps as they go.

Then ask each one to explain, in a sentence or two, the last thing it asked of them: "Your version: demo it and share it".

Your class

## Teach this unit as a class

Start a class from this course and its 7 lessons are assigned in one go, in order. Students join with a six-character code or printed login cards, and each one’s work comes back to you.

The class tools are free for 30 days for one class of up to 20 students, with no card. The lessons themselves are free either way.

Start a class from this course See the demo class

More units

## Other lesson plans

Electronics basics 20 lessons, about 10 h. Embedded on the Arduino Uno 16 lessons, about 12 h. Embedded on the ESP32-C3 13 lessons, about 11 h. Embedded on the Raspberry Pi Pico 7 lessons, about 6 h. Build your own fight stick 5 lessons, about 4 h. Embedded on the STM32F411 6 lessons, about 6 h. C++ on a board 13 lessons, about 10 h. Digital logic and memory 4 lessons, about 4 h. Interactive devices on the Uno 9 lessons, about 8 h. From gates to a computer 23 lessons, about 16 h. Build a claw machine 8 lessons, about 6 h. Every unit All the courses as ready-made units, on the teachers page.
