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/0Acquis 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.