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

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.

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.

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

Evaluation

Note finale = 8/20 TP noté + 2/20 travail personnel sur le cours évalué par QCM + 2/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 sous la forme d'un retrait d'un point par absence non justifiée

Formule de l'évaluation

Note finale = 8/20 TP noté + 2/20 travail personnel sur le cours évalué par QCM + 2/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 sous la forme d'un retrait d'un point par absence non justifiée

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.

Compétences CDIO

Compétences principales

  • 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
Fiche mise à jour le 13/11/2018