### News

In 2017/18, the course will be suspended, because of the change of semester and the dependency on Distributed Systems 1. It will return regularly in 2018/19. 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 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.

In order to enroll in this course, you are required to fill this form (deadline: March 1st).