Distributed Computing
ETH Zurich

Distributed Systems (HS 2021)

Course Catalogue

Note: This course is part of the course "Computer Systems" (252-0217-00L). Visit the page of the full course held together with Professor Roscoe here. The internal moodle link is here.

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.

Exercises Friday 14.15-16.00 @ CAB G 57. Exercises only take place in the weeks with a lecture.

Organization by Tejaswi Nadahalli.

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

Script 2021: You can find the script for 2021 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.

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
Introduction
Date: TBA
PDF
PDF 2-on-1
--- ---
Chapter 15
Fault Tolerance & Paxos
Date: TBA
PDF
PDF 2-on-1
--- ---
Chapter 16
Consensus
Date: TBA
PDF
PDF 2-on-1
Exercises
---
Chapter 17
Byzantine Agreement
Date: TBA
PDF
PDF 2-on-1
--- ---
Chapter 18
Broadcast & Shared Coins
Date: TBA
PDF
PDF 2-on-1
Exercises
---
Chapter 19
Consistency & Logical Time
Date: TBA
PDF
PDF 2-on-1
--- ---
Chapter 20
Time, Clocks & GPS
Date: TBA
PDF
PDF 2-on-1
Exercises
---
Chapter 21
Quorum Systems
Date: TBA
PDF
PDF 2-on-1
--- ---
Chapter 22
Eventual Consistency & Bitcoin
Date: TBA
PDF
PDF 2-on-1
Exercises
---
Chapter 23
Game Theory
Date: TBA
PDF
PDF 2-on-1
--- ---
Chapter 24
Distributed Storage
Date: TBA
PDF
PDF 2-on-1
Exercises
---
Chapter 26
Authenticated Agreement
Date: TBA
PDF
PDF 2-on-1
Exercises
Solutions
---
Chapter 27
Advanced Blockchains/Cutting Edge Research
Date: TBA
--- --- ---