This course is the second course in a series of two. Both courses provide a solid foundation in the area of reliable distributed computing, including the main concepts, results, models and algorithms in the field.
In order to ensure that IT infrastructures - a key engine of operations for any organization - operate at full capacity and efficiency, it is vital to understand its core: distributed algorithms. To achieve this, the infrastructure itself must be reliable and resilient. This course continues on the foundations of distributed algorithms, introduced in ID2203.1x, and builds on these concepts at a higher level of complexity to develop the skills needed to build and maintain reliable and efficient distributed systems.
ID2203.2x covers specific advanced abstractions and algorithms including sequence consensus and multi-Paxos; atomic broadcast and replicated state machines. It also covers dynamic reconfiguration of services; the use of physical clocks in distributed systems; the CAP theorem, and weaker consistency models, including eventual consistency and conflict-free replicated data-types.
Students will experiment and develop a variety of distributed algorithms in an interactive, engaging programming environment using the Scala programming language. They will be guided throughout the programming assignments and provided with intuitive examples to help them get started.
To complete the course with a full grade (100%) students are required to answer the graded quizzes provided every week, as well as the programming assignments.