Reliable Distributed Algorithms, Part 2 (edX)

Reliable Distributed Algorithms, Part 2 (edX)
The course will help students gain an in-depth understanding of distributed algorithms to build reliable and scalable distributed services. 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 Reliable Distributed Algorithms, Part 1, 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.


What you'll learn

- Agreeing on an incremental sequence of values and the related multi-Paxos algorithm

- Atomic broadcast and replicated state machines for fault-tolerant services

- Dynamic reconfiguration of distributed services

- The timed asynchronous model of distributed systems, and the use of physical clocks

- Efficient distributed algorithms based on the timed asynchronous model

- Relaxed consistency models and the CAP theorem, including various consistency models and conflict-free replicated data types


Prerequisites

It is recommended that students complete part 1 of this course series (Reliable Distributed Algorithms, Part 1) ahead of starting part 2. Students also need at least an intermediate level of knowledge in computer programming, basic knowledge in computer science and mathematical skills.

The course will use the programming language Scala in the programming assignments.