Distributed Computing
ETH Zurich

Distributed Systems (HS 2024)

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.

Registration Notice: You can register for the course without joining the exercise group. You can attend the exercises whether or not you have joined the group.

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.

Organization

The first session: The course will begin with a session on Monday, November 4 at 10:15-12:00 in CAB G61. During this session, Thomas Locher will introduce the course, explain the course structure, and provide a high-level overview, in particular of the two chapters of the first week, Fault Tolerance and Consensus.

This course partially follows the flipped classroom paradigm. You (the student) will self-study all important concepts by

For each topic, the whole class meets every week on Friday. Each class meeting is organized as follows:

We have weekly exercise sessions on Wednesday, with questions on the level of exam questions.

Moodle: This course shares a moodle page with Computer Systems where students can ask questions on a Q&A forum. If you are enrolled in Computer Systems or Distributed Systems, then you should be able to access the moodle page. If you cannot, then please contact Mose Mizrahi Erbes.

Last year's script: You can find last year's script here. Please note that we are updating the script quite substantially this year.

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.

News

02.11.2024Course website updated.

Lecture Material

Alternate Video Link: The lecture videos are uploaded on Youtube. If you do not wish to use Youtube, or you wish to download the videos, you can also access the videos on polybox.

Title Lecture Notes Exercises Video Links Additional Material
Chapter 14
Introduction
04.11.2024
PDF
--- --- Introduction Video
Chapter 15
Fault Tolerance & Paxos
04.11.2024
PDF
--- Fault Tolerance & Paxos Playlist
State Replication
Paxos Explained
---
Chapter 16
Consensus
04.11.2024
PDF
Exercises
Solutions
Slides
Consensus Playlist
The Two Generals Problem
Consensus in f+1 Rounds
Impossibility of Consensus
Randomized Consensus
---
Chapter 17
Byzantine Agreement
11.11.2024
PDF
--- Byzantine Agreement Playlist
Byzantine Agreement
The 3f+1 Bound of Byzantine Agreement
The King Algorithm
Asynchronous Byzantine Agreement
---
Chapter 18
Broadcast
11.11.2024
PDF
--- Broadcast Playlist
Fault-Tolerant Broadcast
Reliable Broadcast
Reliable Broadcast with Erasure Coding
Reliable Broadcast with Low Communication Complexity
---
Chapter 19
Shared Coins
18.11.2024
PDF
--- Shared Coins Playlist
Random Oracles and Bit Strings
A Simple Shared Coin
Shared Coins on a Blackboard
Shared Coin via Threshold Cryptography
Shared Coin for Synchronous Byzantine Agreement
---
Chapter 20
Quorum Systems
18.11.2024
PDF
--- Quorum Systems Playlist
Quorum Systems
Effcient Quorum Systems
Fault Tolerant Quorum Systems
---
Chapter 21
Approximate Agreement
25.11.2024
--- --- --- ---
Chapter 22
Consistency & Logical Time
25.11.2024
--- --- --- ---
Chapter 23
Clock Synchronization
02.12.2024
--- --- --- ---
Chapter 24
Distributed Storage
02.12.2024
--- --- --- ---
Chapter 25
Game Theory
09.12.2024
--- --- --- ---
Chapter 26
Eventual Consistency & Bitcoin
09.12.2024
--- --- --- ---
Chapter 27
Internet Computer
16.12.2024
--- --- --- ---

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, HS22, HS23. 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.