Spring 2026, International Undergraduate Class
Distributed Systems is a fundamental course for majors in computer science and software engineering, presenting the core principles, architectures, and engineering methods of modern distributed systems from the perspective of system designers and practitioners. The course focuses on the essential characteristics of distributed environments, namely, multiple processes, multiple nodes, and non-shared address spaces, and explains key issues in architecture design, data consistency, communication mechanisms, fault tolerance, and scalability, helping students build a holistic understanding of large-scale system coordination. Course topics include distributed system architectures, distributed time synchronization, socket communication and remote method invocation, group communication, mutual exclusion and election algorithms, replication and consistency models, network interconnection, and the Domain Name System. Through these topics, students will understand the challenges and solutions related to node coordination, event ordering, fault recovery, data replication, naming and lookup, and multi-node consistency in distributed environments, enabling them to analyze correctness, performance bottlenecks, scalability, and security risks from a system perspective, and to acquire the ability to design reliable, highly available, and large-scale distributed systems.
There is no required text for this course. A reference textbook is “Distributed Systems: Concepts and Design” by George Coulouris, Jean Dollimore, Tim Kindberg and Gordon Blair. Lecture notes and other materials will be posted periodically on this page.
There will be two written assignments and a final examination. We try very hard to make questions unambiguous, but some ambiguities may remain. Ask if confused or state your assumptions explicitly. Reasonable assumptions will be accepted in case of ambiguous questions.
Unless otherwise specified, the lectures are held twice a week: 14:00–15:45 on Tuesdays and 10:30–12:15 on Thursdays, both in Room H403. There will be a break in the middle of each lecture.
| Date | Topics | |
|---|---|---|
| Week #1 | Tuesday, Mar. 10 | Overview |
| Week #1 | Thursday, Mar. 12 | Network & RPC |
| Week #2 | Tuesday, Mar. 17 | Time |
| Week #2 | Thursday, Mar. 19 | Distributed Snapshot |
| Week #3 | Tuesday, Mar. 24 | Consistency & Bayou |
| Week #3 | Thursday, Mar. 26 | P2P Systems & Chord |
| Week #4 | Tuesday, Mar. 31 | Replication State Machines |
| Week #4 | Thursday, Apr. 2 | View Change Protocols & Consensus |
| Week #5 | Tuesday, Apr. 7 | RAFT |
| Week #5 | Thursday, Apr. 9 | Consistency |
| Week #6 | Tuesday, Apr. 14 | Concurrency Control |
| Week #6 | Thursday, Apr. 16 | Spanner |
| Week #7 | Tuesday, Apr. 21 | Distributed Databases |
| Week #7 | Thursday, Apr. 23 | Blockchains |
| Week #8 | Tuesday, Apr. 28 | AI Systems & Performance |
| Week #8 | Thursday, Apr. 30 | Review |