Architecture des réseaux informatiques de type TCP/IP.
Programme/contents
Introduction aux réseaux sans fil
Évolution historique et panorama des technologies sans fil émergentes
Caractéristiques et défis techniques actuels : saturation spectrale et gestion du spectre ; densification des réseaux (cellules, points d’accès, interférences) ; équilibre entre débit, latence, consommation et couverture ; gestion de la mobilité et de la qualité de service (QoS/QoE) ; sécurité et confidentialité.
Fondements des communcations sans fil
Modèles de canal radio, propagation et bilan d’une liaison sans fil
Spectre des fréquences, réglementations et gestion des interférences
Techniques d’accès au support (FDMA, TDMA, CDMA, CSMA-CA, OFDMA), , débits et contraintes.
Cas d’étude : Wi-Fi
Standard Wi-Fi et évolution de ses amendements (de Wi-Fi 4 à Wi-Fi 8)
Architecture et fonctionnement
Sécurité et qualité de service
Vulnérabilités spécifiques des réseaux sans fil.
Protocoles de sécurité (WPA3, EAP, authentification, chiffrement).
Gestion de la QoS, latence et bande passante.
Learning objectives
Ce cours a pour objectif d’offrir une compréhension approfondie des principes, protocoles et architectures des systèmes de communication sans fil, ainsi que les technologies émergentes dans le domaine. Un accent particulier sera mis sur les défis et solutions théoriques et techniques. Le cours illustre par une étude de cas les technologies Wi-Fi (IEEE 802.11) et leurs évolutions récentes (Wi-Fi 6/6E/7).
Le cours Sécurité dans les réseaux IP a pour objectif de fournir aux étudiants une compréhension globale des menaces et des mécanismes de protection des réseaux modernes. Il couvre l’ensemble des aspects essentiels de la sécurité, depuis l’analyse des attaques jusqu’à la mise en œuvre des protocoles et outils de protection. Les étudiants découvriront les principales attaques sur les réseaux IP, telles que le DoS, le spoofing ou le sniffing, et apprendront à identifier et analyser les risques liés aux protocoles réseau. Le cours présente également les outils de sécurité incontournables, tels que les pares-feux, les systèmes de détection d’intrusion et les VPN, permettant de protéger efficacement les infrastructures. Une partie importante est consacrée à lacryptographie, qu’elle soit symétrique ou asymétrique, ainsi qu’à la gestion des clés et des identités via des infrastructures à clé publique (PKI) et Kerberos. Les étudiants aborderont aussi les protocoles de sécurité clés, comme IPSec, SSL/TLS et les mécanismes AAA (RADIUS et Diameter), pour sécuriser les communications et les accès. Enfin, la sécurité des réseaux sans fil sera étudiée, en présentant les vulnérabilités du WiFi et les bonnes pratiques pour le protéger. À l’issue du cours, les étudiants seront capables d’analyser les attaques, de configurer et utiliser les dispositifs de sécurité, de mettre en œuvre les protocoles cryptographiques et de sécuriser aussi bien les réseaux filaires que WiFi, acquérant ainsi des compétences pratiques et immédiatement applicables dans le domaine de la cybersécurité.
Pré-requis (couvert par le programme de Licence) :
programmation en Java
BD relationnelles : schéma et notions associées (clé primaires, clé
étrangères, contraintes, …), requêtes en SQL et mises à jour.
Programme/contents
Nous aborderons en particulier :
modélisation:
au niveau conceptuel (modèles multidimensionnels) et niveau logique (schémas en étoiles...)
le langage SQL et les optimisations de bases de données pour les requêtes OLAP:
indexes, partitionnement et vues
l'architecture des entrepôts
les processus ETL (rapidement)
les grands principes des bases de données 'in memory'
Learning objectives
Ce module couvre les technologies des BD relationnelles permettant de transformer des données issues de sources diverses en informations utiles à la prise de décision.
Ce module est une introduction au langage des probabilités et à leurs applications aux statistiques. Le cours commencera par un rappel sur les probabilités et s'étendra sur des notions essentielles (loi des grands nombres, convergence, ...). Des applications seront vues en TP sur la compréhension des statistiques, l'utilisation des estimateurs et l'analyse de données.
L’objectif de ce cours est de fournir des outils et techniques algorithmiques de pointe aux apprentis. Etude de l’algorithmique sur les graphes (plus court chemin, tri topologique, …), les techniques de mémorisation, de programmation dynamique et de backtraching. Présentation de la notion de flots et des algorithmes de calcul de flot maximal. Enfin, les thèmes des algorithmes online et approchés seront abordés.
Dans ce cours, l’accent sera mis sur les langages dits dynamiques, c’est à dire des langages qui exécutent des actions au moment de l’exécution alors que d’autres langages les exécutent à la compilation. Des langages tels que Javascript, Python, PHP, Ruby seront étudiés. Des travaux pratiques permettront de mettre en œuvre les concepts liés à ces langages qui seront vus pendant le cours.
Ce cours présente des concepts avancés de traitement distribué des données, selon trois grands axes :
traitement de données distribuées sur une même machine (multi-thread/multi-processus). Ce schéma est utilisée pour les tâches de traitement hautement parallélisable afin d'utiliser au mieux les ressources d'une machine. Le cours rappelle des principes généraux de programmation parallèle (threads, verrous) ainsi que des concepts bas-niveau pour accélérer le traitement de données (pagination fichier/mémoire).
traitement client/serveur : utilisé dans le cadre classique d'une base de données unique répondant à des requêtes de plusieurs clients. Le cours présente le concept fondamental de transaction dans les BDs
relationnelles ainsi que les différents algorithmes de verrouillages et les structures de données associées.
traitement distribué « big data » : utilisé dans le cas où les données sont tellement volumineuses qu'elles doivent résider sur un cluster de machine. Le cours donne une introduction au paradigme « map/reduce » ainsi qu'une initiation aux frameworks Hadoop et Spark.
Ce module a pour objectif de familiariser les étudiants avec des approches basiques de machine learning. Le cours commencera en présentant les modèles traditionnels d'apprentissage supervisé et non-supervisé (tel que l'algorithme des k-moyennes, la décomposition en valeurs principales, le percetron, ...) pour entrevoir par la suite des modèles plus complexes. Le cours presentera les aspects théoriques du machine learning, et une grand part de travaux pratiques sera mis à disposition pour appliquer les techniques vues en cours à divers problèmes (classification, partitionnement, filtrage collaboratif, ...).
Explorer, transformer et découvrir les tendances dans les données
Savoir choisir la meilleure visualisation pour chaque type de données
Exploiter un outil de visualisation professionnel
Apprendre à raconter une histoire pertinente à l’aide des données.
Learning objectives
Avec l’accroissement des données, les techniques et technologies de visualisation jouent désormais un rôle de plus en important dans tous les secteurs d’activité. Il s’agit d’outils puissant permettant d’aider à découvrir et à comprendre la logique derrière un ensemble de données et à la partager avec d’autres personnes. Le cours vise donc à aborder un certain nombre de sujets dans ce domaine : Comment analyser, trier et traiter efficacement des données ? Comment concevoir des visualisations de données pertinentes et lisibles qui nous aideront dans la prise de décision et la transmission des connaissances de façon claire et efficace ?
Développer une compréhension approfondie du cadre conceptuel de la gestion de projet
Acquérir une maîtrise pratique des principaux outils de planification et de suivi
Développer des compétences en gestion des coûts, des risques et de la qualité
S’initier aux outils numériques de gestion de projet
Learning objectives
Le cours « Outils de gestion de projet » a pour objectif de doter les étudiants d’une maîtrise opérationnelle et critique des méthodes, techniques et instruments nécessaires à la planification, au pilotage et à la coordination de projets dans des environnements complexes, incertains et collaboratifs.
Ce module sur les Technologies mobiles et services connectés dans le cadre du Master propose une analyse approfondie des technologies qui facilitent la communication sans fil et l'interconnexion des dispositifs et des objets. Les étudiants explorent les architectures des réseaux mobiles, y compris les normes actuelles comme la 4G et la 5G, ainsi que les protocoles spécifiquement conçus pour les services des objets connectés. Le module met l’accent sur l'algorithmique permettant le partage des ressources dans les réseaux mobiles. Ces ressources doivent satisfaire des demandes très complexes, compte tenu de la diversité des objets se connectant à des réseaux sans fil ou mobiles.
Overall organisation
Les travaux dirigés permettent aux étudiants de s'exercer sur les méthodes utilisées par ces technologies pour renforcer leur compréhension.
Ce module vise à introduire les principes, technologies et outils du Cloud
et de la virtualisation, appliqués au contexte des systèmes IoT distribués
et Edge Computing. Il combine une approche théorique des concepts
fondamentaux avec une mise en œuvre concrète afin d’ancrer les
apprentissages dans un scénario réaliste de déploiement IoT. Les étudiants
explorent d’abord les fondamentaux de la virtualisation, en distinguant les
architectures basées sur machines virtuelles et celles reposant sur des
conteneurs. Ils étudient les mécanismes d’isolation, de gestion des
ressources, de portabilité et d’efficacité propres à ces environnements. La
seconde partie du cours aborde le déploiement de services IoT conteneurisés,
l’utilisation d’outils tels que Docker pour la création et la gestion
d’environnements légers, ainsi que les principes d’orchestration permettant
la coordination de services à grande échelle.
Ce projet vise à mettre en pratique les compétences fondamentales en informatique embarquée, réseaux sans fil et développement IoT à travers un projet concret et ludique : la conception d’un jeu d’attrape-drapeau mettant en œuvre des robots télécommandés.
Les étudiants doivent concevoir, programmer et coordonner des robots capables de communiquer, de percevoir leur environnement et de réagir en temps réel.
À la fin du projet, les étudiants sont capables de concevoir un système IoT complet, combinant programmation embarquée, communication réseau et robotique, dans un cadre ludique favorisant la créativité, la coopération et la rigueur technique.
Introduction : enjeux de la sécurité logicielle & modèle de menace
Bonnes pratiques de programmation : typage, validation, gestion des ressources
Attaques par injection, liaison dynamique et code malveillant
Attaques par complexité algorithmique et contre-mesures
Sécurité par langage : forces et faiblesses des langages impératifs, objet, fonctionnels
Projet ou TP : analyser, corriger et sécuriser un morceau de code existant
Learning objectives
Ce cours vise à doter les étudiants des compétences nécessaires pour écrire des logiciels fiables et résistants aux failles de sécurité. Il couvre les bonnes pratiques de programmation, les stratégies de défense contre les injections de code, les attaques par complexité ainsi que les spécificités de sécurité dans différents langages de programmation. Il met l’accent sur l’anticipation des vulnérabilités dès la phase de développement.
Introduction au langage Rust et à son modèle de possession, pour écrire des programmes sûrs et performants. Le cours aborde la gestion de la mémoire sans ramasse-miettes, la programmation concurrente, et l’écosystème moderne du langage (Cargo, crates). L’objectif est de former à la conception de logiciels robustes et efficaces en Rust.
Sockets, spoofing, sniffing, attaques Smurf et SYN Flooding
Analyse et capture du trafic
Utilisation de Wireshark, Scapy, et libpcap
Attaques web : XSS et contre-mesures
XSS réfléchi, persistant et DOM-based avec Flask
Attaques mémoire : Buffer overflow
Architecture x86-64, pile, assembleur, exploitation et prévention
Learning objectives
Ce cours propose une approche de la sécurité offensive : conception et implémentation de preuves de concept d’attaques (réseau, web, mémoire) en C, Python et assembleur. Les étudiants apprendront aussi à identifier et tester des contre-mesures (mitigations système, protections applicatives et politiques de sécurité).
Implémentations et mécanismes
– Listes de contrôle d’accès (ACL), capacités, labels
– Contrôles d’accès dans Unix/Linux, bases de données, web
Administration et politiques avancées
– Délégation, séparation des privilèges, moindre autorité
– Politiques dynamiques et contextuelles
Études de cas et travaux pratiques
– Analyse d’un système existant
– Conception d’une politique d’accès sécurisée
Learning objectives
Ce cours présente les principes, modèles et mécanismes permettant de réguler l’accès aux ressources informatiques. Les étudiants découvrent les fondements théoriques (politiques de sécurité, modèles formels) et les approches pratiques (listes de contrôle d’accès, capacités, rôles, attributs). Des études de cas et travaux pratiques illustrent la mise en œuvre de contrôles d’accès dans les systèmes d’exploitation, les bases de données et les applications distribuées.
Ce projet permet aux étudiants de mettre en pratique les connaissances acquises dans les cours de programmation sûre, de Rust, de sécurité offensive et de contrôle d’accès. Par équipes, ils conçoivent, développent et analysent un système logiciel intégrant des mécanismes de sécurité, en appliquant des principes de défense en profondeur. L’accent est mis sur la mise en œuvre concrète, la rigueur d’analyse et la capacité à évaluer et renforcer la robustesse des systèmes développés.
lan : Présentation de l’histoire des entrepôts de données jusqu’aux Data Lake actuels. Gouvernances des données : améliorer la qualité, la sécurité et la traçabilité des données. Petit TP de Data Viz et de reporting simple pour comprendre la finalité. Plusieurs TP d’ETL. TP de qualité de données. Discussions et retour d’expérience sur les projets décisionnelles. Facteur de succès d’un projet décisionnel. Présentation de différentes méthodologies de création de Data Warehouse.
Learning objectives
Comprendre les principaux enjeux du Data Warehouse.
Pouvoir conceptualiser un Data Warehouse. Utiliser un ETL.
Dans ce cours sont abordés les langages de modélisation tels que SDL, et/ou BPMN. Il s’agit de sensibiliser les étudiants à la nécessité de réfléchir à un problème posé avant de le programmer. Ces langages permettent de décrire des systèmes, des processus métier. Des choix devront être faits pour se concentrer sur l’analyse de ces systèmes. Ces choix porteront sur le niveau d’abstraction, les choix des interactions, des algorithmes. Les détails liés à l’implémentation seront laissés de côté pour la phase de conception.
Overall organisation
Les TP en SDL sont donnés avec l'outil Pragmadev Studio.
Identifier les différents types de données avec les outils qui permettent de les ingérés, stockage brute et stockage distribué, Nosql, lakehouse et data mesh.
Learning objectives
Savoir concevoir un datalake et une architecture orientée Big data.
Ce cours explore les concepts, méthodes et outils permettant d’évaluer, d’améliorer et de maintenir la qualité des données dans un environnement de science des données. La fiabilité des analyses et des modèles prédictifs dépend fortement de la qualité des données sources ; ce cours fournit les compétences nécessaires pour détecter, mesurer et corriger les anomalies et incohérences présentes dans les jeux de données.
Les étudiants apprendront à concevoir des pipelines de traitement intégrant des mécanismes de contrôle de qualité et de traçabilité, en s’appuyant sur des outils modernes de data processing et de data governance.
L'objectif de cette UE est de réaliser un projet informatique complet sur une thématique liée à la science des données. Le travail doit couvrir tout ou partie des étapes d'un développement informatique type (spécification, modélisation, développement, test, etc.). Le travail peut aboutir à un prototypage ou à une application complète. L'objectif est que les étudiants consolident et mettent en pratique les concepts théoriques acquis dans la formation liés aux données, à leur traitement ainsi qu'aux différents algorithmes d'apprentissage automatique.
Ce module vise à écrire un rapport sur les missions effectuées en entreprise ou lors d'un stage long (en l'absence d'alternance). Une soutenance est prévue pour présenter les missions.