The SuperMemo program stores a database of questions and answers constructed by the user. When reviewing information saved in the database, the program uses the SuperMemo algorithm to decide what questions to show the user. The user then answers the question and rates their relative ease of recall - with grades of 1 to 5 - and their rating is used to calculate how soon they should be shown the question again. While the exact algorithm varies with the version of SuperMemo, in general, items that are harder to remember show up more frequently. Besides simple text questions and answers, the latest version of SuperMemo supports images, video, and HTML questions and answers. Since 2002, SuperMemo has had a unique set of features that distinguish it from other spaced repetition programs, called incremental reading. Whereas earlier versions were built around users entering information they wanted to use, using IR, users can import text that they want to learn from. The user reads the text inside of SuperMemo, and tools are provided to bookmark one's location in the text and automatically schedule it to be revisited later, extract valuable information, and turn extracts into questions for the user to learn. By automating the entire process of reading and extracting knowledge to be remembered all in the same program, time is saved from having to manually prepare information, and insights into the nature of learning can be used to make the entire process more natural for the user. Furthermore, since the process of extracting knowledge can often lead to the extraction of more information than can actually be feasibly remembered, a priority system is implemented that allows the user to ensure that the most important information is remembered when they can't review all information in the system.
Algorithms
The specific algorithms SuperMemo uses have been published, and re-implemented in other programs. Different algorithms have been used; SM–0 refers to the original algorithm, while SM-2 refers to the original computer-based algorithm released in the 1987. Subsequent versions of the software have further optimized the algorithm. Piotr A. Wozniak, the developer of SuperMemo algorithms, released the description for SM-5 in a paper titled Optimization of repetition spacing in the practice of learning. Little detail is specified in the algorithms released later than that. In 1995, SM-8, which capitalized on data collected by users of SuperMemo 6 and SuperMemo 7 and added a number of improvements that strengthened the theoretical validity of the function of optimum intervals and made it possible to accelerate its adaptation, was introduced in SuperMemo 8. In 2002, SM-11, the first SuperMemo algorithm that was resistant to interference from the delay or advancement of repetitions was introduced in SuperMemo 11. In 2005, SM-11 was tweaked to introduce boundaries on A and B parameters computed from the Grade vs. Forgetting Index data. In 2011, SM-15, which notably eliminated two weaknesses of SM-11 that would show up in heavily overloaded collections with very large item delays, was introduced in Supermemo 15. In 2016, SM-17, the first version of the algorithm to incorporate the two component model of memory, was introduced in SuperMemo 17. The latest version of the SuperMemo algorithm is SM-18, released in 2019.
Description of SM-2 algorithm
The first computer-based SuperMemo algorithm has 3 inputs, being the repetition number, easiness factor, and inter-repetition interval. The repetition number is fairly self-explanatory, the easiness factor is a measure of how easy recall of an answer was, and inter-repetition interval describes the time between repetitions. A grade is given by the pupil, and with that, the variables are modified in the following way: If the grade given is greater thanequal to 3, indicating a correct answer:
If repetitions = 0
* interval = 1
If repetitions = 1
* interval = 6
If repetitions > 1
* interval = interval * easiness
repetitions = repetitions + 1
easiness = easiness +
If the grade given is less than equal to 3, indicating an incorrect answer:
repetitions = 0
interval = 1
If easiness goes below 1.3, raise it to 1.3
Criticism of SM3+
The SM-2 algorithm uses the performance on a card to schedule only that card, while SM-3 and newer algorithms use card performance to schedule that card and similar cards. The additional optimizations sometimes yield perverse results – answering "hard" on a card may yield an interval longer than answering "easy" on a card – and are criticized as reducing the robustness of the algorithm, making it more sensitive to variations – non-uniform difficulty of cards, inconsistencies in studying, and so forth. Woźniak disagreed with the criticism, but in practice the other factors affecting study make differences less important.
Non-SuperMemo implementations
Some of the algorithms have been reimplemented in other, often free programs such as Anki, Mnemosyne, and Emacs Org-mode's Org-drill. See full list of flashcard software. The SM-2 algorithm has proven most popular in other applications, and is used in Anki and Mnemosyne, among others. Org-drill implements SM-5 by default, and optionally other algorithms such as SM-2.