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 TBA.
Recitations are held on Sunday 14:30-15:20 in TBA.
The Teaching method would be according to the Corona related regulations during the semester. The default is frontal teaching in class with no recording.
In case we do have to switch to hybrid or online teaching:
To view the online zoom session, you will need to login to zoom with your Technion account (@campus.technion.ac.il). Make sure you know your password.
All zoom recordings (regardless of how we teach) would be also available through panopto till the end of the exam period for this semester.
Reception hours will be given over zoom.
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.
- Working knowledge of Java/Go/Kotlin (needed for programming assignments).
- 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.
- 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