1. Quiz game with a saved scoreboard
Teaches: dictionaries, loops, file handling, input validation.
Questions and answers live in a list of dictionaries. The program asks them in order, scores the run, and appends the player's name and score to a file so previous scores survive the program closing. That last part is what makes it a real program rather than an exercise.
Finished when: it handles a blank answer and a wrongly-typed answer without crashing, and the scoreboard still reads correctly after five separate runs. Extension: shuffle the questions, or add a timer.
2. Text adventure with rooms
Teaches: nested dictionaries, functions, program state.
A map of rooms, each with a description and exits. The player types "north" and moves. Add one object to pick up and one locked door it opens, and the student has built state management without anyone using the phrase.
Finished when: a player can reach the end, and typing nonsense produces a helpful message rather than a traceback. Extension: save the game position to a file so it can be resumed.
3. Marks analyser
Teaches: lists, arithmetic, formatted output, reading files.
Read a class's marks from a CSV or a plain text file. Report the highest, lowest, mean and how many passed. Print it as a neat table.
This is the most useful project on the list because it is the shape of almost all real programming: read data, compute something, present it clearly. Extension: a bar chart in plain text using asterisks — surprisingly satisfying and no libraries needed.
4. Password strength checker
Teaches: strings, conditions, boolean logic.
Check length, presence of digits, uppercase, lowercase and symbols. Return a rating and a specific suggestion for improvement.
It teaches the important habit of turning an informal rule into an explicit test, and it connects directly to online safety, which children find more interesting than a maths exercise. Extension: reject the twenty most common passwords from a list held in a file.
5. Turtle graphics pattern generator
Teaches: loops, nested loops, functions with parameters, angles.
Python's built-in turtle module draws spirals, polygons and tessellations from a handful of lines. A function that draws a polygon of n sides, called in a loop with a rotation each time, produces something genuinely beautiful from about twelve lines.
This is the project to give a student who is losing interest — the feedback is immediate and visual. Extension: take the number of sides and the colour as user input.
6. To-do list that persists
Teaches: lists, file read and write, a menu loop, delete operations.
Add a task, list tasks, mark one complete, delete one, quit. Everything saved to a text file so the list survives closing the program.
Finished when: deleting item 3 of 5 leaves the right four, and choosing option 9 from a menu of 5 does not crash it. Off-by-one errors and unvalidated menu input are the two bugs every student meets here, and meeting them is the point. Extension: priorities, and sorting by them.
7. Number guessing game with strategy hints
Teaches: random numbers, while loops, comparison logic.
The classic higher/lower game, with one addition that lifts it: after the game, tell the player whether their guesses followed an efficient strategy — did they halve the remaining range each time?
That turns a beginner exercise into a first encounter with binary search. Extension: a mode where the computer guesses the player's number and always wins in seven tries out of a hundred.
8. Dice statistics simulator
Teaches: random, loops, counting with dictionaries, interpreting results.
Roll two dice ten thousand times, count how often each total appears, print the distribution. The student predicts the shape first, then sees it.
It is the cleanest illustration of why 7 is not just "lucky", and it doubles as maths revision. Extension: compare ten rolls against ten thousand and explain, in writing, why the small sample looks so different.
9. Menu-driven contact book
Teaches: dictionaries, search, file persistence, program structure.
Add a contact, search by name, list all, delete, save to file. It is the closest thing on this list to an actual application, and it is the right final project of the year because it uses everything.
Finished when: searching for a name that does not exist is handled gracefully, and the file is still readable after twenty operations. Extension: partial-match search, so typing "ram" finds "Ramesh".
How to judge a finished project
The four-point check we use at the end of every module, which works equally well at home:
- It runs start to finish without breaking
- The student can explain every part of it in their own words
- They tested it and improved at least one thing afterwards
- Someone else used or understood it without their help
A project that passes all four is worth ten that merely run.