Nowadays, an IT system, whether it is visible (a company's information system) or embedded in an industrial process, is distributed by nature: It consists of networked "sites" (processors, sensors, computers, devices, etc.) that communicate to achieve a predefined goal. The aim of this course is to study the distributed algorithms implemented on these "sites" and used to manage and maintain this distributed infrastructure. 

From a theoretical point of view, this course assumes that students are familiar with the concept of concurrent programming. From a practical point of view, the course assumes that students are familiar with threads and sockets.

Students are expected to program in Phyton and GO.