Expand description
Trane is an automated practice system for the acquisition of complex and highly hierarchical skills. It is based on the principles of spaced repetition, mastery learning, and chunking.
Given a set of exercises which have been bundled into lessons and further bundled in courses, as well as the dependency relationships between those lessons and courses, Trane selects exercises to present to the user. It makes sure that exercises from a course or lesson are not presented to the user until the exercises in their dependencies have been sufficiently mastered. It also makes sure to keep the balance of exercises so that the difficulty of the exercises lies slightly outside the user’s current mastery.
You can think of this process as progressing through the skill tree of a character in a video game, but applied to arbitrary skills, which are defined in plain-text files which define the exercises, their bundling into lessons and courses, and the dependency relationships between them.
Trane is named after John Coltrane, whose nickname Trane was often used in wordplay with the word train (as in the vehicle) to describe the overwhelming power of his playing. It is used here as a play on its homophone (as in “training a new skill”).
Here’s an overview of some of the most important modules in this crate and their purpose:
- data: Contains the basic data structures used by Trane.
- graph: Defines the graph used by Trane to list the units of material and the dependencies among them.
- course_library: Reads a collection of courses, lessons, and exercises from the file system and provides basic utilities for working with them.
- scheduler: Defines the algorithm used by Trane to select exercises to present to the user.
- practice_stats: Stores the results of practice sessions for use in determining the next batch of exercises.
- blacklist: Defines the list of units the student wishes to hide, either because their material has already been mastered or they do not wish to learn it.
- scorer: Calculates a score for an exercise based on the results and timestamps of previous trials.