# SuperMemo

SuperMemo (from "Super Memory") is a learning method and software package developed by SuperMemo World and SuperMemo R&D with Piotr Woźniak in Poland from 1985 to the present. It is based on research into long-term memory, and is a practical application of the spaced repetition learning method that has been proposed for efficient instruction by a number of psychologists as early as in the 1930s.
The method is available as a computer program for Windows, Windows CE, Windows Mobile, (Pocket PC), Palm OS (PalmPilot), etc. Course software by the same company (SuperMemo World) can also be used in a web browser or even without a computer.
The desktop version of SuperMemo started as a flashcard software (SuperMemo 1.0 (1987)). Since SuperMemo 10 (2000), it began to support incremental reading.

## Software implementation

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 0 to 5 (0 is the hardest, 5 is the easiest) - 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 2000, SuperMemo has had a unique set of features that distinguish it from other spaced repetition programs, called incremental reading (IR or "increading"). 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 (non-computer-based) algorithm, while SM-2 refers to the original computer-based algorithm released in 1987 (used in SuperMemo versions 1.0 through 3.0, referred to as SM-2 because SuperMemo version 2 was the most popular of these). Subsequent versions of the software have claimed to further optimize the algorithm.
Piotr Woźniak, 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 (aka SuperMemo 2002). 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 (SM-2) tracks three properties for each card being studied:
* The repetition number n, which is the number of times the card has been successfully recalled (meaning it was given a grade ≥ 3) in a row since the last time it was not.
* The easiness factor EF, which loosely indicates how "easy" the card is (more precisely, it determines how quickly the inter-repetition interval grows). The initial value of EF is 2.5.
* The inter-repetition interval I, which is the length of time (in days) SuperMemo will wait after the previous review before asking the user to review the card again.
Every time the user starts a review session, SuperMemo provides the user with the cards whose last review occurred at least I days ago. For each review, the user tries to recall the information and (after being shown the correct answer) specifies a grade q (from 0 to 5) indicating a self-evaluation the quality of their response, with each grade having the following meaning:
* 0: "Total blackout", complete failure to recall the information.
* 1: Incorrect response, but upon seeing the correct answer it felt familiar.
* 2: Incorrect response, but upon seeing the correct answer it seemed easy to remember.
* 3: Correct response, but required significant effort to recall.
* 4: Correct response, after some hesitation.
* 5: Correct response with perfect recall.
The following algorithm is then applied to update the three variables associated with the card:
After all scheduled reviews are complete, SuperMemo asks the user to re-review any cards they marked with a grade less than 4 repeatedly until they give a grade ≥ 4.

### Non-SuperMemo implementations

Some of the algorithms have been re-implemented 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 modified form) in Anki and Mnemosyne, among others. Org-drill implements SM-5 by default, and optionally other algorithms such as SM-2 and a simplified SM-8.