Languages and algorithms for distributed Applications

linfo2345  2024-2025  Louvain-la-Neuve

Languages and algorithms for distributed Applications
5.00 crédits
30.0 h + 15.0 h
Q1
Enseignants
Thèmes abordés
  • Etude des bases théoriques des algorithmes répartis, et des langages pour la programmation répartie.
  • Etude des questions spécifiques des systèmes répartis et mobiles: répartition géographique, gestion de ressources localisées et réparties, tolérance aux fautes, sécurité, interopérabilité et ouverture.
  • Utilisation pratique de quelques langages représentatifs et avancés pour la programmation de systèmes collaboratifs, répartis et mobiles.
Acquis
d'apprentissage

A la fin de cette unité d’enseignement, l’étudiant est capable de :

1 Eu égard au référentiel AA du programme « Master ingénieur civil en informatique », ce cours contribue au développement, à l'acquisition et à l'évaluation des acquis d'apprentissage suivants :
  • INFO1.1-3
  • INFO2.2-4
  • INFO5.4-5
  • INFO6.1, INFO6.4
Eu égard au référentiel AA du programme « Master [120] en sciences informatiques », ce cours contribue au développement, à l'acquisition et à l'évaluation des acquis d'apprentissage suivants :
  • SINF1.M2
  • SINF2.2-4
  • SINF5.4-5
  • SINF6.1, SINF6.4
Les étudiants ayant suivi avec fruit ce cours seront capables de
  • définir les systèmes répartis et les algorithmes répartis avec les concepts qu'ils contiennent et les propriétés qu'ils donnent aux programmes;
  • concevoir des applications collaboratives sur des systèmes répartis en utilisant des modèles rigoureux qui permettent de gérer la concurrence et les pannes partielles;
  • implémenter des applications collaboratives sur des systèmes répartis en utilisant les techniques appropriées;
  • utiliser un certain nombre d'outils avancés pour le développement d'applications réparties et mobiles.
Les étudiants auront développé des compétences méthodologiques et opérationnelles. En particulier, ils ont développé leur capacité à
  • penser à l'aide d'abstractions (raisonner correctement sur un système qui comprend plusieurs couches d'abstractions, et de définir de nouvelles abstractions pour simplifier la résolution d'un problème).
 
Contenu
  • Introduction aux systèmes distribués
  • Modèles formels des systèmes distribués
  • Spécification et implémentation des systèmes distribués (y compris sûreté et vivacité)
  • Détecteurs de défaillance
  • Diffusion fiable
  • Diffusion causale
  • Mémoire partagée
  • Consensus et ses applications
  • Systèmes à grande échelle basés sur la bouche à oreille et le pair à pair
  • Exemples de systèmes à grande échelle tirés des recherches du titulaire du cours (par exemple, Internet des objets, approche ΔQSD pour la conception des systèmes, systèmes convergents basés sur les CRDTs, entre autres).
Méthodes d'enseignement
  • Cours magistral chaque semaine (en présentiel ou distanciel, selon les règles en vigueur)
  • Séance de travaux pratiques en salle informatique, toutes les deux semaines, pour résoudre des problèmes simplifiés en utilisant les concepts vu au cours
  • Projet de conception et d'implémentation pour appliquer ces concepts dans le cadre d'une application plus complexe
Modes d'évaluation
des acquis des étudiants
  • Test dispensatoire 25% (vers la 7e semaine)
  • Projet 25%
  • Examen final (50%) (ou 75% si on refait la partie du test)
Le projet est obligatoire et se fait pendant le quadrimestre.  Il ne peut être fait qu'une fois et il compte pour toute l'année académique.  Le test dispensatoire (qui est optionnel) et l'examen final seront faits en présentiel ou distanciel, selon les règles en vigueur.  Le titulaire se réserve le droit d'interroger un étudiant oralement lors de l'examen final dans certains cas.
Autres infos
Préalables :
  • Expertise d'au moins un système de programmation et de la programmation concurrente sont les prérequis pour ce cours.  Une possibilité d'obtenir cette expertise est par le cours LINFO1131, mais il n'est pas impératif d'avoir suivi ce cours.
Ressources
en ligne
LINFO2345 sur Moodle: https://moodle.uclouvain.be/course/view.php?id=4947
Bibliographie
Mandatory course material:
  • Course slides (on Moodle)
Bibliography:
  • Rachid Guerraoui and Luis Rodrigues. "Introduction to Reliable Distributed Programming". Springer-Verlag, 2006.
  • Hagit Attiya and Jennifer Welch. "Distributed Computing: Fundamentals, Simulations, and Advanced Topics". McGraw-Hill, 1998.
Support de cours
  • Rachid Guerraoui and Luis Rodrigues, Introduction to Reliable Distributed Programming
Faculté ou entité
en charge


Programmes / formations proposant cette unité d'enseignement (UE)

Intitulé du programme
Sigle
Crédits
Prérequis
Acquis
d'apprentissage
Master [120] : ingénieur civil en informatique

Master [120] en sciences informatiques

Master [120] : ingénieur civil en science des données

Master [120] en science des données, orientation technologies de l'information