Responsabilités pédagogiques
Je suis co-responsable avec Hala Skaf-Molli du parcours ALMA (Architectures Logicielles et Distribuées) du Master Informatique de Nantes Université. Le parcours forme aux architectures logicielles robustes et aux systèmes distribués (modélisation, algorithmique, fiabilité), avec des applications vers le génie logiciel, les plates-formes distribuées, les données et l'intelligence artificielle. Il associe des enseignements de haut niveau et des projets de recherche, en lien étroit avec les laboratoires du LS2N.
Ce cours introduit les langages formels et les automates finis, bases théoriques de la compilation et de l’analyse de programmes. Les étudiants y découvrent les expressions rationnelles, la déterminisation, la minimisation d’automates et les grammaires algébriques, avec des travaux pratiques sur l'analyse lexicale et syntaxique.
Le cours présente les fondements de la calculabilité, à travers les machines de Turing, les langages décidables et indécidables, ainsi que les notions de réduction et de problèmes NP-complets. Il met l’accent sur la modélisation des problèmes de décision et la compréhension des limites du calcul effectif.
Ce module explore la programmation parallèle sur systèmes multi-cœurs, en particulier les mécanismes de synchronisation (verrous, sections critiques, objets partagés) et les structures concurrentes. Les étudiants développent et évaluent des programmes Java multi-threads, de la synchronisation basique aux algorithmes d'exclusion mutuelle.
Le cours aborde l'algorithmique des systèmes concurrents, en étudiant les notions de terminaison non bloquante, de hiérarchie de consensus, et de preuves de correction. Les étudiants conçoivent des implémentations d’objets partagés garantissant la linéarisation, et des preuves d'impossibilité.
Ce module traite de l'algorithmique répartie dans les systèmes à passage de messages, soumis à des pannes et retards de communication. Il couvre les abstractions de diffusion de messages (reliable, causal, total order), la tolérance aux fautes, les registres distribués (ABD), le consensus et la machine à états répliquée.