The assignments are not five unrelated exercises. They are one system that you progressively take apart and take control of. You will first use an existing coding agent to build an agent application, then replace the agent runtime with your own loop, build the evaluation set the rest of the sequence is graded on, replace the API with a model you serve yourself, and finally optimize the entire agent stack.
Assignments 1, 2, and 4 are worth 10% each. Assignments 3 and 5, the two optimization assignments, are worth 20% each. Together, the assignments account for 70% of the course grade. There is no exam. The remaining major build is the final project (16%), where you choose the problem yourself.
Assignments 1, 2 and 4 are submitted as a PDF report through Canvas. Assignments 3 and 5 are submitted as a published blog post, which documents your journey of optimizing the agent and full stack. All five are individual. Estimated effort runs 6–8 hours for Assignment 1, 10–12 for Assignment 2, 10–15 for Assignment 3, 10–14 for Assignment 4, and 12–18 for Assignment 5.
Start as an agent user. Use a coding agent to build a small but nontrivial application — enough work that it must inspect files, run tools, and recover from errors. Then take the agent apart: instrument the trajectory, classify what actually filled the context, and analyse three substantive failures. We are not grading how impressive the application looks; we are grading what you learned about how the agent executed.
No agent framework. Build the loop yourself around a model API from provided starter code: tool calling with machine-readable schemas, context management, retries, termination, and graceful failure under malformed output and broken tools. Evaluate on a provided benchmark plus test cases you write, trace one trajectory to find its critical path, and run the required step-limit and context experiments. Hidden tests probe the runtime, not the model.
The model is still a black-box API, so optimize everything around it. Reduce unnecessary tokens and calls, choose cheaper models where they are sufficient, overlap tool execution, compress or restructure context, and redesign the control flow. Hold task success fixed while driving cost and latency down. Then identify the bottlenecks you cannot solve because the serving stack is still outside your control.
Remove the frontier API. Serve a 7–8B open-weight model using an inference engine you operate yourself. Measure the quality loss, diagnose why it happens, and recover as much performance as you can through the harness. You may not solve the problem by switching to a larger model or falling back to the commercial API.
Now everything is in scope: the agent loop, the model, and the serving system. Profile the full execution path until you can explain where the time, tokens, and compute go. Write down a performance hypothesis before changing the system. Then optimize across layers and re-run the same workload to determine which changes actually mattered.