ESTELA

UCF Physics · Physics-education research with Dr. Zhongzhou Chen

If every student in a large intro course takes the same exam, the answers travel. The usual fix is to write several versions, but then you have to show the versions are equally hard, or a student's score depends on which one they drew. Dr. Chen's group works on isomorphic problems: problems with the same physics, the same reasoning steps and the same difficulty, and only a different surface story. A cart on a track, a crate on a floor and a sled on snow can be one problem in three costumes. The group writes banks of these for introductory mechanics with help from generative AI (Liu et al., 2026).

The exam builder

A bank is only useful if an instructor can turn it into an exam, so I built the tool that does that. It's a desktop app (Rust and Tauri 2) that lets an instructor browse the banks by course and topic, preview problems with rendered equations, and add banks to a cart. From one cart it generates up to ten versions of the exam. Each version draws a different isomorphic problem from every bank in the cart, and multiple-choice options are reshuffled per version. Answer keys come out alongside each version.

Exports go to LaTeX on the exam document class, to Word with native equations through a bundled copy of Pandoc, to an HTML preview, or to a single ZIP with every version, key and figure. Instructors can download banks from inside the app, and CI builds installers for Windows, macOS and Linux, so nobody has to install LaTeX or Python to use it. It's now in use by instructors outside UCF.

Download · source

Grading and generation at scale

I built a pipeline on the Azure OpenAI batch API that drafts candidate problems and checks them against instructor criteria, and presented batch-processing for automated grading at UCF's downtown campus in June 2026.

Checking what the model writes

The group's next step is a multi-agent pipeline that writes isomorphic variants on its own. I ran its first pilot runs and found that some generated problems shipped with answer keys that contradicted their own questions, and that the language-model reviewer meant to catch exactly that was letting them through. Where a problem's answer can be worked out mechanically, a second model is the wrong tool for checking it, so I replaced the reviewer's verdict with a deterministic check. The code derives the correct answer from the problem itself and rejects any draft that disagrees; the model is only asked to repair what the check has already flagged, and anything it can't fix is withheld from the bank.

Alongside that I wrote the literature review behind the paper's related-work section, and mined every equation out of the mechanics banks into a single library of the relations the course actually uses, so future generators can be handed them directly. A paper is in preparation.

Narvi

A side project for the same audience. Narvi lets an educator who doesn't code build a PhET-style interactive demo by describing it in plain language. The agent asks one question at a time, proposes a plan, generates a live demo in a sandboxed preview, and revises it until it's right, then hands back a single HTML file to publish or email. It's built on LangGraph with a human in the loop at every stage. Source

See also photonic lanterns and CELERIS.