The Project Workshop 🛠️
Lessons teach you the language. Projects teach you to program. Here you get a spec, not a script: build the thing yourself, reach for a hint only when you're stuck, and compare with a reference solution at the end.
Projects
Number Guessing Game
The classic first program: the computer picks a number, you guess, it
says higher or lower. Loops, user input, and match.
Tip Splitter CLI
A real command-line tool that reads arguments, does honest money math, and fails gracefully when someone types nonsense.
Todo List
Your first program that remembers things between runs: structs, vectors, and reading and writing a real file.
Flashcard Quizzer
A study tool you will actually use: cards from a file, shuffled, and the ones you miss come back until you know them.
Text Adventure
Build a five-room world, an inventory, and a command parser. Find Rusty's golden claw and learn the indices-not-references trick.
Word Counter Pro
Feed it any text file, get the shape of the writing: counts, unique words, and a top-ten table. Iterator chains earning their keep.
Markdown Converter
A real parser: turn .md into .html with headings, emphasis, lists, escaping, and the ordering traps every text tool hides.
rustle: a mini grep
Your own text-search tool with line numbers and a case-insensitive flag, built on a lifetime you finally need for real.
The Capstone: Build the Server
Rebuild this website's own web server from a spec: TCP, HTTP, threads, a security check, and tests. Pure std. 🏔️
- Read the spec, then close this tab. Open your editor and try. Getting it wrong first is normal and useful.
- Hints are a ladder, not an elevator. They go from a gentle nudge to actual code. Take the smallest one that unsticks you.
- Compare at the end. The reference solution is one valid answer, not the only one. If yours works and reads clearly, yours is right.
- Then break it. Every project has stretch goals. That's where it stops being homework and starts being yours.