Out Mon Oct 5 · due Sun Oct 25, 11:59pm · individual · all five assignments
Your Assignment 2 agent works, and you know what it costs. Now make it cheaper and faster without making it worse. You are still renting someone else's serving stack, which is the whole point of doing this now: every lever you have is a harness lever, so whatever you win here is unambiguously yours rather than the provider's.
That matters for what comes next. Assignment 4 takes the frontier model away and Assignment 5 hands you the serving system underneath it. If you have already wrung out the harness, you will know which of those later wins came from owning the stack and which you could have had all along.
Assignments 2, 3, 4 and 5 repeatedly measure the same system, so the measurement contract must not change. You will track task success rate, latency, cost per task, tokens per task, and steps per task. The exact definitions are established in Assignment 2. Once fixed, they stay fixed.
This assignment optimizes cost and latency while holding success rate. Assignment 4 measures the same five metrics after replacing the frontier model and also adds first-try schema validity. Assignment 5 measures the system again with the serving stack exposed and adds a serving-side profile. If the workload or success criterion drifts between assignments, the comparison is no longer meaningful.
What you may not do: change the task set, loosen the success criterion, or drop the tasks that were failing anyway. Those three are how an optimization result gets faked, usually without meaning to. Switching to a cheaper model is fair game and interesting; switching to a better one is not an optimization.
Then say what you could not see. You have just optimized a system whose expensive half is invisible to you: you cannot see prefill separate from decode, you cannot see how your request was batched with strangers', and you cannot see whether your cached prefix actually hit. Write down the questions you could not answer from outside the API. Part II is the answer to that list, and Assignment 5 is where you get the instruments.
Assignment 3's write-up is a published blog post, not a PDF — you open a pull request against the course blog repository and it goes live under your name once it is reviewed and merged. The mechanics and the deadline rule are below; read them before you start writing.
Write it for somebody who did not take this course. That constraint is doing real work here: the reason this assignment gets a post rather than a report is that its result is an argument — you picked the levers, you ranked them in writing before pulling them, and the interesting part is where the ranking was wrong. A reader who has to be told what a KV cache is will not follow a bullet list of deltas, so you have to explain what you were trying to do and why the numbers mean what you say they mean. That is the same discipline as stating a denominator, applied to prose.
The post should carry the profile, the ranked prediction as you wrote it down beforehand, what each change actually bought on held-out tasks, and the levers that did nothing — that last one is where most of the value is, and the section a report format quietly lets you omit. You may reuse your Assignment 2 report for the setup: the reader needs to know what the agent is before they can care that it got cheaper. Reusing your own figures, measurements, or explanatory text is expected; state what you reused, because the grade still comes from the new work and the new analysis.
How the 18% breaks down: the profile, detailed enough to name where the cost is (4%); the ranked prediction, judged on the reasoning rather than on whether it turned out right (3%); measured improvement with success rate held on held-out tasks, reported per change (8%); and the blog post, including the levers that did nothing and the questions you could not answer from outside (3%).
The post is actually published. The course will maintain a repository, and you will contribute your post through the same workflow used by an open-source project: fork the repository, add your post, open a pull request, respond to review, and merge.
The repository URL will be posted here, on the course home page, and on Canvas before Assignment 3 opens.
~/.claude/projects/. Session history expires after 30 days by default, so archive
before the deadline rather than after — and because those files record every file the agent
read and every command it ran, scan them for credentials
first.