A 24-session, 12-week Rust programming course built around music, Minecraft, and a bit of maths. Designed as a complete evidence pack for the Duke of Edinburgh Award (DofE) Skill section at any level — usable by any DofE participant aged ~14+.
"Do you want me to sit in a corner and rust, or just fall apart where I'm standing?" — Marvin, The Hitchhiker's Guide to the Galaxy
- Beginner-to-intermediate programmers (some prior exposure to Python, JavaScript, or similar helps but isn't required)
- Pitched at a curious teenage learner; examples lean on music, Minecraft, and maths as familiar territory, but no specialist knowledge is assumed
- Suitable as a structured 12-week skill activity for the Duke of Edinburgh Award at Bronze, Silver, or Gold level
You don't need to be a maths whiz or own a MIDI keyboard. The MIDI keyboard projects in Month 3 have file-based fallbacks.
By the end of the course, you'll have written three real, working pieces of software:
| Month | Project | What it does |
|---|---|---|
| 1 | music-theory-cli |
A command-line tool that prints scales and chord progressions for any root note. |
| 2 | world-generator |
A seeded procedural terrain generator that prints Minecraft-style ASCII worlds. |
| 3 | midi-synth |
A MIDI synthesiser that turns .mid files (or live keyboard input) into audio. |
Every project compiles and runs unmodified on Windows, macOS, and Linux.
- 24 sessions, ~1 hour each
- 2 sessions per week for 12 weeks
- Each session has a written walkthrough and a folder of runnable example code
- Every month ends with a 2-session mini-project build
- Every session ends with an optional challenge (no solution provided — that one's for you)
- Every session ends with a DofE log reminder so the evidence pack stays up to date
.
├── README.md (you are here)
├── SETUP.md Install Rust, Cargo, VS Code on Windows / macOS / Linux
├── LICENSE MIT
├── .gitignore
├── dfe/ Duke of Edinburgh Award evidence pack
├── month-1/ Foundations → music-theory-cli
├── month-2/ Intermediate → world-generator
├── month-3/ Advanced → midi-synth
└── resources/ Cheatsheet and compiler-error reference
Each session-XX/ folder contains a README.md (the lesson) and an examples/ folder of cargo run-able sample code.
- Rust (stable, 1.75 or newer) installed via rustup
- Cargo (comes with Rust)
- VS Code with the
rust-analyzerextension - Python 3 (for the Session 1 speed demo only)
- Linux only:
libasound2-devfor Month 3 audio (sudo apt install libasound2-dev) - Month 3 stretch goal only: a USB MIDI keyboard (any class-compliant model)
Step-by-step instructions for all three platforms are in SETUP.md.
- Pre-flight: work through
month-1/session-00/— install Rust, create a GitHub account, fork this repo, and make your first commit. ~45 minutes, one-off. - If you're doing this for DofE, read
dfe/README.md,dfe/print-checklist.md, anddfe/github-workflow.mdbefore Session 1, and decide whether to log on paper, in git, or both. - Open
month-1/README.mdand start at Session 1. - After every session, fill in that session's page in your printed booklet or edit
dfe/session-log.mdandgit commit(or both — seedfe/github-workflow.md). - After each mini-project, complete the corresponding milestone reflection in
dfe/. - After Session 24, write your participant statement and have your assessor sign off.
Get stuck? Each session has a solution/ or examples/ folder showing the working answer. Don't recognise a term? The GLOSSARY explains every piece of jargon used in the course (compiled, immutable, borrow, trait, GIL, monte carlo, MIDI, …) in plain English with links for further reading. Not a musician? The MUSIC THEORY PRIMER explains notes, scales, MIDI numbers and frequencies from scratch with a labelled piano-keyboard diagram — all the music background you need for Months 1 and 3 in a 10-minute read.
The written content for each session is sized for ~1 hour of focused work. Project sessions (7, 8, 15, 16, 21–24) tend to run a little longer because you're building real software.
- Get to the code fast. Theory exists to make code make sense, not the other way round.
- Projects are the point. Concepts are introduced because you need them for the project.
- Respect the learner. No talking down. Real terminology, explained clearly.
- Make it fun. Music, Minecraft, and maths thread through almost every example.
- All sample code works. No pseudocode. Every snippet is a complete, runnable Cargo project.
MIT. See LICENSE. Fork it, remix it, teach it. If you build something cool, open a PR.
Built around the Rust language and its incredible community. Special thanks to the maintainers of cargo, rust-analyzer, hound, midly, midir, cpal, clap, colored, and fastrand — all crates used in this course.