Crate trane

source ·
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.

Modules

Defines the list of units to ignore during scheduling.
Defines utilities to make it easier to generate courses and lessons.
Defines the operations that can be performed on a collection of courses stored by the student.
Defines the basic data structures used by Trane to describe courses, lessons, and exercises, store the results of a student’s attempt at mastering an exercise, the options avaialble to control the behavior of the scheduler, among other things.
Contains utilities to use filters saved by the user.
Defines the dependency graph of units of knowledge, their dependency relationships, and basic read and write operations.
Runs the mantra miner that recites mantras while Trane is running.
Defines how the results of exercise trials are stored for used during scheduling.
Defines a list of units which the student wants to review.
Defines and implements the data structures used to schedule batches of exercises to show to the user. This module is the core mechanism of how Trane guides students to mastery of the material.
Contains the logic to score an exercise based on the results and timestamps of previous trials.
Contains utilities common to Trane tests.

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 corresponding exercises, Trane presents the student with a list of exercises based on the demonstrated mastery of previous exercises. It makes sure that new material and skills are not introduced until the prerequisite material and skills have been sufficiently mastered.

Constants

The path to the SQLite database containing the list of units to ignore during scheduling.
The path to the directory containing unit filters saved by the user.
The path to the SQLite database containing the results of previous exercise trials.
The path to the SQLite database containing the list of units the student wishes to review.
The path to the folder inside each course library containing the user data.
The path to the file containing user preferences.