Autumn Semester 2020 takes place in a mixed form of online and classroom teaching.
Please read the published information on the individual courses carefully.

227-0555-00L  Distributed Systems

SemesterAutumn Semester 2018
LecturersR. Wattenhofer
Periodicityyearly recurring course
Language of instructionEnglish

AbstractThis 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.
ObjectiveThe 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.
ContentWe discuss the following concepts related to fault-tolerant distributed systems: 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.
Lecture notesA script is available on the web page.
LiteratureThe script is self-contained, but links to additional material are available on the web page.
Prerequisites / NoticeThis lecture takes place in roughly the second half of the semester, as the lecture is the second part of the lecture "Computer Systems" (252-0217-00). Students may attend at most one of the two lectures, NOT both.