### Objectives

The Distributed Systems 2 course builds on the basic notions presented in Distributed Systems 1 (1st semester). 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 you 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).