Distributed Systems 2


The Distributed Systems 2 cour­se builds on the basic notions pre­sen­ted in Distributed Systems 1 (1st seme­ster). 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 whi­ch you 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.

In order to enroll in this cour­se, you are requi­red to fill this form (dead­li­ne: March 1st).