Course Syllabus
This course covers foundations and recent advances in distributed algorithms. The course studies fundamental problems in distributed computing, including graph algorithms, leader election, synchronization, consensus, broadcast, state machine replication, distributed shared memory, mutual exclusion, shared objects, and distributed cryptography. The course studies foundational models and assumptions regarding shared memory vs. message passing, synchrony vs. asynchrony, reliability of message delivery, crashes and Byzantine faults. The course introduces common algorithm design techniques, including synchronization, cryptographic primitives, leader election, randomization, optimistic cases, simulation, and quorums.
This is a theory/algorithm course that emphasizes formal modeling, rigorous proofs, theoretical analysis, and fundamental limits in the form of lower bounds and impossibility results. While the course also touches on practical aspects whenever applicable, it will not be a priority, and many topics covered in the course will be of theoretical interest primarily at present.
Prerequisite: None required. However, a course on algorithms (like CS/ECE 374) OR distributed systems (like CS 425 / ECE 428) is strongly recommended.
Grading: four problem sets 60%; midterm 15%, final exams 20%; class participation 5%.
Resources: No required textbook. The following textbooks and online resources may be helpful.
- Distributed Computing: Fundamentals, Simulations, and Advanced Topics by Hagit Attiya and Jennifer Welch.
- Notes on Theory of Distributed Systems by James Aspnes.
- Distributed Algorithms by Nancy Lynch.
- Decentralized Thoughts
Lectures: Monday/Wednesday 3:30 pm -- 4:50 pm in 2406 Siebel Center for Computer Science.
Office Hours: Wednesday 3 to 3:30 pm in 4312 Siebel Center AND after each class in the lecture room.
Tentative Schedule: (subject to change)
| Date | Topic | Suggested Reading (optional) |
| 08/25 | Introduction | |
| 08/27 | Leader Election in a Ring | An Improved Algorithm for Decentralized Extrema-Finding in Circular Configurations of Processes |
| 09/01 | No Class (Labor Day) |
|
| 09/03 | Basic Graph Algorithms | |
| 09/08 | Synchronization | Complexity of Network Synchronization (Sections 1-3) |
| 09/10 | Causality, Logical Clocks, Global States |
Time, Clocks and Ordring of Events in a Distributed System |
| 09/15 | Common Knowledge |
Knowledge and common knowledge in a distributed environment |
| 09/17 | Introduction to Consensus |
The Byzantine Generals Problem (Sections 1-3) |
| 09/22 | Time Bounds of Consensus | Simple Bivalency Proof that t-Resilient Consensus Requires t+1 Rounds |
| 09/24 | Asynchrony and FLP | Impossibility of Distributed Consensus with One Faulty Process Another advantage of free choice |
| 09/29 | Partial Synchrony and Paxos |
Partial synchrony The Part-Time Parliament Paxos Made Simple |
| 10/01 | Distributed Shared Memory |
Sharing memory robustly in message-passing systems (Sections 1-4) |
| 10/06 | Shared Registers |
|
| 10/08 | Review |
|
| 10/13 | No Class (extra office hour) | |
| 10/15 | Midterm | |
| 10/20 | Mutual Exclusion |
Peterson's Mutual Exclusion Algorithm Bakery Algorithm |
| 10/22 | Mutual Exclusion |
Mellor-Crummey and Scott Mutual Exclusion Algorithm |
| 10/27 | Wait-free Hierarchy |
Wait-free synchronization |
| 10/29 | Byzantine Broadcast and Agreement | Dolev-Strong Authenticated Broadcast Bracha's Reliable Broadcast |
| 11/03 | PBFT |
Practical Byzantine Fault Tolerance (Sections 1-4) |
| 11/05 | Tendermint and Simplex |
From Tendermint to Simplex |
| 11/10 | Fault Tolerance Bounds |
|
| 11/12 | Canceled |
|
| 11/17 | Nakamoto Consensus |
Bitcoin: A Peer-to-Peer Electronic Cash System Bitcoin's Latency--Security Analysis Made Simple |
| 11/19 | Secret Sharing and Threshold Cryptography |
How to Share a Secret |
| 11/24 | No Class (Fall Break) | |
| 11/26 | No Class (Fall Break) | |
| 12/01 | Verifiable Secret Sharing |
Verifiable Secret Sharing Simplified |
| 12/03 | Multi-party Computation | |
| 12/08 | No Class (extra office hour) | |
| 12/10 | Final Exam |