Semester Dates: January 12 – May 1, 2026
Class Meeting: Tuesdays & Thursdays
Tue Jan 13: Intro to distributed systems and RPC (threading models) (slides)
Prep: Bring your smartphone, (optional) Skim "Implementing Remote Procedure Calls". No homework.
Lab 0a out (Due Fri Jan 16, 23:59 PST)
Thu Jan 15: RPC (failure handling) and linearizability (slides)
Prep: Read section 1-5 of "Implementing linearizability at large scale and low latency" and submit homework.
Tue Jan 20: Debugging distributed systems (slides)
Prep: Read "Dapper, a Large-Scale Distributed Systems Tracing Infrastructure" and submit homework.
Prep2: Follow "Debugging Tools" to install and test tools.
Lab 0b out (Due Tue Jan 27, 23:59 PST) Delayed
Thu Jan 22: Google File System (slides)
Prep: Read "The Google File System" and submit homework.
Tue Jan 27: Cancelled
Lab 0b out (Due Thur Feb 5, 23:59 PST)
Thu Jan 29: RAMCloud (slides)
Prep: Read section 1, 3, 6, and 7 of "The RAMCloud Storage System" (+ 5.1, 5.3 optional) and submit homework.
Tue Feb 3: Replicated state machine via primary-backup replication (slides)
Thu Feb 5: Consensus (slides)
Prep 1: Read Paxos Made Simple
Prep 2: Watch Paxos lecture by John Ousterhout.
Action: Submit homework.
Tue Feb 10: Raft (slides)
Thu Feb 12: Chain replication (slides)
Prep: Read Chain Replication for Supporting High Throughput and Availability and submit homework
Tue Feb 17: How to measure system performance (slides)
Prep: Read Always Measure One Level Deeper and submit homework.
Thu Feb 19: Fast replication (slides)
Prep: Read Exploiting Commutativity For Practical Fast Replication and submit homework.
Tue Feb 24: Byzantine consensus (slides)
Prep: Read Practical Byzantine Fault Tolerance and submit homework
Lab 2 out (two deadlines: Mar 3 and Mar 13)
Thu Feb 26: 2PC (slides)
Prep: Read A New Presumed Commit Optimization for Two Phase Commit and submit homework.
Tue Mar 3: Snapshot isolation (Spanner) (slides)
Prep: Read "Spanner: Google’s Globally-Distributed Database" and submit homework.
Thu Mar 5: Midterm Review (or catch-up day)
Prep: Review previous material.
Tue Mar 10: Midterm Exam (In-class)
Scope: Covers Intro through Consistency (Spanner).
Thu Mar 12: Tail at scale
Prep: Read "The tail at scale" and submit homework.
SPRING RECESS (March 15 – March 22) No classes on Tue Mar 17 or Thu Mar 19
Tue Mar 24: Big data processing (1) (MapReduce)
Prep: Read "MapReduce: Simplified Data Processing on Large Clusters" and submit homework
Thu Mar 26: Big data processing (2) (Spark)
Prep: Read "Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing" and submit homework
Tue Mar 31: No class
Thu Apr 2: Distribution for interactivity (ExCamera)
Prep: Read "Encoding, Fast and Slow: Low-Latency Video Processing Using Thousands of Tiny Threads" and submit homework.
Tue Apr 7: Ray
Prep: Read "Ray: A Distributed Framework for Emerging AI Applications" and submit homework.
Lab 3 out
Thu Apr 9: Nu
Prep: Read "Nu: Achieving Microsecond-Scale Resource Fungibility with Logical Processes" and submit homework.
Lab 3 out
Tue Apr 14: GRANNY
Prep: Read "GRANNY: Granular Management of Compute-Intensive Applications in the Cloud" and submit homework.
Thu Apr 16: 1-sided and 2-sided RDMA
Prep: Read "RDMA Reads: To Use or Not to Use?" and submit homework.
Tue Apr 21: FAWN
Prep: Read "FAWN: A Fast Array of Wimpy Nodes" and submit homework.
Thu Apr 23: Borg
Prep: Read "Large-scale cluster management at Google with Borg" and submit homework.
Lab 3 due
Tue Apr 28: Distributed systems research
Topic: Overview of current research directions.
Thu Apr 30: Final Project Demos (Combined Session)
Final Project Due
Fri May 1: Classes End
Thursday May 7 2-4pm: Final Exam
https://arr.usc.edu/final-exam-schedule/