Goals

This rust library aims to provide a simple and efficient but powerful implementation of a spaced repetition algorithm

Design

$$P(t) = e^{-ft} = e^{-\frac{d}{m}t}$$

For a better understanding of how the code works, read the source! (It is under 150 lines)

Data driven vs user evaluated

Modeling the forgetting curve requires including a bunch of parameters that can be quite arbitrary. To better set these values one would want a dataset of real review events and then try to fit the model to those items that performed the best. This approach though requires familiarity with such methods (which I don't have). Instead of doing this I'll instead rely on trying to best-guess some values and then introduce a way for the user to continuously evaluate the performance of the model. My hope is that I this way empirically can arrive at better default values for further and further revisions until I can create a fully data driven approach.

Limitations

This library does not: - handle failed reviews (forgotten items). Instead the library user needs to decide how such items needs to be handled. - automatically update all parameters to better model the real forgetting curve

Licence

see ./LICENCE