Spaced repetition and Leitner boxes

Inge Wallin inge at
Tue Mar 4 23:56:20 UTC 2014

The scientific theory behind the learning approach in Parley and KWordQuiz and 
maybe also other applications in KDE Edu is so called "Spaced Repetition 
Training". This means that when you are learning a new concept, like a word or 
similar, you are shown it repeatedly with varying time intervals. The better 
you know the concept the less often you are shown it. But with each repetition 
you get the concept deeper ingrained into the long-term memory and finally 
after some number of times it is permanently imprinted and you will never 
forget it.

When you have lots of similar concepts to learn at the same time it makes 
sense to concentrate on those that you have difficulties with and not 
concentrate on those you already know or have an easier time learning. This is 
handled by making the time until next showing longer (often doubling it) if 
you remember correctly during training and bringing it down to a minimum if 
you get it wrong. After some time all the words have been repeated enough to 
bring the interval up towards the maximum even if some words went there easily 
and some had to be repeated many times.

One way to handle this in a practical way is the use of so called Leitner 
boxes. The idea is that you have physical flashcards with words in two 
languages, one language on either side. You train by looking at one side of 
the card and try to come up with the correct translation. To find out if you 
are correct you look at the other side.You sort your flashcards into one of 
several boxes with numbers on it. The first box contains those cards that you 
haven't studied yet and/or those you got wrong at some point during the 
training. When you take a card from one of the boxes and you remember word on 
the card correctly you move it up to the next box. If you get it wrong you 
move it down to box number 1. You repeat this until all of the cards are in 
the box with the highest number.

This is of course very easy to implement using a computer and many training 
programs use this exact way of implementing the ideas behind spaced repetition 
training. In Parley we have 7 different virtual boxes where all the virtual 
cards are sorted. The interval until the next showing is configurable but the 
default is that those in the first box are shown again after 1 day, the second 
after 2 days, then 4 days, 1 week, 2 weeks, 1 month and 2 months. Basically a 
doubling for each consecutive step.


This works nicely when you already have a learned the words in a very basic 
way and only needs to repeat them. The first time you see a new word you don't 
know it of course and should be shown it again in seconds, not one day later. 
Parley gets around this by showing you the card again during the same training 
session until you get it right the first time. Then the card goes into box 1 
and is shown again after a day. This means that when you try to learn new 
vocabulary you either have to work around Parley and train again on the new 
words, bypassing the automatic blocking, or you have to wait for a day and 
then have to relearn most new words because you already forgot them.

I can see several ways of fixing this problem and I would like to have a short 
discussion here about which of them to choose.

1. More boxes.

In the theory behind spaced repetition training it is not fully established 
which intervals are optimal at the beginning of the process. One researcher, 
Pimsleur, recommended a first interval of 5 seconds.  Another implementation I 
worked with used 3.5 minutes but they repeated the word until I got it right 
the first time.

It would be very easy to fix the problem by just introducing more boxes. The 
first box would then have a repetition time of, say, 3 minutes and then have 
boxes with 6, 12, 30 minutes, 1, 2, 4, 8 hours and finally 1 day and so on. 
This means that we would use 15 boxes instead of 7, other than that it would 
be exactly the same. UI wise this could be a challenge but other than that 
this approach would require no changes.

2. A separate learning stage

We could use the same system as today but add a learning stage where the cards 
are not regarded as being in any box at all. During this stage, we could 
implement the pure time-based repetition system which means we would end up 
with the same solution as in alternative 1 but it wouldn't show all the boxes. 
Visually it would be the same as before.

3. A pure time based solution.

This alternative would be to skip the boxes altogether and only focus on when 
it is time to show a particular card again. Learning wise it would be the same 
as alternative 1 and 2 but visually in the UI it would mean less clutter (no 
boxes) and a more uniform way of choosing the cards. However, it would also 
mean the biggest step away from the current working of Parley.

So, there it is.  My gut feeling is that approach 3 is the best. If you reread 
my initial mail about reworking the language applications you will find a 
description of one of the websites that I have been using that I think worked 
better than anything else that I tried. That was It used times 
only and it was simply awesome. But as I said, it would also mean the biggest 
deviation from what we have now. 

And to add to that, our current file format kvtml2 does not support a time-
based approach. It does store the time of the last time the card was shown and 
which "grade" the word has - i.e. which leitner box the word currently belongs 
to. But since the time for each leitner box is configurable in the UI, it is 
not possible to implement a pure time-based solution using the current format.

Adding a time interval until the next showing is a trivial fix to 
keduvocdocument but it means that if you load your file into an old parley you 
will lose your training status. If we add more boxes instead (alternative 1) 
then it would still be backwards compatible but also much uglier.

So which approach is best?  Comments?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the kde-edu mailing list