Master Informatique
Détails des enseignements
La formation est découpée en quatre semestres. Les semestres sont d'une durée de dix semaines (de septembre à décembre et de janvier à mars) et sont suivis d'un stage en entreprise ou d'un travail d'études et de recherche en laboratoire de recherche d'une durée minimale de dix semaines en première année et de douze semaines en seconde année.
Chaque unité, si elle est validée, donne droit à un certain nombre d'ECTS. Il faut obtenir 30 ECTS pour valider un semestre, 60 pour obtenir l'année et 120 pour le master.
Les enseignements sont assurés par des enseignants-chercheurs ou chercheurs du CRIL (Centre de Recherche en Informatique de Lens - umr 8188 du CNRS et de l'Unviersité d'Artois), ou par des professionnels. Une unité d'enseignement est consacrée à des conférences sur des thèmes proches des spécialités. Ces conférences sont données par des professionnels.
Le CRIL est le laboratoire d'accueil du master informatique de l'Université d'Artois.
Semestre 1
Semestre 2
Semestre 3
DLPDeep Learning par la Pratique
Unités spécifiques au parcours ILI
Unités spécifiques au parcours IA
RCRReprésentation des Connaissances
et du Raisonnement
Unités spécifiques au parcours ILJ
Semestre 4
Unités spécifiques au parcours ILI
SI2 Sécurité des Réseaux et des Programmes
Unités spécifiques au parcours IA
AIC Algorithmes pour l'Inférence et les Contraintes
PAAParadigmes de l'Apprentissage Automatique
DDCDécision et Dynamique des Croyances
Unités spécifiques au parcours ILJ
Anglais première année
ECTS 3(S1) 3(S2)
Volume 0 CM / 20(S1) 20(S2) TD / 0 TP
Semestre 1 et 2
L'objectif de ces deux unités est l'approfondissement de la maîtrise écrite et orale du lexique propre à l'anglais de l'informatique; entraînement à la rédaction en anglais; développement de la compréhension écrite et orale de documents, apprentissage de la rédaction de mémoires et de documents; entraînement aux techniques d'exposés oraux.
Bases de données avancées
ECTS 5
Volume 15 CM / 15 TD / 7,5 TP
Semestre 1
Nous abordons principalement dans ce module les techniques liées aux notions de transaction, de gestion d’accès concurrents, de reprise après panne, de bases de données distribuées, ainsi que les aspects procéduraux des bases de données (déclencheurs, PL/SQL).
- Transactions
- Définition
- Propriétés
- Points de sauvegarde
- Concurrence
- Sérialisation
- Ordonnancement
- Verrouillage à 2 phases (2PL)
- Estampillage
- Contrôle Multi-Versions (MVC)
- Blocages (Deadlocks)
- Niveaux d’Isolation
- Verrouillage explicite
- Reprise après panne
- Journaux
- Reprise à chaud
- Reprise à froid
- Bases de données Distribuées
- Bases de données réparties
- Fragmentation, allocation, duplication
- Mise à jour sur une base de données répartie
- Protocole de validation à 2 phases (2PC)
- Bases de données fédérées
- Hétérogénéité des données
- Médiateurs
- Intégration de schéma (LaV, Gav)
- Aspects Procéduraux
- PL/SQL
- Procédures stockées
- Déclencheurs (Triggers)
- Optimisation
- Tâches de maintenance du SGBD
Gestion de projet
ECTS 4
Volume 10 CM / 10 TD / 10 TP
Semestre 1
Le but de cette unité d’enseignement est d’acquérir les bases de la gestion de projet dans le cadre du développement logiciel et d’aborder la conception d’un logiciel en équipe. Ce module introduit aussi de nouvelles abstractions pour la conception d’application : les patrons de conception (classiques et architecturaux).
Ce cours présente les bases de la conception agile, que l’on retrouve formalisée dans le processus unifié, et qui se décline sous des terminologies à la mode comme SCRUM par exemple.
Une attention particulière est portée à la réalisation des documents nécessaires à la communication entre la maitrise d’ouvrage et la maitrise d’oeuvre dans ce cadre.
Les principaux patrons de conception d’architecture sont présentés et réalisés en TP.
Introduction à l'Intelligence Artificielle
ECTS 4
Volume 20 CM / 20 TD / 0 TP
Semestre 2
- Introduction et Motivations
- Représentation des connaissances et décision
- La logique propositionnelle et la logique des prédicats : rappels
- La Logique avec des quantifcateurs presque tous
- Représentation des préférences
- Les ontologies et le web sémantique
- Introduction à la théorie de la décision
- Résolution des problèmes
- Algorithmes de recherche aveugles (profondeur, largeur, profondeur limitée, etc)
- Algorithmes de recherche informés
- Notion d’heuristiques admissibles
- L’algorithme A*, IDA*
- Exemple du Puzzle (projet)
- Algorithmes pour les jeux (Minimax, alphabeta)
Réseaux
ECTS 7
Volume 25 CM / 20 TD / 15 TP
Semestre 1
L’objectif de ce cours est de permettre à l’étudiant de comprendre le fonctionnement général d’un réseau informatique et les problématiques associées. A la fin de celui-ci, il devrait être capable de définir un réseau domestique ou d’entreprise.
Dans un premier temps, le cours s’appuie essentiellement sur le modèle théorique OSI : l’étude de chacune des couches OSI permet d’aborder la plupart des concepts théoriques du domaine (signaux, codage, code correcteur, encapsulation, protocoles,…) ainsi que le vocabulaire propre à la discipline. Dans un second temps, le cours devient plus pragmatique et concret avec l’étude du modèle TCP/IP, les concepts de réseaux sans fil (WiFi, BT etc) ou bien encore les principes des systèmes et applications distribués (services Web, SOAP, REST,…). Enfin un dernier cours de sensibilisation à la sécurité des réseaux et au "côté obscur" de la discipline permet de faire le lien avec le module « sécurité ». Les TP (aboutissant au développement d’un projet) viendront en support afin de proposer de manière pratique l’étude des concepts vus en cours (socket, protocole, modèle client-serveur, etc..).
Systèmes d'Exploitation
ECTS 7
Volume 25 CM / 25 TD / 15 TP
Semestre 1
L'objectif de cette unité est la présentation des systèmes d'exploitation (centralisés) et de leur programation.
- Introduction (historique, principe, structure)
- Gestion des processus (création, communication, ordonnancement)
- Gestion de la mémoire (pagination, va-et-vient, mémoire virtuelle, algorithmes de remplacement de pages)
- Système de fichiers (fichiers, catalogues, mise en oeuvre, sécurité)
- Gestion des Entrées/Sorties
- Les interblocages (détection, évitement, prévention)
- Synchronisation en contexte centralisé et distribué.
Validation et vérification de logiciel
ECTS 4
Volume 10 CM / 10 TD / 20 TP
Semestre 2
Cette unité d’enseignement a pour but de présenter divers moyens de s’assurer que le logiciel développé correspond bien aux spécifications et comment gérer les changements inévitables dans ces spécifications ou lors de la maintenance de l’application. Elle a aussi comme objectif de découvrir la conception d’application web 3-tiers en PHP.
On présentera par exemple une approche pragmatique comme la programmation dirigée par les tests mais aussi les spécifications formelles à l’aide d’Alloy.
Diverses métriques de qualité de code seront présentées dans le but produire des logiciels robustes et faciles à maintenir. L’approche de la reconception (refactoring) sera présentée pour améliorer continuellement la conception des logiciels.
La conception d’application web 3-tiers sera présentée à l’aide du cadriciel Symfony. Le rôle de chacune des couches dans ce type d’applications et le fonctionnement de la traduction automatique du modèle objet en modèle relationnel pour la couche de persistance sont présentés en détail. Une application complète est développée en TP.
Sécurité Informatique
ECTS 4
Volume 15 CM / 15 TD / 10 TP
Semestre 2
- Introduction à la sécurité informatique
- Exemples d’attaques
- Spam
- Bases de données statistiques : problème de l’inférence d’informations sensibles
- Cryptographie
- Notions de base sur la cryptographie
- Cryptographie symétrique
- Cryptographie à clef publique
- Fonctions de hachage cryptographique
- Politiques de sécurité et systèmes de contrôle d’accès
- Définitions des propriétées de sécurité
- Analyse des systèmes de contrôle d’accès DAC, TMAC, RBAC, etc.
- Le système OrBAC
- Selinux
- Système de détection d’intrusions
- Approches comportementales
- Approches par signature
- Corrélation d’alertes : du format IDMEF à la détection d’attaques coordonnées
- Systèmes de détection d’intrusions à base de classifieurs
Complexité
ECTS 3
Volume 15 CM / 10 TD / 0 TP
Semestre 2
Objectifs et connaissances à acquérir : Comprendre les concepts à utiliser pour identifier la complexité calculatoire d’un problème, en particulier pour montrer qu’il est vraisemblablement intraitable.
Contenu: Notion de problème de calcul, classes P, NP et coNP, réductions, problèmes NP-complets, hiérarchie polynomiale.
Pré-requis : Bases de théorie des langages (module de compilation en licence)
Liens avec d’autres UE du master
- Systèmes logiques
- Validation et vérification de logiciels
- Programmation logique
- Recherche opérationnelle
- Représentation des connaissances et du raisonnement
- Algorithmes pour l’inférence et les contraintes
Systèmes Logiques
ECTS 3
Volume 15 CM / 10 TD / 0 TP
Semestre 2
Objectifs et connaissances à acquérir : Introduire la logique classique : logique propositionnelle et logique des prédicats. Utiliser la logique classique pour la représentation des connaissances et le raisonnement : résoudre des problèmes sur les graphes, optimisation, etc. Mettre en œuvre le raisonnement par l’utilisation d’algorithmes sur les arbres à la logique, présenter une application à la programmation logique.
Contenu :
- Logique propositionnelle : langage, système formel, sémantique. théorèmes : adéquation, complétude, compacité, finitude, décidabilité, formes normales; raisonnement : méthodes énumératives, résolution, etc mise en œuvre du raisonnement : utilisation de solveurs SAT, méthode de Davis et Putnam, etc
- Logique des prédicats : langage, système formel, sémantique. théorèmes : adéquation, complétude, compacité, finitude, semi-décidabilité, formes normales; raisonnement : unification, résolution
- Introduction à la programmation logique : Concepts de base de la programmation logique, programmation logique versus programmation procédurale
- Logiques non-classiques : Logique non-monotone, multivaluées, etc.
Pré-requis : Bases de théorie des langages
Liens avec d’autres UE du master
- Complexité
- Validation et vérification de logiciels
- Programmation logique
- Recherche opérationnelle
- Représentation des connaissances et du raisonnement
- Algorithmes pour l’inférence et les contraintes
- Représentation des connaissances et raisonnement
- Introduction à l'intelligence artificielle
Sciences des données
ECTS 4
Volume 10 CM / 10 TD / 10 TP
Semestre 2
Le cours de science des données est une introduction générale à cette discipline (data science) qui combine l'informatique et les mathématiques et les statistiques pour explorer et exploiter de gros volumes de données. Le cours se concentre essentiellement sur les phases préparatoires des données (acquisition, encodage, transformation, normalisation, réduction, discrétisation, nettoyage, consolidation, intégration, etc). Ce cours vise à préparer aux unités de fouille de données et d'apprentissage automatique en deuxième année de master.
Travail d'Études et de Recherche
ECTS 9
Volume 0 CM / 0 TD / 0 TP
Semestre 2
Le TER s'effectue à à la fin de la partie cours du second semestre, ce qui correspond au début du mois d'avril . Il s'effectue en entreprise (sous la forme d'un stage conventionné) ou en laboratoire de recherche. Il est d'une durée minimale de 10 semaines, mais peut être étendu jusque fin août.
Ce travail fiat l'objet d'un rapport écrit et d'une soutenance. Même si le stage ou le TER se prolonge au-delà des 10 semaines, la soutenance se tiendra à l'issue des 10 semaines (mi juin).
Les TER en laboratoire proposés chaque année sont regroupés sur une page dédiée.
Anglais en seconde année
ECTS 3(S3) 3(S4)
Volume 0 CM / 20(S3) 20(S4) TD / 0 TP
Semestre 3 et 4
Ces unités s'inscrivent dans la continuité des deux unités d'anglais de la première année et poursuivent le même objectif : l'approfondissement de la maîtrise écrite et orale du lexique propre à l'anglais de l'informatique ; l'entraînement à la rédaction en anglais ; le développement de la compréhension écrite et orale de documents ; l'apprentissage de la rédaction de mémoires et de documents ; l'entraînement aux techniques d'exposés oraux.
Au cours de cette seconde année, une attention particulière sera donnée à la préparation des tests du TOEIC qui seront passés à l'issue de la partie cours du semestre 4, par l'ensemble des étudiants du master.
Fouille de Données
ECTS 4
Volume 10 CM / 10 TD / 10 TP
Semestre 4
La fouille de données (ou « data mining &raquao;) a pour objectif de « valoriser « les données. Cela concerne l'analyse, l'exploration et l'extraction de motifs ou de modèles explicatifs ou prédictifs à partir de gros volumes de données.
Les objectifs de cette unité sont multiples :
- Comprendre la problématique générale de la fouille de données
- Comprendre l’intérêt et les enjeux de la fouille de données
- Comprendre les principaux problèmes de la fouille de données et ses techniques
- S’initier à certains algorithmes/outils de fouille de données.
Le cours aborde les étapes principales de la fouille de données. Il est structuré autour des points suivants :
- Acquisition et prétraitement des données (nettoyage, consolidation, intégration, transformation, normalisation, encodage, réduction, discrétisation…)
- Modèles prédictifs: Classification supervisée (classification, classifieurs Bayésiens, arbres de décision, combinaison de classifieurs…)
- Modèles explicatifs: Clustering (approche ascendante, approche descendante, détection d'anomalies…)
- Extraction de motifs fréquents et de règles d'association
- Fouille de données complexes
Le cours est illustré sur des applications réelles et il aborde les principaux problèmes et algorithmes/techniques/plateformes rencontrés dans la pratique. En plus des cours magistraux, cette unité comporte des travaux dirigés et pratiques pour analyser, approfondir et mettre en œuvre les concepts vus en cours.
Web Sémantique
ECTS 4
Volume 10 CM / 10 TD / 10 TP
Semestre 3
Le cours de web sémantique s'intéresse aux manière d'ajouter du sens aux données présentes sur le web. Le but est de permettre aux agents logiciels, les moteurs de recherche par exemple, de pouvoir raisonner sur les contenus présents en ligne. Un bref historique sera présenté, des visions initiales pendant les années 90 jusqu'à nos jours, et les formalismes et outils principaux seront présentés. Nous verrons, de manière non exhaustive, les langages XML, DTD, XML Schemas, RDF, RDFs, SPARQL et bien d'autres encore.
Recherche Opérationnelle
ECTS 5
Volume 20 CM / 20 TD / 0 TP
Semestre 3
Le cours de recherche opérationnelle en M1 est centré sur la programmation linéaire (continue et en nombres entiers) et sur la modélisation de problèmes (gestion de stock, réseaux, flots, affectations, etc.) en programmes linéaires (la modélisation par graphes et l'algorithmique sous-jacente étant traités en L3). Dans ce cours sont présentés en particulier l'algorithme du simplexe et la procédure par séparation et évaluation. Le cours constitue aussi une introduction à la théorie de la complexité (via les classes P et NP, et le concept de réduction fonctionnelle polynomiale).
Deep Learning par la Pratique
ECTS 4
Volume 10 CM / 10 TD / 10 TP
Semestre 3
Java pour Internet
ECTS 6
Volume 10 CM / 10 TD / 17,5 TP
Semestre 3 (parcours ILI)
Cette unité a pour but d’acquérir les bases de la programmation d’applications web « légères » en Java, c’est à dire des applications web 3-tiers qui sont déployées dans un conteneur de servlets. L’accent est mis sur le rôle des différentes technologies disponibles en standard dans la spécification JEE pour chacune des couches de l’application.
DevOps
ECTS 4
Volume 10 CM / 10 TD / 10 TP
Semestre 3
Représentation des Connaissances et du Raisonnement
ECTS 6
Volume 40 CM / 0 TD / 0 TP
Semestre 3 (parcours IA)
- Introduction et motivations
- La logique propositionnelle et la logique des prédicats : rappels
- Raisonnement non-monotone
- Logiques des défauts et ses extensions
- Approche normative pour le raisonnement non-monotone : Système P, monotonie rationnelle etc.
- Programmes logiques non-monotones : modèles stables, ASP etc.
- Raisonnement sous incertitude
- Théorie de l'incertain : théorie des probabilités, théorie des possibilités, fonctions de croyances
- Réseaux Bayésiens : modélisation, indépendance, causalité
- Réseaux Bayésiens : algorithmes de propagation
- Réseau Bayésiens : algorithmes de classification et d'apprentissage
- Logiques pondérées : logique possibiliste et logique des pénalités
- Dynamique des croyances
- Révision des croyances
- Fusion d'informations multi-sources
- Gestion des incohérences dans des bases de connaissances
Programmation Logique
ECTS 3
Volume 10 CM / 0 TD / 15 TP
Semestre 2
Les objectifs du cours de Programmation Logique sont multiples :
- introduction à une nouvelle façon de penser la programmation ;
- résolution de problématiques nouvelles ;
- présentation d'un outil privilégié pour le maquettage et l'implantation d’algorithmes liés à l'intelligence artificielle ;
- Il constitue un pré requis de base à la programmation (logique) par contraintes (cours AIC « Algorithmes pour l’inférence et les contraintes ») en seconde année (parcours IA).
Il s'agit d'un cours d'ouverture sur un mode de raisonnement et la programmation déclarative. Pour résoudre un problème, on le décrit (en logique), et le moteur d’inférence de Prolog s'occupe de la résolution.
L'organisation du cours est orientée sur la compréhension des mécanismes conduisant à un tel niveau de déclarativité du langage. Ainsi, la première partie du cours est consacrée à un bref rappel de logique formelle (calcul propositionnel et calcul des prédicats) pour expliquer concrètement comment on peut programmer avec la logique. Ensuite, une présentation classique du langage est proposée, illustrée par des travaux pratiques.
- Rappels de logique (logique propositionnel, logique des prédicats du premier ordre, formules de Horn, résolution, unification)
- Programmation logique et Prolog (syntaxe et sémantique)
- Bases du langage Prolog (structures de données simples)
- Aspects avancés de Prolog (règles prédéfinies, entrées-sorties, mise au point des programmes, la coupure)
- Les listes
- Les termes préfixés et N-uplets
- Quelques applications
Fondements des Moteurs de Jeux
ECTS 6
Volume 10 CM / 0 TD / 30 TP
Semestre 3 (parcours ILJ)
L'objectif de ce module est de fournir les fondements de géométrie et de programmation pour la conception d’architectures de moteurs de jeux.
- Anatomie d’un moteur de jeu (core, graphics, sound, physics, gameplay, network)
- Outils mathématiques:
- Vecteurs, matrices, transformations.
- Systèmes de coordonnées, systèmes de rotation, quaternions.
- Objets géométriques: points, droites, plans, triangles, sphères, boites, objets convexes, objets non-convexes, triangulations.
- Courbes et surfaces: types de courbes (cubiques, Hermite, Bézier, B-splines), types de surfaces (polygonales, B-splines), maillage.
- Caméras: vues, frustums, interpolations, projections (perspective, oblique, orthographique), culling, clipping.
- Outils de programmation:
- (Rappels) Bases: types, instructions, fonctions, pointeurs, gestion de flux, gestion d’erreurs.
- (Rappels) Programmation par objets: classes, opérateurs, surcharge, hiérarchies de classes.
- Programmation par templates: instantiation, spécialisation, hiérarchies de templates.
- Programmation multi-taches: concurrence, gestion des threads, parallèlelisme dans les moteurs de jeux
- Gestion de la mémoire: architectures de mémoire (consoles, mobiles, PCs), méthodes d’allocation (sequential-fit, buddy-system, segregated-storage), méthodes de défragmentation.
- Infrastructure de jeu (core module):
- Game Loop: états, événements, boucles événementielles, initialisation et terminaison, mesure et gestion du temps, gestion des événements, gestion des processus.
- Graphes de scènes: hiérarchies, attributs géométriques, attributs de rendu, mises à jour géometriques et de rendu, passes de dessin, passe de culling
- Gestion de ressources: formats de ressources (modèles, textures, sons, animations), chargement, compression/décompression, caching, streaming
- Human Interface Devices (HID): types de périphériques, entrées/sorties, analyse d’API périphériques pour consoles, PC & mobiles.
- Etude de quelques design patterns appliqués aux moteurs de jeux: Prototype, State, Singleton, Listener, Observer, Command, Flyweight.
Exemples de projets: analyse de moteurs existants (Unity, UDK, Cryengine, Ogre3D, etc.) ; construction d’un jeu 2D pour PC (avec SDL, SFML, etc.); portage d’un jeu 2D sur mobile/console (optimisation);
Moteurs Graphiques et Audios
ECTS 4
Volume 10 CM / 0 TD / 30 TP
Semestre 3 (parcours ILJ)
L'objectif de ce module est de fournir les concepts, modèles et techniques de programmation graphique dans les jeux.
- Chaines de rendu :
- Ondes, antennes et propagation
- Chaîne standard: object modelling (model transform), scene rendering (view transform, éclairage, projection, clipping & culling), image rasterization
- Cartes graphiques: composants & controlleurs, étude de pipelines (standard, parallèles, hybrides)
- Rastérisation: technologies d’affichage, buffering, blending, interlacing & antialiasing
- Module Graphique :
- Lumière: nature, propriétés, emission, transmission
- Eléments de vision humaine: perception de la lumière, des couleurs, de la profondeur, photométrie
- Couleurs; modèles, transparence, interpolation, rastérisation
- Eclairage temps-réel: sources de lumières, modèles de réflection lumineuse, équations de transmission
- Textures: types, codages, texture filtering, texture mapping, textures fonctionnelles (bump mapping, environment mapping, turbulences, etc.)
- Shading: vertex, pixel & geometry shaders
- Visibilité: problème des surfaces cachées, clipping & culling algorithms, depth-sorting & Z-buffering, niveau de détail
- Module Audio :
- Son: nature, propriétés, emission, transmission
- Eléments d’audition humaine: perception, masquage
- Rendu temps-réel du son
- Effets spéciaux audio (synthèse, mixage, etc.)
- OpenGL(AL) :
- Représentation des objets géométriques
- Chaine de rendu sous OpenGL
- Eclairage, textures, shaders sous OpenGL
- Gestion des sons et de la musique sous OpenAL
Exemples de projets: analyse d'API graphiques (DirectX, Irrlicht, OpenCV, Android SDK, WebGL, etc.); conception d'une chaine de rendu 3D pour mobile, console ou PC; génération procédurale de terrains ; éclairage optimisé d'une scène complexe en 3D (ex: cathédrale) ; rendu sonore 3D d'un environnement urbain sous Unity/UDK ; analyse d'algorithmes et d'effets spéciaux pour le niveau de détail ; etc.
Conférences
ECTS 4
Volume 40 CM / 0 TD / 0 TP
Semestre 4
Cette unité se présente sous la forme d'un cycle de conférences où des professionnels du milieu informatique ou de la recherche en intelligence artificielle présentent leurs expériences professionnelles, des outils et/ou des éléments méthodologiques liés à la gestion de projets, leur sujet de recherche, des technologies émergentes, ... Les années précédentes, les conférences ont porté sur :
- création d'entreprise par l'ADITEC
- accessibilité du web
- la haute disponibilité
- les différents métiers de l'informatique dans une SSII
- la méthodologie RUP (Rational Unified Process)
- la méthodologie SCRUM
- Objective C
- AngularJS
- Swift
- Raisonnement spatio-temporel
- Contraintes qualitatives
- ...
Stage
ECTS 12
Volume 0 CM / 0 TD / 0 TP
Semestre 4
Ce stage d'au minimum 12 semaines correspond au stage de fin d'études. Il commence dès la fin des cours du semestre 4, ce qui correspond au début du mois d'avril et s'étend souvent jusqu'au mois de septembre. Il sera s'effectué en entreprise ou en laboratoire de recherche sur un projet validé par l'équipe pédagogique et fera l'objet d'une soutenance et d'un rapport écrit.
Les soutenances ont lieu généralement la dernière semaine du mois d'août. Des soutenances pourront être organisées en juillet, pour les stages ne durant que 12 semaines.
Java EE
ECTS 5
Volume 20 CM / 20 TD / 30 TP
Semestre 4 (parcours ILI)
Cette unité présente les technologies disponibles pour la conception d’applications web n-tiers en Java, et les méthodes et outils nécessaires à l’industrialisation de la conception d’applications (en Java).
Il s’agit avant tout de découvrir les différents concepts et technologies disponibles dans la bibliothèque standard Java EE. Le cadriciel Spring sera aussi étudié en détail, et utilisé pour mettre en pratique les notions vues dans ce cours.
Mobilité
ECTS 3
Volume 10 CM / 10 TD / 10 TP
Semestre 4 (parcours ILI & ILJ)
L'objectif de ce cours est d'introduire la programmation sur objets mobiles (smartphones, tablettes, ...). Le cours sera principalement orienté sur la programmation sous Android et/ou IOS.
Sécurité des Réseaux et des Programmes
ECTS 3
Volume 15 CM / 15 TD / 10 TP
Semestre 4 (parcours ILI)
L'objectif de ce cours est de compléter l'unité de sécuité informatique 1 du second semestre du master. Le programme de cette unité se focalise en particulier sur les «technologies» de sécurité, la sécurité des programmes du Web et des réseaux.
- Introduction à la sécurité des programmes (principales attaques et menaces, tests, reviews de code, fuzzing, analyse statique, analyse dynamique, vérification, ...)
- Sécurité des programmes C(buffer overflow, interger overflow, tocttou, gestion dynamique de la mémoire, gestion d'erreurs, bonnes pratiques ...)
- Sécurité des programmes Java (modèle de sécurité Java: Vérificateur de bytecode, chargeur de classes et contrôleur d’accès , bac-à-sable, politique de sécurité, API de sécurité JCA/JCE, JAAS, JSSE, bonnes pratiques...)
- Sécurité Web (principales technologies Web (PHP, ASP, JSP, CGI...) et leurs vulnérabilité, exemples d'attaques Web, outils de prévention et détection)
- Sécurité des réseaux :
- rappels de cryptographie, utilisation de gpg, ssh
- protocole SSL/TLS, programmation d'un client/serveur SSL/TLS
- pare-feux : filtrage de paquets (iptables/nft), proxy (squid)
- VPN (utilisation d'OpenVPN, ipsec)
- Kerberos : principe et protocole, utilisation de FreeIPA
- SELinux
Algorithmes pour l'Inférence et les Contraintes
ECTS 5
Volume 30 CM / 20 TD / 20 TP
Semestre 4 (parcours IA)
Le but de ce cours est de s'attaquer à la résolution de problèmes combinatoire difficiles que l'on trouve fréquemment dans divers domaines applicatifs comme par exemple la configuration de produits, la planification, la vérification de matériel et de logiciel ou encore la fouille de données.
Deux modèles d’expression et de résolution de problèmes sous contraintes seront particulièrement étudiés : les problèmes de satisfaction de contraintes (CSP) et le problème de la satisfiabilité propositionnelle (SAT). Pour chacun de ses problèmes, nous décrirons dans un premier temps le formalisme en montrant des exemples de modélisations de problèmes. Ces deux problèmes étant NP-Complets, nous donnerons un aperçu des classes polynomiales connues. Seront ensuite présentés les algorithmes ou solveurs actuels les plus efficaces tout en mettant en avant leurs points forts et leurs limites. Cette présentation sera précédée par un panorama de différents paradigmes de résolutions (algorithmes complets de type retour-arrière et algorithmes incomplets de type recherche locale). Nous aborderons aussi diverses extensions de ces deux modèles permettant par exemple de modéliser et de résoudre des problèmes d’optimisations ou encore d’énumération. Ce domaine de recherche a donnée lieu à une multitude d’outils de modélisation et de résolutions de problèmes sous contraintes qui seront présentés tout le long du cours : Sicstus/Gnu-Prolog, Choco, CPLEX, etc.
Ce cours s’appuie sur une équipe enseignante de l’axe de recherche du CRIL du même nom « Algorithmes pour l’Inférence et contraintes ». Il a donc pour objet de présenter les évolutions les plus récentes dans le domaine.
Paradigmes de l'Apprentissage Automatique
ECTS 3
Volume 20 CM / 0 TD / 0 TP
Semestre 4 (parcours IA)
- Introduction
- Qu’est-ce que l’apprentissage ?
- Types d’apprentissage (exact, statistique, enligne)
- Apprentissage exact (élicitation)
- Concept, représentation, espace des versions
- Modèle “query learning”
- Fonctions logiques apprenables
- Fonction logiques non-apprenables
- Apprentissage statistique
- Minimisation de risque empirique
- Modèle “PAC learning”
- VC-dimension
- Convergence uniforme / non-uniforme
- Apprentissage de fonctions linéaires
- Bases d’optimisation convexe
- Régularisation et stabilité
- Algorithmes de descente de gradient
- Régression linéaire
- Classification linéaire
- Apprentissages de fonctions non-linéaires
- Espaces de motifs
- Méthodes noyaux
- Machines à support de vecteurs (SVM)
- Apprentissage de croyances
- Modèles de représentation de croyances
- Maximum de vraissemblance
- Apprentissage de paramètres (EM)
- Apprentissage de structure (réseaux bayésiens, markoviens)
- Apprentissage de préférences
- Modèles de représentation de préférences
- Ordonnancement
- Prédiction structurelle
- Systèmes de recommandation
- Apprentissage en ligne
- Modèle “online learning”
- Algorithmes d’experts
- Algorithmes de bandits multi-bras
- Algorithmes de prise de décision séquentielle
Décision et Dynamique des Croyances
ECTS 3
Volume 20 CM / 10 TD / 0 TP
Semestre 4 (parcours IA & ILJ)
Le but de ce cours est d'étudier les formalisations mathématiques des processus de décision. On étudiera d'abord la décision individuelle, puis la décision de groupe (théorie des jeux et théorie du choix social).
- Théorie de la Décision
- Utilité
- Utilité espérée
- Axiomatique de Savage
- Décision séquentielle, Planification
- Processus Décisionnels de Markov
- Théorie des Jeux
- Taxonomie des Jeux
- Notion de stratégie
- Stratégie dominante
- Equilibre de Nash
- Jeux répétés
- Jeux coopératifs
- Théorie du Choix Social
- Méthodes de votes
- Propriétés des méthodes de votes
- Théorème d'Arrow
- Manipulation
Moteurs Physiques & IA
ECTS 5
Volume 20 CM / 0 TD / 50 TP
Semestre 4 (parcours ILJ)
L'objectif de ce module est de fournir les concepts, modèles et techniques pour la programmation du comportement des éléments du jeu. Le module se focalise principalement sur la partie physique et IA des jeux.
- Catégories d'objets (particules, déformables, non-déformables, actifs, inactifs)
- Animations :
- Types d'animations, sprites, squelettes, pauses, clips, etc.
- Courbes d'animations : rendu, contrôle de vitesse & caméra
- Techniques d'animations : Skinning, blending, post-processing & compression
- Systèmes de contrôles d'animations : action-state machines, etc.
- Mouvement :
- Particules : cinématique, moteur de particules
- Composants : dynamique linéaire, systèmes de ressorts, systèmes à contraintes, moteurs mass-aggregate
- Objets rigides: dynamique rotationnelle, moments d’inertie, moteurs rigid-body
- Frictions: types de frictions, simulation (impulsions, bruit Gaussien, etc.)
- Techniques spécifiques pour les objets déformables (fluides, habits, etc.)
- Collisions :
- Problèmes de collision
- Volumes englobants: types de volumes & calcul d’enveloppes
- Détection de collisions: algorithmes d’intersection & distance
- Partitionnement spacial: octrees, k-dim trees, BSP trees
- Résolution de collision: systèmes à impulsion, algorithmes d’optimisation
- Agents dans les jeux (NPC) :
- Perception, vue du jeu pour les agents
- Etats mentaux & sociaux: croyances, émotions, utilités, opinions, réputations, etc.
- Machines à états finis, hierarchical FSMs, listes de décision, arbres de décision
- Modèles à base d’utilité, processus de décision Markoviens
- Jeux en forme extensive, jeux stochastiques
- Algorithmes d’IA dans les jeux :
- Pathfinding: A*, IDA*, hierarchical A*, etc.
- Steering behaviors (chasing, evading, etc.), effet de foules (flocking, etc.)
- Motion planning : espaces de configuration (statiques vs. dynamiques), structures spatiales (navigation meshes, diagrammes de Voronoi, probabilistic roadmaps)
- Décisions stratégiques : goal-oriented planning, min-max decision, alpha-beta pruning, monte-carlo tree search, etc.
- Décisions tactiques : “influence grids”, HMMs, etc.
- Décisions collectives : aggrégation d’utilités, de plans, jeux coopératifs, etc.
- Scripting :
- Data Oriented Design
- Langages à script (LUA, Blueprint, Unity Scripting, etc.)
- Gestion de scripts (compilation, serialisation, …)
Exemples de projets: analyse de moteurs physiques (Havok, PhysX, …) ; conception d'un moteur à particules sous Android/IOS; conception d'un moteur physique pour objets 3D non-déformables ; gestion sous CUDA des collisions pour objets 3D complexes ; programmation GPU de mouvement de fluides ; programmation mouvements/formations de groupes ; système d’ombrage temps-réel par collisions ; système de choix d'animation faciale en fonction de l'état mental du personnage ; conception d'un jeu de stratégie/tactique sous Unity/UDK ; ...