Distributed Systems 2


After the suspen­sion of 2017/18, Distributed Systems 2 (DS2) is acti­va­ted again, star­ting from 2018/19.

In order to com­ple­te the cour­se, stu­den­ts are assu­med to know the con­tent of Distributed Systems 1 (DS1), taught by Prof. Picco, or a simi­lar cour­se taken abroad. Exceptions can be made, but you are assu­med to cover the mis­sing infor­ma­tion.

The sug­ge­sted order in which the two cour­ses should be com­ple­ted is as fol­lo­ws:

  • For regu­lar stu­den­ts:
    • 2nd seme­ster, 1st year: Distributed Systems 1
    • 1st seme­ster, 2nd year: Distributed Systems 2
  • For stu­den­ts who have alrea­dy taken Distributed Systems 1 in the Bachelor degree:
    • 1st seme­ster, 1st or 2nd year: Distributed Systems 2


The Distributed Systems 2 cour­se builds on the basic notions pre­sen­ted in Distributed Systems 1. The goal of this cour­se is to pro­vi­de stu­den­ts with an under­stan­ding of the main algo­ri­th­mic tech­ni­ques and desi­gn options in the imple­men­ta­tion of modern distri­bu­ted systems. Consider it as cour­se on “Distributed Algorithms (and Data Structures)”; the focus is on the prin­ci­ples, rather than on a par­ti­cu­lar tech­no­lo­gy. Concretely, this inclu­des the fol­lo­wing objec­ti­ves:

  • Create an aware­ness of the major tech­ni­cal chal­len­ges in distri­bu­ted algo­ri­thms desi­gn and imple­men­ta­tion;
  • Expose stu­den­ts to cur­rent tech­ni­ques used to sol­ve the afo­re­men­tio­ned chal­len­ges;
  • Provide expe­rien­ce in the imple­men­ta­tion of typi­cal algo­ri­thms used in distri­bu­ted systems.
  • Expose stu­den­ts to cur­rent tech­no­lo­gy and distri­bu­ted infra­struc­tu­re soft­ware.

The cour­se will inclu­de 10 lab ses­sions in which stu­den­ts are asked to imple­ment some of the algo­ri­thms that are discus­sed in the theo­ry lec­tu­res.


Students are expec­ted to know Java and to have com­ple­ted the Distributed Systems 1 cour­se.