Exam preparation · A level · OCR H446 2.2.1, AQA 7517 4.4.1.2, Eduqas A500QS 1.8 · about 40 min
Mapping the specification, retrieval, spacing and interleaving, and a spaced repetition scheduler for the whole course.
[1 mark]Which revision method is retrieval practice?
[1 mark]What is interleaving?
[1 mark]In the Leitner system, what happens to a card you answer wrongly?
[1 mark]A card follows the Leitner rules with intervals 1, 2 and 4 days. What does this print?
INTERVAL = {1: 1, 2: 2, 3: 4}
box, day = 1, 1
for correct in [True, True, True, False]:
box = min(box + 1, 3) if correct else 1
day = day + INTERVAL[box]
print(box, day)2 3 3 7 3 11 1 12
Right answers move it to boxes 2, 3 and 3 again, due on days 3, 7 and 11; the wrong answer sends it to box 1, due on day 12.
[1 mark]Put the steps for using a past paper question in order.
Number the lines 1 to 4 to put them in the right order.
Read the examiners' report for itMark it strictly with the mark schemeAnswer it under time, closed bookRecord the mistake and schedule the topic againAnswer it under time, closed book Mark it strictly with the mark scheme Read the examiners' report for it Record the mistake and schedule the topic again
Practise, mark honestly, learn what went wrong, and space the topic back into revision.
Schedule revision with the Leitner system for eight days.
- INTERVAL maps a box number (1, 2 or 3) to the number of days until a card in that box is next due.
- cards is a list of topic names (strings), in the order they are reviewed on any day.
- answers maps each card to a list of True (answered correctly) and False (answered wrongly), in the order the card is reviewed. Every card has enough answers for the eight days.
Every card starts in box 1, due on day 1. For each day from 1 to DAYS, go through cards in order and review each card that is due that day: take its next answer from the front of its list with pop(0); if it is correct move the card up one box (to at most 3), otherwise put it in box 1; then set it due on the current day plus the INTERVAL of its new box. Print day <d>: <cards>, the cards reviewed that day separated by , , or day <d>: rest if none were due.
After day DAYS, print a line for each box from 1 to 3: box <n>: <cards>, the cards in that box in the order of cards, separated by , , or box <n>: empty. The robot stays still.
# the two lines every program starts with: the commands, then the robot
from bugbot import *
connect()
INTERVAL = {1: 1, 2: 2, 3: 4}
DAYS = 8
cards = ["binary search", "two's complement", "RIPA 2000", "Dijkstra"]
answers = {
"binary search": [True, True, True],
"two's complement": [False, True, True, False],
"RIPA 2000": [True, False, True, True],
"Dijkstra": [False, False, True, True],
}The hint students can ask for: Keep two dictionaries: the box each card is in, and the day each card is next due. On each day, go through the cards in order and review only those due today, updating the box first and then the due day from the new box.
# the two lines every program starts with: the commands, then the robot
from bugbot import *
connect()
INTERVAL = {1: 1, 2: 2, 3: 4}
DAYS = 8
cards = ["binary search", "two's complement", "RIPA 2000", "Dijkstra"]
answers = {
"binary search": [True, True, True],
"two's complement": [False, True, True, False],
"RIPA 2000": [True, False, True, True],
"Dijkstra": [False, False, True, True],
}
box = {card: 1 for card in cards}
due = {card: 1 for card in cards}
for day in range(1, DAYS + 1):
today = []
for card in cards:
if due[card] == day:
correct = answers[card].pop(0)
box[card] = min(box[card] + 1, 3) if correct else 1
due[card] = day + INTERVAL[box[card]]
today.append(card)
print(f"day {day}: " + (", ".join(today) if today else "rest"))
for b in (1, 2, 3):
in_box = [c for c in cards if box[c] == b]
print(f"box {b}: " + (", ".join(in_box) if in_box else "empty"))
Any program that meets the task's checks is marked correct in the simulator; this is one way, not the only way.