Distributed Computing
ETH Zurich

Distributed Systems (HS 2022)

Course Catalogue

Note: This course is part of the course "Computer Systems" (252-0217-00L), but can also be taken as a standalone course: "Distributed Systems" 227-0555-00L. For the full course held together with Professor Roscoe visit the corresponding webpage and the corresponding internal moodle.

This course introduces the fundamentals of distributed systems. We study different protocols and algorithms that allow for fault-tolerant operation, and discuss practical systems that implement these techniques. The objective of the course is for students to understand the theoretical principles and practical considerations of distributed systems. This includes the main models of fault-tolerant distributed systems (crash failures, byzantine failures, and selfishness), and the most important algorithms, protocols and impossibility results. By the end of the course, students should be able to reason about various concepts such as consistency, durability, availability, fault tolerance, and replication.

Topics: client-server, serialization, two-phase protocols, three-phase protocols, paxos, two generals problem, crash failures, impossibility of consensus, byzantine failures, agreement, termination, validity, byzantine agreement, king algorithm, asynchronous byzantine agreement, authentication, signatures, reliable and atomic broadcast, eventual consistency, blockchain, cryptocurrencies such as bitcoin and ethereum, proof-of-work, proof-of-*, smart contracts, quorum systems, fault-tolerant protocols such as piChain or pbft, distributed storage, distributed hash tables, physical and logical clocks, causality, selfishness, game theoretic models, mechanism design.

Course pre-requisites: None.

Course language: English.

Lecture by Roger Wattenhofer, Monday or Friday 10.15-12.00 @ CAB G 61.

Videos Videos of the lectures can be found on the ETH Video Portal.

Exercises Friday 14.15-16.00 @ HG D 5.3 lead by Valerio Torsiello (vtorsiello@student.ethz.ch). Exercises only take place in the weeks with a lecture. Recordings of the exercise sessions can be found here.

Bonus See here for description of the bonus task, deadline for submissions, etc.

Organization by Yann Vonlanthen.

Corona information: We will follow Corona guidelines from the main ETH administration. Check here for more details.

Script 2022: You can find the tentative script for 2022 here.

Word of advice from the professor: Instead of attending this course, you can also just read The Saddest Moment by James Mickens, the guy who continuously tried to convince me that having vodka shots at a local Denny's at 3am is how I should spend my nights. Just reading Mickens will not give you any credits though.


19.09.2022Course website updated.
20.10.2022Due to unforseen circumstances, the first two lectures of the course have been moved to 21.10 and 24.10 respectively. The first exercise session will be held on 28.10.
27.11.2022Due to the illness of Prof. Wattenhofer, a TA (Yann Vonlanthen) will give tomorrow's lecture.
28.11.2022The bonus task has been published.
01.12.2022The exercise session will be held @ HG D 5.3 starting this week.
04.12.2022Due to the illness of Prof. Wattenhofer, tomorrow's lecture is cancelled.
08.12.2022Due to the illness of Prof. Wattenhofer, until further notice lectures will be held by TAs.
16.12.2022Chapter 21: We did not discuss Section 21.4, and regarding Section 21.3, we only discussed 21.14 -- 21.16 and Figure 21.21 (but not the analysis of the B-Grid). Only the topics discussed in class are relevant for the exam.
12.01.2023By popular request, we are publishing the (outdated) clicker questions.

Lecture Material

Lecture material and exercise sheets will be uploaded here as the lecture progresses. Note that chapter numbers are aligned with the course "Computer Systems".

Title Lecture Notes Exercises Additional Material
Chapter 14
Date: 21-October-2022
PDF --- ---
Chapter 15
Fault Tolerance & Paxos
Date: 21-October-2022
PDF --- Recording from 2020
Chapter 16
Date: 24-October-2022
PDF Exercises
Exercise Slides
Recording from 2020
Chapter 17
Byzantine Agreement
Date: 14-November-2022
PDF --- Recording from 2020
Chapter 18
Broadcast & Shared Coins
Date: 18-November-2022
PDF Exercises
Exercise Slides
Recording from 2020
Chapter 19
Consistency & Logical Time
Date: 21-November-2022
PDF --- Recording from 2020
Chapter 20
Time, Clocks & GPS
Date: 25-November-2022
PDF Exercises
Exercise Slides
Recording from 2020
Chapter 23
Eventual Consistency and Bitcoin
Date: 28-November-2022
PDF --- Recording from 2020
Chapter 24
Advanced Blockchains
Date: 02-December-2022
PDF Exercises
Exercise Slides
Recording from 2020

Date: 05-December-2022
--- --- ---
Chapter 22
Distributed Storage
Date: 09-December-2022
PDF Exercises
Exercise Slides
Recording from 2020
Chapter 25
Game Theory
Date: 12-December-2022
PDF --- Recording from 2020
Chapter 21
Quorum Systems
Date: 16-December-2022
PDF Exercises
Recording from 2020
Recording (second half of the lecture)
Cascade and Consensus on Demand Slides
Consensus on Demand
Exercise Slides

Advanced Topics in Distributed Systems
Date: 19-December-2022
--- --- Recording
Dfinity Internet Computer
Approximate Agreement

No lecture
Date: 23-December-2022
--- --- ---

Exam Preparation

To get an idea for the style of questions in the exam, you may consult exams from previous years: HS09, HS10, HS11, HS12, HS13, HS14, HS15, HS16, HS18, HS19, HS20, HS21. Beware that the topics covered have shifted around a little over the years, so some older exams have questions about topics that are not in the lecture anymore. Some of the older exams are in German, but this year’s exam is in English.