The learner-modeling pieces pulled out of the VEX coding dashboard, each as its own standalone package. They take raw student activity and turn it into a model of what the student is doing while they code, which is how you flag who needs help.
While students code in VEX, the platform spits out a stream of events (blocks changed, project run, playground reset, and so on). Each of these packages reads that stream and answers a different question:
- strategy-hmm: how is the student solving it? (iterating, exploring, or stuck)
- episode-engine: what does their session look like over time? (editing, running, pausing)
- smart-delta-engine: what does their code actually do? (a readable description)
Put together they turn an event log into a live picture of each student. They're independent: none of them need each other, the dashboard, or any other folder.
| package | models | in -> out | deps |
|---|---|---|---|
| strategy-hmm | coding strategy: iterator / explorer / stuck | runs -> per-run states | numpy, hmmlearn, joblib, scikit-learn, apted |
| episode-engine | session structure | events -> episodes + pauses | none (stdlib) |
| smart-delta-engine | code to text | project -> description | none (stdlib) |
Each package's own README goes deeper on the concepts (what the states, episodes, and active vs orphaned actually mean).
cd strategy-hmm # or episode-engine / smart-delta-engine
pip install . # the two stdlib ones don't need anything
python example.py # demo on real data (sample_*.json)Or just drop the inner folder (strategy_hmm/, episode_engine/,
smart_delta_engine/) onto your PYTHONPATH and import it.
compute_strategy_states(events) # strategy-hmm
segment_session(events) # episode-engine
generate_llm_prompt_from_project(project) # smart-delta-engineAll three are just functions you call on a list of events (or a project).
- strategy-hmm: the
model.pkland thresholds are copied straight from the training notebook ((Maharsh)_Vex_code.ipynb). retraining happens there, not here. - episode-engine: vendored from the
vex-pipelineresearch package and made standalone. - demo data: one real VEX session, sitting in each package's
sample_*.json.