Distributed Systems — Spring 2025

Instructor Aurojit Panda (E-mail)
Help? CampusWire (Join code 3933)
When? Wednesday 4:55pm to 6:55pm
Where? Warren Weaver Hall Room 101
Who Day Time Where
Aurojit Panda Monday 1– 2pm 405 60FA
Curtis (Qiutong) Men Tue 3– 4pm 402 60FA
Consensus visualized poorly

This course is a graduate introductory course on distributed systems.

Workload

This class requires (contributions to the final grade are in parenthesis):

  • Reading between 2 and 3 research papers each week, analyzing their content and participating in discussions during lectures. We will also put out occasional quizzes (about once every 2 or 3 classes) based on readings from past classes. This portion of the grade will combine all of these sources. (10% of final grade)
  • Work on four programming assignments or labs. Details below. (35% of final grade)
  • Work on a more open ended final project, details of which are below. (15% of final grade)
  • A midterm on March 19, 2025 covering all the material taught until that date. (15% of final grade)
  • A final exam (date TBD) covering all of the material in the class. (25% of final grade)

The late policy and collaboration policy are below. Make sure you have read and understood both.

Schedule

This is tentative and subject to change

Date Topic & Readings Other
01/22 Introduction, no reading Lecture Notes
New Notes: Introduction
New Notes: Modeling
Whiteboard Notes
01/29 Time and correctness
Lamport '78
Alpern and Schneider' 85
Optional: Feris, Graham and Kumar 2011
Lab 1 Out (Due Feb 14)
Pre-class notes
Notes
Whiteboard Notes
New Notes: Trace Properties
02/05 Linearizability
Herlihy and Wing '90
Sela, Herlihy, Petranak '21
Pre-class notes
Notes
Notes
Whiteboard Notes
02/12 CAP and RSMs
Gilbert and Lynch '02
Schneider '90
Lamport '78
Pre-class notes
Notes
Whiteboard Notes
Lab 1 due (02/14)
02/19 Replicated State Machines (continued) + Raft
Ongaro and Ousterhout '14
Lab 2 and 3 out (Lab 2 due 03/07, Lab 3 due 03/14)
Pre-class notes
Notes
Whiteboard Notes
02/26 Raft
Ongaro and Ousterhout '14
Pre-class notes
Final project suggestions
Notes
03/05 Paxos
Lamport'01
Chandra, Griesmer, Redstone'07
(Optional) Lamport'98
Lab 2 due (03/07)
Notes
03/12 Randomized Consensus
Ben-Or '83
Pan et al '21
Errata for Pan et al'21
Optional: Aguilera and Toueg'10
Lab 3 due (03/14)
Final project proposals due.
03/19 MIDTERM Lab 4 out (Due April 4)
03/26 SPRING BREAK
04/02 Consensus and FLP
Fischer, Lynch and Paterson '85
Dwork, Lynch and Stockmeyer '88
Lab 4 due (April 4)
Pre-Lecture Notes
Notes
04/09 Byzantine Fault Tolerance
Lamport, Shostak and Pease '82
Castro and Liskov '99
Pre-Lecture Notes
Notes
04/16 Failure Detectors
Chandra and Toueg '96
Optional: Chandra, Hadzilacos and Toueg '95
Leners, Gupta, Aguilera and Walfish '13
Notes
04/23 BFT Failure detectors
Clement et al'12
Levin et al'09
Dissecting BFT Consensus
04/30 Poster Session

Labs and Final Project

All but the final lab are to be done in Elixir a functional language that implements the actor model and must use our emulation layer. Lab 1 and a couple of additional sections will introduce you to the programming environment.

  • Lab 1 is an introduction to the classes programming environment, and is meant to bring you up to speed with the use of recursion and teach you enough Elixir to work on the rest of the projects.
  • Lab 2 and Lab 3 both aim to implement Raft, a commonly used consensus protocol.
  • Lab 4 will look at implementing Rabia, a randomized consensus protocol.

The class diverges for the final project:

  • If you are a PhD student or are interested in independent research you can use a research project you are already working on, or propose a new one for your final project. You will then make a poster (details forthcoming) that we can make available to other students in the class, and submit a short report.
  • For everyone else we will provide a list of open ended labs, and you can work on one of them.

In both cases you need to submit a proposal (by Oct 14), make a poster (details forthcoming) and submit a write up. In both cases the proposal should explain what you are planning on doing, and how you plan to test your work. For the research project you should also provide motivation and preliminary related work.

Final projects should ideally be done in groups of 2, but we can accommodate cases where you want to work alone. Please get in touch with Panda as early as possible.

Late Policy

You have 5 late days that you can use across all labs. Late days incur no penalty, but you are responsible for recording any late days you use in a README file handed in with the lab. Any additional late days will incur a 10% deduction. Any lab submitted more than 5 days late will receive a 0.

Collaboration Policy

You are allowed (and in fact encouraged) to discuss readings, and the reading questions with others (including people who might not be in this class). However, all answers you submit must be written by you and should not be copied from anyone else. Additionally, you must understand your answer, we reserve the right to interview you and quiz you about your answers. Additionally, you must cite all sources (people, websites, papers, etc.) that you consult as a part of your work.

You are allowed to discuss labs with others in the class. You may not however share code with anyone else in class. This means you may not show your code to anyone else, and you may not copy code from anyone else. Additionally, similar to above: (a) you must understand the functioning of all code you submit; and (b) you must cite any sources you consulted while working on the lab. We reserve the right to both talk to you about details of your code and to use automatic tools to detect cases where code is copied.

We will investigate any suspected academic misconduct, and will report it to the department as required by GSAS policies.

A word about citing: as you can see we require you to cite any external sources you use for the class. External sources here include but are not limited to previously published articles, blog posts, Stackoverflow or similar sites, conversations with other people, etc. This policy is not meant to discourage the use of external sources, instead it just codifies a standard academic practice. You should be generous with your citations.

Finally, by taking this class you agree to never post any solutions for the labs publicly.