Algorithmique et communications des applications réparties

Catalogue des cours de Télécom SudParis

Code

IGSF CSC 4509

Niveau

M1

Graduate

Graduate

Semestre

Spring

Domaine

Informatique

Programme

Programme Ingénieur

Langue

Français/French

Crédits ECTS

4

Heures programmées

45

Charge de travail

90

Coordonnateur(s)

Département

  • Informatique

Equipe pédagogique

Organisation

Cours/TD/TP/projet/examen : 0/20/25/0

Acquis d'apprentissage

À l'issue du module, les étudiants sont capables, dans le cadre du développement d’une application répartie de petite taille, mais réaliste, et dont le cahier des charges est fourni, de :
- développer entièrement une application répartie avec TCP/IP en utilisant la bibliothèque JAVA NIO avec des communications en modes connecté et déconnecté, et en modes synchrone et asynchrone,
- lire, donner une exécution, et expliquer les preuves des algorithmes répartis de base (élection, diffusion, exclusion mutuelle, interblocage et détection de terminaison),
- de mettre en œuvre les algorithmes étudiés par insertion dans l'application répartie développée dans le module et avec écriture de scénarios de tests simples (c.-à-d. sans utilisation de canevas logiciel d'émulation ou de simulation) pour vérifier les propriétés de correction et de progression.
À l'issue du module, les étudiants sont aussi capables d'étudier en groupe des articles de recherche sur la thématique de la tolérance aux fautes, d'en discuter avec un spécialiste, et ensuite, d'en faire une présentation synthétique aux autres étudiants de la classe.

Compétences CDIO

  • 1.3 - Connaissances avancées en ingénierie : méthodes et outils
  • 3.1.2 - Organisation du travail en équipe
  • 4.3.2 - Définir la fonction, le concept et l'architecture
  • 4.4.1 - Processus de conception
  • 4.4.3 - Utilisation de connaissances préalables dans le cadre de la conception

Prérequis

Algorithmique séquentielle (CSC3101, bonne pratique), Système d'exploitation UNIX (CSC3102, bonne pratique), Programmation orientée objet avec le langage Java (CSC4102, bonne pratique) , Architecture matériel et langage C (CSC4103, bonne pratique), Programmation réseau en langage C (NET4102), Programmation système (CSC4508, bonne pratique)

Mots-clés

Algorithmique répartie, programmation réseau (JAVA NIO), mise en œuvre d'algorithmes répartis

Contenu

- Communication non fiable par échange de messages (UDP),
- Communication bidirectionnelle par canal fiable (TCP),
- Asynchronisme, lecture non bloquante, applications multiclientes, multiserveurs,
- Algorithmique répartie,
- Principes de base (synchronisme/asynchronisme, spécifications, modèles...),
- Problématique des systèmes répartis : motivations et caractéristiques fondamentales,
- Algorithmes par vagues, écho,
- Communications de groupe, diffusion, et ordres FIFO, causal et total,
- Élection,
- Exclusion mutuelle, interblocage et détection de terminaison.

Evaluation

Note finale = 9/20 TP noté + 3/20 travail en groupe sur la lecture et présentation d'articles + 8/20 série de TP avec rendus (rapport et code)
La présence en cours est prise en compte dans l'évaluation.

Formule de l'évaluation

Note finale = 9/20 TP noté + 3/20 travail en groupe sur la lecture et présentation d'articles de recherche + 8/20 série de TP avec rendus (rapport et code)
La présence en cours est prise en compte dans l'évaluation.

Bibliographie

Supports de cours :
- « Algorithmes répartis » » (Cours en ligne avec simulations)
- « Architecture des systèmes distribués » (diapositives commentées)
- Tutoriels en ligne Oracle, série « The Java Tutorials »
Bibliographie :
- A.S. Tanenbaum. Distributed Operating Systems. Prentice Hall, 1995.
- G. Tel. Introduction to Distributed Algorithms 2nd edition. Cambridge University Press, 2000.
- M. Raynal, Distributed Algorithms for Message-Passing Systems, Springer, 2013.
- G. Travis, Getting started with NIO, ibm.com/developerWorks, July 2003.
- A. Hitchens. JAVA NIO, O'Reilly, 2002
- Z. Manna and A. Pnueli, The Temporal Logic of Reactive and Concurrent Systems: Specification, 1992.

Approches pédagogiques

Les cours intégrés (CI/TD) consistent en 20h d'introduction à la conception d'applications réparties. Les travaux pratiques se décomposent en 22h de manipulations réalisées en binôme et en 3h (1 TP noté) de manipulations notées réalisées en monôme. L’ensemble des TP permettent de réaliser une étude de cas en binôme, avec un travail complémentaire à réaliser en binôme et un compte rendu (ou rapport final) à rendre en fin de module.