Mastery Learning
Graspful enforces mastery at every step. Students don't advance to new concepts until their prerequisites are solid. The system uses Bayesian Knowledge Tracing to estimate what each student knows and decides when mastery is achieved.
Bloom's Two-Sigma Problem
In 1984, Benjamin Bloom published a finding that changed education research: students who received one-on-one tutoring with mastery learning performed two standard deviations better than students in conventional classrooms. That's the difference between an average student and the top 2%.
The "two-sigma problem" is that one-on-one tutoring doesn't scale. You can't hire a personal tutor for every student. Graspful's approach is to approximate the two key ingredients computationally: mastery learning (don't move on until you've got it) and adaptive pacing (adjust to each student's speed and knowledge gaps).
What is mastery learning?
Mastery learning is simple: don't advance until the current material is solid. In a traditional classroom, everyone moves to Chapter 5 on the same day regardless of whether they understood Chapter 4. Mastery learning says: if you didn't get Chapter 4, you stay on Chapter 4.
This matters because knowledge is cumulative. If you don't understand voltage, you can't understand Ohm's Law. If you don't understand Ohm's Law, circuit analysis is incomprehensible. Gaps compound. Mastery learning prevents the gaps from forming in the first place.
In Graspful, mastery enforcement is structural. The knowledge graph defines prerequisite edges between concepts. The learning engine checks those edges before assigning any task. A concept only appears on the student's frontier when every prerequisite is mastered.
Bayesian Knowledge Tracing (BKT)
BKT is the probabilistic model that powers mastery estimation. For each concept, the system maintains a probability P(Learned) — the probability that the student has actually learned the concept. After every response, Bayes' rule updates this estimate.
BKT parameters
The model uses four parameters per concept:
- -
P(L0)— Prior probability the student already knows the concept before any interaction. Default: 0.1 - -
P(T)— Probability of learning the concept on each opportunity (each practice attempt). Default: 0.2 - -
P(S)— Slip probability: the student knows it but answers incorrectly (careless error). Default: 0.1 - -
P(G)— Guess probability: the student doesn't know it but answers correctly (lucky guess). Default: 0.25
The update rule
After each student response, BKT runs a two-step update:
- - Step 1 — Evidence update: Use Bayes' rule to compute the posterior probability of mastery given the observed response. A correct answer increases P(Learned). An incorrect answer decreases it — but not to zero, because slips happen.
- - Step 2 — Learning update: Account for the possibility that the student learned from the attempt itself, using P(T). Even after an incorrect answer, there's some probability the student learned from the feedback.
The result is a continuously updated estimate of whether the student has learned each concept. This is more nuanced than a simple "X out of Y correct" — it accounts for guessing, slipping, and learning-in-progress.
Mastery states
Each concept in a student's profile has one of four states:
- - unstarted: The student has never attempted this concept. It may or may not be on the frontier.
- - in_progress: The student has attempted problems but hasn't demonstrated mastery yet. P(Learned) is below the mastery threshold.
- - mastered: The student has demonstrated mastery. P(Learned) has crossed the threshold and the consecutive-correct requirement is met.
- - needs_review: The concept was mastered, but memory decay (from the spaced repetition model) has dropped the estimated retention below the review threshold. The concept re-enters the frontier for review.
# Mastery state machine
#
# unstarted ──[first attempt]──> in_progress
#
# in_progress ──[P(Learned) >= 0.85 AND
# 2+ consecutive correct]──> mastered
#
# mastered ──[memory decay drops
# retention below 0.6]──> needs_review
#
# needs_review ──[correct review
# response]──> mastered
# Example concept state in the student model:
student_concept_state:
concept_id: ohms-law
mastery_state: in_progress
p_learned: 0.72
consecutive_correct: 1
total_attempts: 4
last_attempt_at: "2026-03-22T14:30:00Z"Consecutive correct answers
A high P(Learned) alone isn't enough for mastery. The system also requires a minimum number of consecutive correct answers — typically 2. This guards against a single lucky correct answer triggering a mastery transition when P(Learned) happens to be near the threshold.
Both conditions must be true simultaneously: P(Learned) ≥ 0.85 AND consecutive correct ≥ 2. An incorrect answer resets the consecutive counter to zero, even if P(Learned) remains above the threshold (since the Bayes update will likely lower it anyway).
How mastery enforcement prevents knowledge gaps
Traditional courses produce a predictable pattern: students with shaky foundations accumulate gaps, those gaps compound, and eventually the material becomes incomprehensible. The student blames themselves. The real problem was structural.
Graspful's mastery enforcement breaks this pattern at three levels:
- - Prerequisite gating: The learning engine literally will not serve problems for concept B until concept A is mastered. There is no "skip ahead" button.
- - Continuous estimation: BKT updates after every response. If a student starts getting things wrong, the system detects the slip immediately — not at the end of a chapter.
- - Decay-triggered review: The spaced repetition system monitors memory decay. If a prerequisite concept's estimated retention drops too low, it re-enters the frontier for review before the student encounters dependent concepts.
BKT parameters in course YAML
Course authors don't need to set BKT parameters — sensible defaults work for most courses. But you can override them per concept if you have domain knowledge about difficulty or prior knowledge.
concepts:
- id: voltage
name: Voltage
difficulty: 2
estimatedMinutes: 15
prerequisites: []
# Default BKT parameters apply:
# pL0: 0.1, pT: 0.2, pS: 0.1, pG: 0.25
- id: advanced-circuit-analysis
name: Advanced Circuit Analysis
difficulty: 8
estimatedMinutes: 45
prerequisites: [circuit-analysis, kirchhoffs-laws]
bkt:
pL0: 0.05 # very unlikely to already know this
pT: 0.15 # harder to learn per attempt
pS: 0.05 # fewer careless errors (it's hard to get right by accident)
pG: 0.15 # harder to guess correctlyThe adaptive diagnostic can also initialize BKT parameters based on observed student behavior. See Adaptive Diagnostics for details.