Distributed Computing
ETH Zurich

Distributed Systems (HS 2018)

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.

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.

Note that the lecture takes place in roughly half of the semester weeks. The exact dates will be published on this page and subscribed students will be notified by email.

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

Exercises by Selma Steinhoff, Friday 13.15-15.00 @ CAB G 57. Exercises only take place in the weeks with a lecture.

Organization by Manuel Eichelberger.

Project Work: There will be a project during the semester, through which a quarter grade bonus can be earned. Click here for details.

Word of advice from the professor: Instead of coming to 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 non-continuous, but rather aligned with the course "Computer Systems".

Title Lecture Notes Exercises Additional Material
Introduction
2018-10-08 (Monday)
PDF
PDF 2-on-1
--- ---
Chapter 1
Fault Tolerance & Paxos
2018-10-08 (Monday)
PDF
PDF 2-on-1
--- ---
Chapter 2
Consensus
2018-10-12 (Friday)
PDF
PDF 2-on-1
Exercises
Solutions
---
Chapter 3
Byzantine Agreement
2018-10-22 (Monday)
PDF
PDF 2-on-1
--- ---
Chapter 4
Shared Coin
2018-10-26 (Friday)
--- --- ---
Chapter 5
Clock Sync & GPS
2018-10-29 (Monday)
--- --- ---
Chapter 6
Consistency & Logical Clocks
2018-11-02 (Friday)
--- --- ---
Chapter 7
Quorum Systems
2018-11-05 (Monday)
--- --- ---
Chapter 8
Eventual Consistency & Bitcoin
2018-11-09 (Friday)
--- --- ---
Chapter 9
Distributed Storage
2018-12-03 (Monday)
--- --- ---
Chapter 10
Game Theory
2018-12-07 (Friday)
--- --- ---
Chapter 11
piChain & PBFT
2018-12-10 (Monday)
--- --- ---
Chapter 12
Smart Contracts & Ethereum
2018-12-14 (Friday)
--- --- ---
Chapter 13
TBD
2018-12-21 (Friday)
--- --- ---

References

[SBC] Distributed Ledger Technology: The Science of the Blockchain
Roger Wattenhofer
Inverted Forest Publishing, 2017, ISBN 978-1-54-423210-2