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 5.
Recitations are held on Sunday 14:30-15:20 in Taub 5.
Grading Policy:
The structure of the final grade: one programming assignment to be submitted in couples (30%), two dry home assignments to be submitted individually (20%), and a final exam (50%). You need to get at least 40 in the exam in order to pass the course.
The programming assignment will be published around the 8th week of the semester. The dry ones will be published roughly on weeks 5 and 12. (This is an approximate estimation)
H.W. late submissions:
Late submissions will result in a penalty in form of 5 points per day for the first two days, and 10 points per day for the rest.
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.
- Parallel and Distributed Programming.
- Other courses in Distributed Algorithms and Introduction to Computer Networks can be helpful, but are not necessary.
- Introduction
- Client/Server Programming, RPC, REST
- Replication (replicated state machine, primary/backup, quorum replication)
- Consensus and Failure Detection
- Distributed Transactions
- Decentralized Group Membership
- Reliable and Ordered Multicast
- Scalability issues and the concept of gossip
- Peer-to-Peer Systems
- Distributed Storage Systems (and Distributed File Systems)
- Basics of Byzantine Fault Tolerance (including distributed aspects of blockchains)
- Cloud Based Analytics Systems
- Publish/Subscribe Systems
- Checkpoint/Restart
Miluim:
See current Technion mitigation policy.
Students who need an extension for home assignment deadlines should contact the TA in charge, beforehand (when possible), with the respective supporting documents.