This project is ungraded and entirely optional. It carries no weight, no deadline, and no submission requirement — it is here for students who want to build or measure something real beyond the four assignments.
Work alone or in teams of two or three — whatever suits the question. If you want feedback, a compute allocation, or a reader for a draft, email the instructor; that is the only process there is.
AI tools are expected throughout: scoping, coding, debugging, analysis, and writing. This is a course about the systems underneath these tools, and building a system without using them would be an odd way to spend the term.
Treat AI as what it is: a capable collaborator that is confidently wrong at unpredictable moments. Your job is to be the person who can tell the difference. That skill is most of what separates a trustworthy result from a plausible one.
If you hit a failure that generalises — something current models get consistently wrong about serving, kernels, or measurement — write it up separately. It may also qualify for the bonus.
A good project for this course does one of the following:
A negative result, honestly measured and clearly explained, is a perfectly good project. One that reports a 3× speedup that turns out to be a measurement artifact is not. Whether your numbers are trustworthy matters far more than whether they are impressive — and with nothing riding on the outcome, there is no reason to let a flattering artifact stand.
These are starting points, not an assignment list. The best projects usually come from something you are already curious about. For six of these worked out in full — question, baselines, metrics, and the pitfall that would invalidate each one — see the worked examples below.
Six worked examples, at roughly the scope a two-to-three person team can finish in a term.
These are not a menu. They exist to show what a well-shaped project looks like: a question narrow enough to answer, a baseline worth beating, and a metric that would embarrass you if it were wrong. The best projects in a course like this usually come from something you were already curious about — these are calibration, not assignment options. Picking one as written is allowed, and you will be held to the same standard as anyone who invented their own.
Notice what every example has in common: each one names the number that would change your mind. That is the part students most often leave out, and the first thing to check against what a good one looks like.
Part I & agent serving — instrumentation over invention
Prefix cache — a characterization project
GPU programming and kernels — build and justify
Training and data pipelines — accounting for every lost second
Speculative decoding — find the crossover, not the win
Pruning and quantization — measure the axis papers skip
A question, not a topic. "KV-cache optimization" is a topic. "At what sharing rate does prefix caching stop paying for its memory?" is a question, and you can tell when you have answered it.
A baseline someone would defend. The weakest part of most project reports is a baseline chosen because it was easy to beat. Pick the one a skeptical reader would demand.
A metric tied to a decision. Every example above measures something that would change what an engineer does on Monday.
A stated failure mode. Each has a pitfall that would invalidate the result. Knowing yours in advance is most of the work — see the paper reading strategy for the same habit applied to other people's papers.
Nothing here is graded, so read this as a self-check rather than a rubric — the questions a reviewer would ask, which are the same ones you should ask yourself before you believe your own numbers.
| Dimension | Worth doing | Warning sign |
|---|---|---|
| Problem & Motivation | A sharp, well-scoped question that matters, situated against what has already been done | A vague question, or one already answered in a paper you have not read |
| Technical Execution | Real implementation or measurement effort; sound engineering; someone else could reproduce it | Code that only works on your machine, on one input, once |
| Evaluation Quality | Right baselines, right metrics, error bars, ablations; artifacts anticipated and ruled out | Single-run numbers presented as fact, or a baseline chosen because it loses |
| Reporting | Clear writing, figures that support the claims, explicit about limitations | Figures that look impressive but do not show what the text says they show |
There are no milestones and no due dates. That freedom is also the main hazard: an open-ended build with no deadline is the easiest thing in the world to start in the last two weeks of term and never finish. Two suggestions, offered rather than imposed.
Scope to the hardware you can actually get. Many of the best questions on this page fit on a single GPU, and queue time on a shared cluster is real time.
No write-up is required or collected. If you want one anyway — as a portfolio piece, a workshop submission, or a draft for the instructor to read — the conventions below are the ones a systems audience expects.
These are the compute options for the whole course — the assignments, the cache competition, and this optional project alike. Access instructions will be posted here once allocations are confirmed. If you need hardware beyond what is listed, talk to the instructor early — sometimes it can be arranged, but not in the last two weeks.
The FAS Research Computing Cannon cluster has GPU partitions available to Harvard courses. Plan for queue time: a job that takes an hour to run may wait considerably longer than that to start, which matters a great deal in the last week of the term.
CloudLab provides bare-metal machines for research and teaching, free of charge, with full control over the software stack. This is the right choice when your project needs to touch the kernel, the network, or the storage layer, or when you need reproducible isolation that a shared cluster cannot give you.
Useful starting points for project work: