The idea
Help a learner discover which coding concepts need another look. A useful result explains mistakes and offers a focused retry, rather than showing only a score.
See this learning levelWhat you will build
- A question bank with topics, difficulty labels and explanations for every answer.
- An attempt flow with progress, answer confirmation and protection against double scoring.
- A results breakdown by topic and a retry queue containing only missed questions.
How it fits together
Store questions separately from rendering code. Model start, answering, feedback and results states explicitly. Keep selected answers and confirmed answers distinct; derive scores from confirmed answers rather than incrementing a counter repeatedly.
Build milestones
Author meaningful questions
Create a balanced question bank with plausible wrong answers and explanations that address common misunderstandings.
Build the attempt flow
Implement selection, confirmation, feedback and next-question behaviour. Prevent skipping without an answer and repeated submissions.
Make results useful
Show topic strengths and gaps, review each answer and start a focused retry from missed questions.
Test every path
Run all-correct, all-wrong and mixed attempts. Verify focus movement and feedback announcements with keyboard use.
How you will know it works
- Submitting twice cannot score a question twice or change a confirmed answer.
- Results agree with recorded answers, including zero and full scores.
- Retry contains only missed questions and starting fresh removes prior attempt state.
What you will finish with
A browser quiz, structured question bank, state diagram and a set of documented test journeys.
Take it further
Add a learner-selected topic mode while preserving consistent scoring and review behaviour.