Spring 2027 · Prof. Jonathan Bell · Tue/Fri 9:50–11:30 AM · Room TBA

Wiring an LLM into a product takes an afternoon. Building software that people keep using, and that does real good for them and for everyone else it touches, is as hard as it ever was. An LLM adds new ways to fail:
This course is about those questions. You'll build an LLM-integrated system, first on your own and then as a team, for real users with real rules. Over the semester you'll find out what those users need, measure the system, attack it, keep it within a budget, change it when they change their minds, and decide what it should and shouldn't do.
Every business runs on rules that only the people doing the work fully understand: how a dental office books and confirms appointments, how a contractor prices a change order, how an instructor turns a semester of work into a grade. Your team builds the software that lets those people state their own rules, connects the rules to the systems they already use, and uses an LLM where it helps without letting it decide what it shouldn't.
The LLM drafts the rules from a plain-language description and asks about the cases it leaves open. Deterministic code runs the rules. The person who owns them confirms what they mean by looking at examples and generated views, not at code. Your team answers for how the pieces fit together.
The standard is the same for every team: build as much of the system as you honestly can in deterministic code, with evidence that it's right. Every decision your system makes goes in an assurance manifest, in one of three places: deterministic with evidence, an LLM judgment with limits on what it can affect, or escalated to a person. We grade how complete the manifest is, whether each decision is in the right place, and whether your evidence catches bugs we plant.
Four milestones. The first is individual; the rest are built in teams that form in week 4. The details will change before January, but the four milestones will stay.
Everyone builds the same thing first, individually: a TypeScript command-line tool that turns a course's grading policy, as written in its syllabus, into rules a computer can apply. The LLM drafts the policy and raises the questions the syllabus never answered. The instructor confirms each decision, and the tool shows which students a decision affects before it takes effect. The instructor is your product owner, and real grading policies, including one with the rulings its instructor had to make mid-semester, are the test cases. The tool uses the same architecture as Pawtograder's command-line tool, and it runs model calls through your own Claude Code account.
Now your team is the product owner. Choose one of two tracks:
Either way, you start with user research. Your requirements have to trace back to real users. Those users confirm the examples your system is tested against and help decide what the system should generate and what must stay in human hands.
Make some things impossible no matter what the model says. Defend against prompt injection through your product's untrusted inputs, such as survey answers, discussion posts, or customer notes. Then swap with another team and try to break theirs. Write up your system the way a university AI ethics review would require.
From Milestone 2 on, you design for change. With your users, you map the changes your system will face and choose concepts so that most of them are configuration the owner can do alone, not code you have to write. For example, an instructor should be able to invent an entirely new grading scheme in plain language, built from Pawtograder's gradebook columns, column groups, topics, assignments, review rounds, rubrics, and expression language, and confirm it without an engineer.
In Milestone 4 your stakeholders bring challenge cases you've never seen. Before each one, you predict whether the owner can handle it alone, needs to make a new decision, or needs an engineer. Then it runs live. Either your design absorbs the change, your prediction that it needs an engineer turns out right, or you have a fire to put out: a workaround within 24 hours, a fix with new evidence, and a postmortem. Staff also run a model upgrade you have to qualify with your own evals, and you stay within a cost budget.
There are no points. Instead there are four bands, each a published list of things you have demonstrably done: Pass (trusted to build under review), Credit (trusted to exercise judgment), Distinction (trusted to own what ships), and High Distinction (trusted to extend the system). Each band requires the one below it. You declare the band you're aiming for, and at the end you make the case, with evidence, that you met it. Bands are individual, even for team work.
The evidence comes from: