Distributed Systems (HS 2024)
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
- Reading the script chapters
- Watching a few short video clips
- Solving the exercises
For each topic, the whole class meets every week on Friday. Each class meeting is organized as follows:
- We are going to have a quiz on the current chapters.
- Then, you can ask remaining questions about the subject that could not be answered in the exercise session.
- The class meetings are organized by Thomas Locher (standing in for Roger Wattenhofer who is on sabbatical), on Friday 10:15-12:00 in CAB G61.
- The class meetings are going to be recorded: Recordings
We have weekly exercise sessions on Wednesday, with questions on the level of exam questions.
- The first exercise on distributed systems will take place on November 13.
- The exercise sessions are organized by Mose Mizrahi Erbes.
- In each exercise session, the assistant is going to recap of the relevant parts of the script/videos.
- The assistant can also help you with any questions you have, regarding the exercise and also the current topic in general.
- You can freely attend any of the ongoing in-person Computer Systems exercise sessions on Wednesday 10:15-12:00 @ CHN D 46, ML F 40, ML J 34.1 or ML J 34.3.
- Alternatively, you can attend the Zoom session on Wednesday 13:15-15:00. The meeting ID and the passcode for the Zoom session is on the Computer Systems moodle, which all students enrolled in Computer Systems or Distributed Systems should be able to access.
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.
Special Lecture
There will be a special lecture after the last quiz on December 20 where we will show how to write, deploy, and interact with a smart contract on the Internet Computer. Attendance is highly recommended!
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.
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.