Group 09 · Capstone · Fall 2025

CodeCaster — the first hundred lines of code.

A coding assistant aimed at social-science students learning to program for data analysis. CodeCaster scaffolds the first hundred lines they'll ever write — explaining each one, refusing to ship code the student can't read — and grows out of the way as the student grows in.

Domain Education · code
Stack PyodideJupyter-shaped UIConcept tagsAnthropic / OpenAIPostgres
Demoed · Fall 2025
IWhat we built

What problem this solves.

Students who pick up programming for the first time inside a research methods course rarely get the tooling that fits them. General-purpose AI coding assistants will happily emit a hundred-line script the student cannot read, and the most popular learning platforms drill syntax in isolation from the data the student actually has.

Group 09 built for that student specifically. CodeCaster is a coding assistant that refuses to ship code the student cannot read — every line is explainable on hover, every snippet anchored to a concept tag from the course, every output written to be reproduced by hand at least once before automation takes over.

IIHow it works

The system, end to end.

Each request goes through a constrained generator that writes code in a deliberately small idiom — a curated subset of Pandas, Matplotlib, and stdlib chosen for what the course actually teaches. Each emitted line is annotated with a concept tag ("DataFrame indexing," "groupby aggregation") and a one-sentence explanation; the UI surfaces those annotations on hover so the student can read the code as they receive it.

The refusal posture is the second design choice. When the student's request implies code patterns they have not yet seen, the system refuses to ship the snippet silently — it explains the concept first and offers to walk through it, then emits the code only after the student opts in. The product trades short-term convenience for the kind of literacy the course is actually trying to build.

Pipeline · CodeCaster
Ingest
Lesson concept
teacher selects
Model
Constrained gen
curated idiom whitelist
Model
Concept tagging
per-line concept tag
Transform
Sandboxed runtime
Pyodide in-browser
Surface
Student view
hover-to-reveal explain
Surface
Teacher view
concept coverage map
Ingest Transform Model Surface
IIIThe stack

What it's built on.

Layer · tool / library
Constrained generator Curated idiom whitelist for the course's data-methods track
Concept tagging Each generated line annotated with a concept tag
Runtime Pyodide in-browser execution, no server round-trip
Teacher view Per-student concept-tag coverage report
Constrained generator
  • Curated idiom whitelist for the course's data-methods track
  • Per-snippet AST check that all calls are in-idiom
  • Out-of-idiom requests trigger the explain-first refusal path
Concept tagging
  • Each generated line annotated with a concept tag
  • Hover-to-reveal one-sentence explanation in the UI
  • Tags reconcile to the course's syllabus week-by-week
Runtime
  • Pyodide in-browser execution, no server round-trip
  • Per-cell isolation with reset-to-checkpoint
  • CSV / Parquet uploads stay client-side for privacy
Teacher view
  • Per-student concept-tag coverage report
  • Refusal-event log for advising the next office hour
  • Curriculum sync — extend the idiom, the tool follows
IVDeliverables

What the team shipped.

Source repository GitHub · code, tests, README
Demo video Capstone day · screen recording, 4–6 min
Write-up PDF Final brief · methods, evaluation, reflection
Slide deck Capstone presentation · 10 slides
VWhat sets it apart

What sets this capstone apart.

Takeaway 01 · A small idiom

The idiom is the curriculum.

CodeCaster does not write "good Python." It writes the subset of Python the course teaches. The model is constrained to the idiom on purpose; the student's vocabulary grows when the course expands the idiom, not when the model decides to.

Takeaway 02 · Every line, explainable

Hover for the why.

Every line in every snippet is tagged with the concept it draws on and a one-sentence explanation. Reading the code is the lesson; writing the code is the homework.

Takeaway 03 · Opt-in growth

New concepts arrive by consent.

When a request needs a concept the student hasn't seen, the system pauses, explains, and asks. The student decides when their vocabulary grows. The model does not surprise them with a pattern they can't defend in office hours.

VIIInstructor note

How this project landed.

Education-tools projects fail when they confuse "helpful" with "correct." The proposal began with the more flattering framing — a powerful assistant for novice coders — and the first review pushed the team to the harder one: an assistant whose value is what it refuses to do.

The reframe held. CodeCaster's refusal posture is its whole product, and the team defended it in the adversarial week against the obvious complaint ("why won't it just answer?") with the right answer ("because the answer would not teach the student"). The capstone is a small, principled, mature tool.