Most programs are modeled like learning with flashcards: items to memorize are entered into the program as question-answer pairs; when a pair is due to be reviewed, the question is displayed on screen, and the user is supposed to attempt to remember the answer; when the user has succeeded or failed, he manually reveals the answer, and then tells the program how easily he recalled the answer or failed to. The program schedules pairs based on spaced repetition algorithms. Without a program the user has to schedule flashcards; this takes time and restricts to simple algorithms like the Leitner system.
Hi
Not sure if I pronounced "Leitner System" correctly.