Theme: Cloud Computing & Data Infrastructures
Distributed Systems
(3 ECTS - 18h)
Distributed systems are omnipresent. They are formed by a set of computing devices, interconnected by a network, that collaborate to perform a task. Distributed systems execute on a wide range of infrastructures: from Cloud datacenters to wireless sensor networks.
The goal of this course is to study the main algorithms used at the core of Distributed systems. These algorithms must be efficient and robust. An algorithm is efficient when it sustains a high level of performance. Performance can be measured using various metrics such as throughput, latency, response time. An algorithm is robust when it is able to operate despite the occurrence of various types of (network and/or machine) and attacks.
We will also study how the design of these algorithms is impacted by the properties of modern hardware, that is, how to design distributed algorithms that can make best use of the features provided by modern hardware.
Prerequisite
Basics of Operating Systems and Distributed programming
Targeted skills
- Specifying correctness properties for distributed algorithms according to a failure model
- Designing distributed algorithms
- Reasoning about the correctness and the performance of distributed algorithms
- Understanding how modern hardware features impact the design of algorithms
- Here are some of the main topics covered during the class:
- Ordering of events
- Distributed snapshots
- Failure detectors
- Reliable broadcast
- Consensus
- Atomic broadcast
Evaluation
Written Exam.