Logistics

InstructorSudarsun Kannan
Emailsudarsun.kannan [at] rutgers.edu
OfficeCoRE 313
LecturesMon & Wed, 2:00–3:20 PM
SEC-210
Recitation (417 only)Mon, 5:40–7:00 PM
SEC-202
Office hoursTBD
Course pageTBD
CanvasTBD

Registration

CourseSectionIndexMeetings
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

  • Kleppmann, Designing Data-Intensive Applicationsbest companion for consistency and transactions.
  • Tanenbaum and Van Steen, Distributed Systemsbroader, useful for topics we move quickly.
  • Donovan and Kernighan, The Go Programming Language.
  • Gjengset, Students' Guide to Raftread 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.

ComponentWeight
Programming projects50%
Midterm exam25%
Final exam25%

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.

WeeksTopicRepresentative reading
1–2Fundamentals: partial failure, RPC, failure semantics
3Data-parallel computation: MapReduce, the shuffle, stragglersMapReduce
4Time, clocks, and causalityTime, Clocks, and the Ordering of Events
5Distributed snapshots and checkpointingDistributed Snapshots
6Storage at scale: distributed file systems, versioning · guest speakerGFS
7–8Eventual consistency, peer-to-peer systems, consistent hashingBayou, Chord
9Midterm; replicated state machines and primary-backup
10–11Consensus: FLP, Paxos, RaftPaxos Made Simple, Raft
12Strong consistency and coordination services · guest speakerChubby
13–14Causal consistency; distributed transactions; SpannerCOPS, Spanner
15Byzantine fault tolerance; scaling ML systems; tail latency · guest speakerThe Tail at Scale

Graduate students (545) have additional readings drawn from the same areas.