Architecture Kata “Word Quiz”
Develop a software system to learn words, e.g. to improve your foreign language vocabulary.
The student learns based on boxes. Each box is filled with words and their translations/meanings.
During the quiz each word (question) is presented with 4 potential translations (answers) – of which only one is correct. Example question: Cat. Example translations into German: Kuh, Katze, Hund, Maus.
The question is shown with a timeout. Either the student answers the question or it timeouts. Correct answer, incorrect answer, and timeout will be logged and shown in the stats of the box.
After an answer was given or timeout the system gives feedback. It shows the correct answer and the given answer.
After the feedback the student can continue with the next question or wait for a notification (e.g. via email). The frequency of notification can be selected per box, e.g. every 4 hours or daily etc.
Notifications will be sent while a box is open for learning. Students can have several boxes opened at the same time.
Since each word has only one answer associated with it the system chooses the other 3 answers automatically from other words in the box. For each questions the answer options get shuffled.
After a question has been answered correctly three times it will not be asked again. Once all words in a box have been presented questions start from the beginning again – but in a different order.
Until a question which the student got notified about has not been answered not further notifications will be sent. If no answer is given for 2, 5, 10 days, then a reminder email is sent (if the box remains open).
In case there are less than 5 words in a box which haven’t been learned (3 correct answers) the box will be closed automatically and an informational email is sent to the student.
There are several boxes to be chosen from in the system.
As soon as a box is opened by a student any changes to the original box will not show up in the opened box.
Students register with a nickname, email address, and password. Students start learning right away, but need to confirm their email address by clicking on a link in a confirmation email. If she fails to do so, any open boxes will be closed and none can be opened. A confirmation email can be requested at any time.
Before using the system a student needs to login. If she forgot her password she can request a reset. The password can be changed at any time by a student.
The UI needs to provide:
- An overview of opened boxes with some stats about the progress.
- A means to open/close/discover boxes.
- View a question, answer it, get feedback.
- Settings for each box with notification frequency, overview of the words (read-only)
- Registration and administration of user data
- A means to create/update/delete boxes. Boxes can be declared public or private. The words in the boxes with their answers are uploaded from a CSV file.
- Box(description, version, words)
- Word(question, correct answer, optionally three wrong answers)
- Student(nickname, email address, password)
Questions and answers can be multi-line texts.