Enseignants
Langue
d'enseignement
d'enseignement
Préalables
Souhaitable : compétences en programmation concurrente telles que visées par le cours LINFO1131
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
d'apprentissage
A la fin de cette unité d’enseignement, l’étudiant est capable de : | |
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 :
|
|
Contenu
Le cours est organisé en deux parties.
Dans la première partie, nous abordons les résultats et algorithmes classiques des systèmes distribués à passage de messages, où les nœuds se connaissent et peuvent communiquer entre eux dans un cadre de taille relativement restreinte. Cette partie comprend :
Dans la première partie, nous abordons les résultats et algorithmes classiques des systèmes distribués à passage de messages, où les nœuds se connaissent et peuvent communiquer entre eux dans un cadre de taille relativement restreinte. Cette partie comprend :
- Introduction aux systèmes distribués
- Programmation distribuée à l’aide du langage à acteurs Elixir
- Modèles formels et spécifications des systèmes distribués (sûreté et vivacité)
- Algorithmes de graphes distribués
- Le temps et ordonnancement des événements
- Algorithmes de diffusion
- Coordination : exclusion mutuelle, élection de leader
- Algorithmes de consensus et détecteurs de pannes
- Réplication de machine à états
- Tolérance aux pannes arbitraires (byzantines)
- Diffusion et coordination par algorithmes épidémiques (gossip)
- Réseaux logiques structurés (par ex., tables de hachage distribuées)
- Systèmes de blockchain (par ex., Bitcoin, Ethereum, Hyperledger Fabric)
- Systèmes de stockage de données décentralisés (par ex., IPFS)
- Sujets choisis en fonction des avancées récentes du domaine et des recherches du professeur (exemples non exhaustifs : systèmes de publication/abonnement, réseaux de blockchain de couche 2, systèmes mobiles ad hoc, systèmes local-first et CRDT, …)
Méthodes d'enseignement
- Cours magistral hebdomadaire avec le professeur ;
- Séances d’exercices hebdomadaires avec les assistants, comprenant la résolution de problèmes sur papier et des exercices de programmation en Elixir (dans la partie 1) ;
- Séances guidées et tutoriels hebdomadaires liés au projet de programmation (dans la partie 2).
Modes d'évaluation
des acquis des étudiants
des acquis des étudiants
L’évaluation pour la session de janvier est la suivante :
L’évaluation pour la session de septembre est la suivante :
Les examens de mi-parcours et final peuvent utiliser tout ou partie des modalités d’évaluation suivantes. La proportion respective de points pour chaque partie est annoncée en début d’examen :
Règles relatives à l’utilisation de l’intelligence artificielle (IA) pour le projet
L’utilisation responsable de l’IA pour l’implémentation du projet en langage Elixir est acceptée sous les règles suivantes:
- Examen de mi-parcours : 0 % ou 25 %, voir ci-dessous (vers la semaine 8, sur le contenu de la partie 1 uniquement)
- Projet : 25 %, basé sur un livrable logiciel documenté et une défense orale
- Examen final : 50 % si la prise en compte de l’examen de mi-parcours à hauteur de 25 % est avantageuse pour l’étudiant, et 75 % sinon (pendant la session, sur le contenu des parties 1 et 2)
L’évaluation pour la session de septembre est la suivante :
- Examen de mi-parcours : 0 % ou 25 %, voir ci-dessous (conservé depuis la session de janvier)
- Projet : 25 % (conservé depuis la session de janvier)
- Examen final : 50 % si la prise en compte de l’examen de mi-parcours à hauteur de 25 % est avantageuse pour l’étudiant, et 75 % sinon (sur le contenu des parties 1 et 2)
Les examens de mi-parcours et final peuvent utiliser tout ou partie des modalités d’évaluation suivantes. La proportion respective de points pour chaque partie est annoncée en début d’examen :
- Questions ouvertes sur le contenu du cours
- Problèmes ouverts nécessitant l’application des compétences et connaissances acquises pendant le cours
- Questions à choix multiples et à réponses multiples selon le principe du « standard-setting ». Une réponse incorrecte à l’une des questions ne peut entraîner de note négative, et cette partie de l’examen ne peut, dans son ensemble, accorder de points négatifs. Toutefois, un seuil minimal (annoncé lors de l’examen) de réponses correctes est nécessaire pour obtenir effectivement des points pour cette partie de l’examen.
Règles relatives à l’utilisation de l’intelligence artificielle (IA) pour le projet
L’utilisation responsable de l’IA pour l’implémentation du projet en langage Elixir est acceptée sous les règles suivantes:
- Les étudiants doivent assumer la pleine responsabilité de leur travail et être capables d’expliquer oralement l’ensemble du code et des livrables (documentation, scripts de déploiement, etc.) remis dans le cadre du projet.
- L’utilisation de l’IA doit être précisément documentée dans la documentation du projet, dans une section dédiée indiquant quelles IA ont été utilisées et pour quelle partie. La soumission de code ou de documentation généré partiellement ou entièrement par une IA sans documenter cette utilisation sera considérée comme du plagiat. Les étudiants qui n’ont pas utilisé d’IA doivent également l’indiquer dans cette section. L’absence de déclaration relative à l’IA dans le projet entraînera une pénalité de -5/20 points.
- Une utilisation jugée abusive de l’IA, compromettant l’acquisition des connaissances visées par le projet, peut être considérée comme une irrégularité au sens de la Section 7, Articles 107 et suivants du Règlement général des études et des examens (RGEE), avec toutes les conséquences que cela implique, comme prévu aux Articles 111 et suivants. En cas de suspicion d’utilisation abusive de l’IA dans le projet remis, ou de déclaration d’utilisation de l’IA incomplète ou inexacte, l’enseignant du cours peut convoquer l’étudiant concerné pour un entretien oral supplémentaire et prendre les mesures nécessaires en concertation avec le président du jury de l’EPL.
Autres infos
Connaissance de la programmation de base. Une expérience en programmation concurrente et/ou en langages fonctionnels (comme abordé, par exemple, dans LINFO1131) est un atout, mais pas une exigence stricte.
LINFO2345 est conçu pour être complémentaire aux cours suivants :
LINFO2345 est conçu pour être complémentaire aux cours suivants :
- LINFO2145 (Cloud computing) traite des applications distribuées pour le cloud ainsi que de la gestion et du traitement des données associées, à un niveau plus élevé et avec un accent plus marqué sur les aspects de génie logiciel et de systèmes d’exploitation. Il bénéficie néanmoins de la compréhension des algorithmes sous-jacents et des compromis abordés dans LINFO2345.
- LINFO2355 (Multicore programming) traite de la programmation concurrente en mémoire partagée, ainsi que des techniques de synchronisation et de mise à l’échelle sur une seule machine multicœur. LINFO2345 se concentre sur les systèmes à passage de messages. Les deux sujets sont hautement complémentaires mais font appel à des outils et techniques différents.
Ressources
en ligne
en ligne
Page Moodle du cours (à retrouver avec le sigle LINFO2345).
Bibliographie
Mandatory course material on Moodle:
- Course slides
- Exercices
Faculté ou entité
en charge
en charge
Programmes / formations proposant cette unité d'enseignement (UE)
Intitulé du programme
Sigle
Crédits
Prérequis
Acquis
d'apprentissage
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