Capstone 5 · Level IV

The Sankofa Engine

The last project closes the circle: build the thing you have been learning inside. Create a question bank, a quiz runner that scores answers and explains mistakes, a progress tracker that remembers mastery per topic, and a recommendation function that decides what a learner should study next. It uses every concept in the course, and it ends with you having built the tool that taught you. Go back, bring it forward.

Concepts used

EverythingFunctions and compositionCollectionsJSONError handlingAlgorithmsProgram design

Your dataset

A question bank of at least fifteen questions across four topics, with three question types.

Milestones

1Model a question with topic, type, prompt, options, answer, and explanation.
2Write a checker that grades multiple choice and typed answers, normalising whitespace and case.
3Run a full quiz, scoring as it goes and collecting which topics were missed.
4Compute mastery per topic as a percentage and decide which topics count as mastered.
5Write a recommend function that returns the weakest unmastered topic, or a completion message.
6Persist the whole progress record to JSON and reload it, proving the round trip.

The graded core

The rest of this project is yours to shape. This one function is the piece everything else depends on, so it runs against hidden tests to prove it is right before you build outward.

◈ Graded Challenge

The engine's decision-maker. Write a function that takes a dictionary of topic names to percentage scores and returns the name of the weakest topic that has not reached mastery (80 or above). If every topic is mastered, return "complete".

Name it exactly: def recommend_next(scores):

3 visible + 2 hidden
loading editor…

Your workspace

Build the full project here. Work through the milestones in order, in both languages.

SANKOFA SANDBOX
loading editor…
Your turn → Build it in Python first, then rebuild it in JavaScript. The logic transfers, only the syntax changes.
← All projects