Crate trane

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”).

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.