Textbook exercises tell you what to type. Mini projects tell you what to build โ and leave the how to you. This is exactly what the GCSE NEA requires. Building mini projects first makes the NEA feel achievable.
You remember building something more than completing an exercise. Three months before the exam, you will still remember the quiz game you built from scratch โ and you will remember the Python techniques it used.
Exercises test what you know. Projects reveal what you do not know. If your quiz game does not work because you do not understand how lists work, you find that out quickly and fix it.
Introduces random numbers, loops, conditionals, and user input. Complete in one 30-minute session.
import random
Target = random.randint(1, 100)
guesses = 0
while True:
guess = int(input("Guess (1-100): "))
guesses += 1
if guess < target:
print("Too low")
elif guess > target:
print("Too high")
else:
print(f"Correct! {guesses} guesses")
breakrandom.randint(), while True loop, break statement, f-strings, integer conversion with int(), comparison operators, and counting with a variable.
Introduces lists, indexing, and score tracking. Extend it to read questions from a file for a Level 7+ challenge.
questions = ["What is 8 ร 7?", "Capital of France?", "Largest planet?"]
answers = ["56", "Paris", "Jupiter"]
score = 0
for i in range(len(questions)):
response = input(questions[i] + " ")
if response.lower() == answers[i].lower():
print("Correct!")
score += 1
else:
print(f"Wrong. Answer: {answers[i]}")
print(f"Score: {score}/{len(questions)}")Parallel lists, for loop with range and len(), string comparison with .lower(), score accumulation, f-strings with expressions inside.
Introduces functions, return values, and validation. A clean functional structure that mirrors GCSE exam code.
def get_grade(score):
if score >= 70: return "A"
elif score >= 60: return "B"
elif score >= 50: return "C"
else: return "Fail"
def get_valid_score():
while True:
try:
s = int(input("Enter score (0-100): "))
if 0 <= s <= 100:
return s
print("Must be 0-100")
except ValueError:
print("Enter a number")
for _ in range(5):
score = get_valid_score()
print(f"Grade: {get_grade(score)}")Multiple functions, return values, while True with return, try/except for validation, f-strings, nested function calls.
These three projects cover the remaining GCSE programming requirements โ file handling, data structures, and complex control flow.
Read and write scores to a text file. Display the top 5 scores. Demonstrates: open(), write(), readlines(), sorting a list, file append mode.
A 3ร3 grid stored as a 2D list. Players take turns. Check rows, columns, and diagonals for a winner. Demonstrates: 2D lists, nested loops, functions that modify and return lists.
Rooms stored in a dictionary. Player moves between rooms. Items can be picked up. Win condition when all items collected. Demonstrates: dictionaries, file saving/loading, complex control flow.
Miss ICT sessions work through Python projects step by step โ building the skills needed for the NEA and the programming paper.
Projects 1โ3 assume knowledge of variables, loops, conditionals, and functions. If those are new, start with Python for Beginners or the Python Starter Pack first.
They are practice projects, not NEA submissions โ the NEA must be your own independent work solving a specific problem. These projects build the skills the NEA requires.
Projects 1โ3: 30โ45 minutes each. Projects 4โ6: 45โ60 minutes each, with extensions available for faster learners.
Every Python topic in the OCR spec before tackling projects.
Variables, input, loops, and functions โ the foundation.
Timed challenges to build speed after completing projects.
1-to-1 Python support from a GCSE examiner.