🎓 Adaptive Learning Engine

Bayesian Knowledge Tracing: P(S|E) = [P(E|S)·P(S)] / P(E) updates a skill's mastery estimate after every attempt, steering a curriculum graph toward the learner's weakest link in real time.

EducationInteractive
Glowing orb = learner · node colour = mastery (red → green) · click a node to target it · P pause · R reset

How it Works

Each sphere on the spiral is one skill in the curriculum. The glowing orb is the learner, always travelling to whichever skill currently has the lowest estimated mastery — the system's best guess at the learner's weakest link. Every time the orb reaches a skill it attempts a question: a hidden "true" mastery state governs the real chance of a correct answer (subject to guess/slip noise), and the engine only ever sees that noisy correct/incorrect outcome.

From that single bit of evidence, Bayes' rule updates the estimate, then a learning-transfer term nudges it further upward to account for the practice itself. Skills that go unpracticed slowly decay, so the graph never truly settles — it keeps re-routing the learner exactly like a real spaced, adaptive curriculum.

Bayesian update after evidence E (correct or incorrect): P(S|E) = [P(E|S) · P(S)] / P(E) If correct: P(S|correct) = P(S)(1−slip) / [P(S)(1−slip) + (1−P(S))·guess] If incorrect: P(S|incorrect) = P(S)·slip / [P(S)·slip + (1−P(S))·(1−guess)] Learning transfer: P(S)_next = P(S|E) + (1 − P(S|E)) · P(T) Next-skill policy: serve argmin_i P(S_i)

Frequently Asked Questions

What is the difference between adaptive learning and personalized learning?

Personalized learning is a broad concept covering any tailoring of education to individual needs. Adaptive learning is a specific technology-driven subset that uses an algorithm — often Bayesian Knowledge Tracing — to continuously re-estimate mastery and dynamically choose the next piece of content.

What is Bayesian Knowledge Tracing?

BKT models each skill as a hidden binary state — mastered or not — and updates the probability of mastery after every attempt using Bayes' rule: P(S|E) = [P(E|S)·P(S)] / P(E), where E is the observed correct/incorrect evidence and S is the mastered state.

How much data does an adaptive learning system need?

It needs a running log of attempts per skill — correct/incorrect outcomes and timestamps — plus two calibrated parameters per skill: a guess rate (chance of a correct answer without mastery) and a slip rate (chance of a mistake despite mastery).

How does the system decide which skill to serve next?

A simple, effective policy — used in this simulation — is to always serve the skill with the lowest current mastery estimate, keeping the learner inside their zone of proximal development instead of drilling mastered material or attempting material far beyond reach.

Can adaptive learning replace traditional teachers?

No. Adaptive systems are built to augment teaching — they automate the moment-to-moment decision of what to practice next, freeing teacher time for mentoring, motivation and the complex judgment calls an algorithm cannot make.

About this simulation

Written by MySimulator Team · Reviewed by MySimulator Editorial Review

Last updated: 4 August 2026

This simulator runs a real Bayesian Knowledge Tracing engine over a curriculum of 5-14 skills laid out as a rising spiral. A glowing learner orb is dispatched, attempt after attempt, to whichever skill currently has the lowest estimated mastery P(S) — exactly the "serve the weakest link" policy real adaptive-learning platforms use to keep learners inside their zone of proximal development. Watch the spiral shift from red to green as mastery estimates climb, and notice how unpracticed skills slowly fade back toward red, forcing the learner to return.

🔬 What it shows

A live Bayesian posterior update running on every attempt, a next-skill selection policy that always targets the weakest estimate, and a slow forgetting decay that keeps the whole curriculum in perpetual motion rather than settling into a static "solved" state.

🎮 How to use

Adjust Learning rate P(T), Guess probability, Slip probability and the number of Skills in curriculum. Click any node to force the learner to target it next. Pause freezes the engine; Reset learner wipes all mastery estimates back to the 0.30 prior.

💡Did you know?

Because the learning-transfer term P(S)_next = P(S|E) + (1−P(S|E))·P(T) is applied after every single attempt — correct or not — a learner can inch toward mastery even on a question they got wrong, which is exactly why real BKT-based tutors like Cognitive Tutor never punish a wrong answer by resetting progress.

Frequently asked questions

Why does raising the Guess probability slow down visible progress?

attempt() computes the correct/incorrect outcome from the hidden true-mastery state plus guess/slip noise, but the Bayesian update itself divides by a denominator that blends guess into both the correct and incorrect branches — a higher guess rate makes "correct" a weaker signal of real mastery, so bayesUpdate() moves the estimate less per observation.

Why do some nodes drift back toward red even though I'm not clicking on them?

The decay() step runs every tick and shrinks every skill's estimate that wasn't the target of the most recent attempt by a small factor, modelling forgetting — it's the same mechanism that makes real spaced-repetition systems schedule reviews, just compressed into seconds instead of days.

Why does the learner orb sometimes revisit a skill it had already turned green?

selectNext() always picks argmin(estMastery), so once decay() has quietly eroded a mastered skill's estimate below some other skill's current value, that skill becomes the new minimum again and gets re-selected — exactly the spaced-review behaviour a real adaptive system needs to prevent forgetting.

Why does a higher Learning rate P(T) make the whole spiral turn green faster?

P(T) is added as a flat multiplicative boost after every Bayesian update — P(S)_next = P(S|E) + (1−P(S|E))·P(T) — so every single attempt, regardless of correctness, pushes the estimate closer to 1, which compounds across the dozens of attempts made per minute.

What actually happens when I click a node directly?

Clicking sets a manual override that selectNext() honours for exactly one attempt, letting you force the learner to practice a specific skill immediately instead of waiting for it to become the global minimum-mastery target.