Credit points: 3.0
This course discusses aspects of building distributed systems, with an emphasis on reliability.
Lectures are held on Sunday 12:30-14:20 in Taub 7.
Recitations will be given in a reverse class manner: the recitation recording will be released by Sunday of each respective week. Anyone wishing to discuss the recording can meet Yaron during his reception hours on Tuesday.
Grading Policy:
The structure of the final grade: one programming assignment to be submitted in couples (5%+5%+20%=30% - see below), two dry home assignments to be submitted individually (2x10%=20%), and a final exam (50%). You need to get at least 45 in the exam in order to pass the course.
The dry assignments will be published roughly on weeks 5 and 12 with a one week deadline.
H.W. late submissions:
Late submissions will result in a penalty in the form of 3 points per day for the first three days, and 10 points per day beyond that.
Prerequisites:
- Working knowledge of Java/Go (needed for programming assignments).
- The assignment is in Go, but switching from Java to Go is fairly easy
- General knowledge of OOP concepts.
- Operating Systems.
- Other courses in Distributed Algorithms, Parallel and Distributed Programming, and Introduction to Computer Networks can be helpful, but are not necessary.
- Introduction
- Client/Server Programming, RPC, REST, MCP
- Replication (replicated state machine, primary/backup, quorum replication)
- Consensus and Failure Detection
- Distributed Transactions
- Decentralized Group Membership
- Reliable and Ordered Multicast
- Including a brief presentation of publish/subscribe
- Scalability issues and the concept of gossip
- Peer-to-Peer Systems
- Distributed Storage Systems
- Basics of Byzantine Fault Tolerance (including distributed aspects of blockchains)
- Distributed Inference
- Checkpoint/Restart
Miluim:The course will adopt the Technion's policies.
Students who need an extension for home assignment deadlines should contact the TA in charge, beforehand (when possible), with the respective supporting documents.
