### News

After the suspension of 2017/18, Distributed Systems 2 (DS2) is activated again, starting from 2018/19.

In order to complete the course, students are assumed to know the content of Distributed Systems 1 (DS1), taught by Prof. Picco, or a similar course taken abroad. Exceptions can be made, but you are assumed to cover the missing information.

The suggested order in which the two courses should be completed is as follows:

- For regular students:
- 2nd semester, 1st year: Distributed Systems 1
- 1st semester, 2nd year: Distributed Systems 2

- For students who have already taken Distributed Systems 1 in the Bachelor degree:
- 1st semester, 1st or 2nd year: Distributed Systems 2

### Objectives

The Distributed Systems 2 course builds on the basic notions presented in Distributed Systems 1. The goal of this course is to provide students with an understanding of the main algorithmic techniques and design options in the implementation of modern distributed systems. Consider it as course on “Distributed Algorithms (and Data Structures)”; the focus is on the principles, rather than on a particular technology. Concretely, this includes the following objectives:

- Create an awareness of the major technical challenges in distributed algorithms design and implementation;
- Expose students to current techniques used to solve the aforementioned challenges;
- Provide experience in the implementation of typical algorithms used in distributed systems.
- Expose students to current technology and distributed infrastructure software.

The course will include 10 lab sessions in which students are asked to implement some of the algorithms that are discussed in the theory lectures.

### Prerequisites

Students are expected to know Java and to have completed the Distributed Systems 1 course.