Course objectives
The main objective of this course is to provide the students with a solid foundation for understanding, analyzing and designing distributed algorithms for reliable distributed systems.
Prerequisites
The course requires an intermediate level of knowledge in computer programming, basic knowledge in computer science and mathematical skills.
The course is a continuation of Reliable Distributed Algorithms part 1 and completion of that course is a requirement.
The course will use the programming language Scala in the programming assignments. You can find a good tutorial on Scala here. An interesting tutorial online can be found here.
The course effort is 5 hours per week.
Course Syllabus
Week 1
Lecture 10 Sequence Consensus and Replicated State Machines
1st Graded Quiz
1st Programming Assignment (Ballot-based Leader Election)
Week 2
Lecture 11 Leader-based Sequence Paxos and Raft
2nd Graded Quiz
2nd Programming Assignment (Leader-based Sequence Paxos)
Week 3
Lecture 12 Dynamic Reconfiguration and Stoppable Paxos
3rd Graded Quiz
Week 4
Lecture 13.a Lease-based Election and Replicated State Machines
Lecture 13.b Linearizable Shared Memory and Interval Clocks
4th Graded Quiz
Week 5
Lecture 14 Relaxed Consistency and Replicated State Machine
5th Graded Quiz
Academic Policy
You must behave with academic honesty and respect your fellow students. Please abide by the edX Terms of Service Honor Code.
Grading Policy
The course is graded on a Pass/Fail scale.
In order to pass the course you need to collect more than 50% of the possible points from the graded quizzes and the programming assignments. There is no final exam.
The weight of the graded quizzes is 60 points vs 40 for the programming assignments.
The deadlines for all the assignment and graded quizzes will be on January 17.