Key inquiry: “When a problem looks too big to code, how do we break it down until each piece is obvious?”
You ship: A command-line tool that solves a self-chosen problem, with tests and a written design rationale.
LO1 · Data structures & algorithms
- Choose an appropriate data structure and justify the choice
- Analyse a solution’s efficiency in plain terms (time/space)
LO2 · Decomposition & OOP
- Decompose a problem into functions/classes with clear responsibilities
- Refactor working code to be simpler and explain each change
LO3 · Version control
- Use Git to branch, commit and collaborate with a partner
- Solve a real problem two ways and compare which is clearer and faster.
- Pair-program a tool and review each other’s commits.
- Whiteboard the design before writing code; reflect on what changed.
Solves guided problems and uses Git.
Designs and refactors independently with sound choices.
Delivers reusable, tested, well-documented tooling.