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”).
Below is an overview of some of the most important modules in this crate and their purpose. Refer to the documentation of each module for more details.
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.exercise_scorer
: Calculates a score for an exercise based on the results and timestamps of previous trials.
Modules§
- blacklist
- Defines the list of units to ignore during scheduling.
- course_
builder - Defines utilities to make it easier to generate courses and lessons.
- course_
library - Defines the operations that can be performed on a collection of courses stored by the student.
- data
- 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.
- db_
utils - Contains utilities for working with
SQLite
databases. - error
- Contains the errors returned by Trane.
- exercise_
scorer - Contains the logic to score an exercise based on the results and timestamps of previous trials.
- filter_
manager - Contains utilities to use filters saved by the user.
- graph
- Defines the dependency graph of units of knowledge, their dependency relationships, and basic read and write operations.
- mantra_
miner - Runs the mantra miner that recites mantras while Trane is running.
- practice_
rewards - Defines how the rewards for lessons and courses are stored in the database.
- practice_
stats - Defines how the results of exercise trials are stored for used during scheduling.
- preferences_
manager - A module containing methods to read and write user preferences.
- repository_
manager - A module containing functions to download and manage courses from git repositories, which is meant to simplify the process of adding new courses to Trane.
- review_
list - Defines a list of units which the student wants to review.
- reward_
scorer - Rewards are propagated in the graph when a score is submitted to reflect performance of an exercise on related ones. This module contains the logic that combines into a single value that is then added to the score of an exercise that is computed from previous trials alone. The final value can be positive or negative.
- scheduler
- 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.
- study_
session_ manager - Contains utilities to use study sessions saved by the user.
- testutil
- Contains utilities common to Trane tests.
- transcription_
downloader - Manages the download of asset files for transcription courses.
Structs§
- Trane
- 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§
- BLACKLIST_
PATH - The path to the
SQLite
database containing the list of units to ignore during scheduling. - FILTERS_
DIR - The path to the directory containing unit filters saved by the user.
- PRACTICE_
REWARDS_ PATH - The path to the
SQLite
database containing the rewards for lessons and courses. - PRACTICE_
STATS_ PATH - The path to the
SQLite
database containing the results of previous exercise trials. - REVIEW_
LIST_ PATH - The path to the
SQLite
database containing the list of units the student wishes to review. - STUDY_
SESSIONS_ DIR - The path to the directory containing study sessions saved by the user.
- TRANE_
CONFIG_ DIR_ PATH - The path to the folder inside each course library containing the user data.
- USER_
PREFERENCES_ PATH - The path to the file containing user preferences.