Fall 2026 · Rutgers University · Department of Computer Science CS 417 / CS 545 — Distributed Systems
Logistics
Registration
| Course | Section | Index | Meetings |
|---|---|---|---|
| 01:198:417 | 01 | 30158 | Mon & Wed 2:00–3:20 PM, SEC-210 Recitation: Mon 5:40–7:00 PM, SEC-202 |
| 16:198:545 | 01 | 30159 | Mon & Wed 2:00–3:20 PM, SEC-210 |
About this course
Every large service you use runs across many machines that fail independently, lose messages, and disagree with each other. This course is about how to build systems that keep working anyway.
The organizing question is: what can you guarantee, and what must you give up to guarantee it? Every system we study answers that differently, and the answers form a coherent design space rather than a list of tricks.
This is a hands-on course. You will build a distributed MapReduce, a snapshot protocol, and a working implementation of Raft, the consensus algorithm running underneath etcd, Kubernetes, and much of modern cloud infrastructure.
ML is a running theme, since training across hundreds of machines and serving under a real latency budget are distributed systems problems, and unusually clear illustrations of the classical material. The fundamentals have not changed: the CAP theorem still binds, and consistency, availability, and partition tolerance still trade against each other. The point is the mechanism, not the application — this is a distributed systems course, not a machine learning course.
Prerequisite
01:198:416, Operating Systems Design. If you have not taken 416, email me for a waiver: 01:198:214 or 01:198:352 is plenty of background, and I will consider 01:198:211 with relevant experience. If you are comfortable writing and debugging programs that do several things at once, you can handle this course.
Projects are in Go. No prior Go experience needed; the first recitation covers it, and Go is quick to pick up. If you need an exception to use C or C++, come talk to me.
Materials
No required textbook. Readings are research papers, posted on the course page.
Useful references
- , Designing Data-Intensive Applications — best companion for consistency and transactions.
- , Distributed Systems — broader, useful for topics we move quickly.
- , The Go Programming Language.
- , Students' Guide to Raft — read before starting P3. It will save you hours.
Some lecture material is adapted from Princeton COS 418 by Michael Freedman and Wyatt Lloyd, used under CC BY-NC-SA 3.0. Programming assignments are adapted from MIT 6.5840 by Robert Morris, Frans Kaashoek, and Nickolai Zeldovich, used under CC BY 3.0 US.
Tentative grading split
Subject to revision until the beginning of the semester.
| Component | Weight |
|---|---|
| Programming projects | 50% |
| Midterm exam | 25% |
| Final exam | 25% |
Project details and deadlines: TBD.
There is no participation grade and no semester research project. Readings are not separately graded; they are examined. Both exams include questions drawn from the papers.
Graduate students (545) have additional required readings, an extended exam section, and additional deliverables on some projects.
Projects
Five cumulative projects in Go, coded individually, graded on correctness against an automated test suite. Each builds on the last. Some project points may come from short homeworks that prepare you for the projects.
Submission process, late policy, and project descriptions: TBD.
Exams
Midterm and final. Dates and format: TBD.
Collaboration and generative AI
Discuss projects at the level of ideas. Do not share code or pseudocode, do not look at another student's solution from any year, and do not write or read pseudocode together. Stack Overflow and the Go documentation are fine.
Use AI tools to explain concepts, look up syntax, and interpret error messages — not to generate solution code, design your implementation, or debug it. No whole-codebase assistants such as Copilot or Cursor on project repositories.
Every submission includes a short AI disclosure: what you used, what you asked, what you did with the answers. Say so if you used none. Honest, specific disclosures earn a small bonus.
Policies
Department standard statements to be inserted.
All students are expected to follow the Rutgers Academic Integrity Policy. Students needing accommodations should contact the Office of Disability Services early in the semester.
Tentative schedule
Subject to change. Papers listed are representative, not final.
| Weeks | Topic | Representative reading |
|---|---|---|
| 1–2 | Fundamentals: partial failure, RPC, failure semantics | — |
| 3 | Data-parallel computation: MapReduce, the shuffle, stragglers | MapReduce |
| 4 | Time, clocks, and causality | Time, Clocks, and the Ordering of Events |
| 5 | Distributed snapshots and checkpointing | Distributed Snapshots |
| 6 | Storage at scale: distributed file systems, versioning · guest speaker | GFS |
| 7–8 | Eventual consistency, peer-to-peer systems, consistent hashing | Bayou, Chord |
| 9 | Midterm; replicated state machines and primary-backup | — |
| 10–11 | Consensus: FLP, Paxos, Raft | Paxos Made Simple, Raft |
| 12 | Strong consistency and coordination services · guest speaker | Chubby |
| 13–14 | Causal consistency; distributed transactions; Spanner | COPS, Spanner |
| 15 | Byzantine fault tolerance; scaling ML systems; tail latency · guest speaker | The Tail at Scale |
Graduate students (545) have additional readings drawn from the same areas.