Nous aborderons dans ce cours quelques-uns des problèmes principaux en programmation répartie (élection d'un leader, exclusion mutuelle, temps logique et synchronisation, algorithmes de graphe, communication de groupe, consensus, etc.) en version répartie.

Les paradigmes de programmation concurrente et répartie seront abordés et illustrés par la mise en œuvre d’algorithmes, principalement dans le langage Erlang/Elixir.

Le cours se compose d'une partie théorique (cours et exercices), ainsi que d’une partie pratique (exercices et mini projet, réalisés dans un environnement réparti).

Pré-requis : bonne connaissance d’un langage de programmation, tel que Python, C ou Java. Une introduction à Erlang/Elixir (un langage de programmation concurrent et fonctionnel) sera donnée.