Expand description

Trane is an automated learning 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”).

Modules

Module defining a blacklist of units that should not be shown to the user.

Module defining utilities to make it easier to generate courses and lessons.

Module containing utilities to open and manipulate collecti&ons of courses and lessons stored under a directory, which are named a course library.

Module defining the basic data structures used by Trane.

Module containing utilities to manipulate the filters saved under the .trane/filters directory.

Module defining the dependency graph and the basic operations that can be applied to it.

Module defining the data structures used to store user’s answers to exercises.

Module defining the data structures used to schedule batches of exercises to show to the user. The core of Trane’s logic is in this module.

Module defining the data structures used to score an exercise based on the user’s previous trials.

Structs

Trane is a library for the acquisition of highly hierarchical knowledge and skills based on the principles of mastery learning and spaced repetition. Given a list of courses, its lessons and correspondings exercises, Trane presents the student with a list of exercises based on the demonstrated mastery of previous exercises. It makes sures that new material and skills are not introduced until the prerequisite material and skills have been sufficiently mastered.