Each student's true skill answers a question of difficulty d correctly with logistic probability, then Guess/Slip noise is applied. An adaptive engine tracks an estimate P(L) of mastery with Bayesian Knowledge Tracing and targets the next question just inside the student's own "productive struggle" zone; the fixed-pace group gets one shared textbook difficulty for everyone, regardless of individual ability.
P(correct | L) = P(L)(1−S) + (1−P(L))G
P(L | correct) = P(L)(1−S) / [P(L)(1−S) + (1−P(L))G]
P(L | incorrect)= P(L)S / [P(L)S + (1−P(L))(1−S)]
P(Lₙ) = P(L | evidence) + (1 − P(L | evidence))·T·cf
cf(desirable difficulty) peaks when true success chance ≈ 75%
- Students per group — cohort size simulated in parallel for each strategy.
- Learn rate P(T) — probability of transitioning from "not known" to "known" after any attempt.
- Guess P(G) — chance of answering correctly without knowing the skill.
- Slip P(S) — chance of answering incorrectly despite knowing the skill.
Real-world use: platforms like Khan Academy, DreamBox and ALEKS run this loop per skill per learner to pick the next best exercise instead of a fixed syllabus.