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.
- Enseignant(e): Said Jabbour
- Enseignant(e): Lakhdar Sais
- Enseignant(e): Pierre Marquis
- Enseignant(e): Sebastien Konieczny
- Enseignant(e): Thomas Bailleux
- Enseignant(e): Zied Bouraoui
- Enseignant(e): Naim Es-Sebbani
- Enseignant(e): Astrid Klipfel
Un cours dédié au fonctionnement de docker et de GitLab CI
- Enseignant(e): Farid Ait Karra
- Enseignant(e): Daniel Le Berre
- Enseignant(e): Bruno Verachten
- Enseignant(e): Karim Tabia
Ce cours ce veut un introduction à la programmation CUDA.
- Enseignant(e): Jean-Marie Lagniez
Cours Java 2 Enterprise Edition
- Enseignant(e): Arthur Caron
- Enseignant(e): Nicolas Grenier
- Enseignant(e): Aurelie Ignaszak
- Enseignant(e): Gautier Roussel
- Enseignant(e): Daniel Le Berre
Meta-cours contenant toutes les informations pour les étudiants de master 2 informatique (parcours IA, ILI et ILJ)
- Enseignant(e): Farid Ait Karra
- Enseignant(e): Salem Benferhat
- Enseignant(e): Anthony Blomme
- Enseignant(e): Zied Bouraoui
- Enseignant(e): Arthur Caron
- Enseignant(e): Julien Caron-Boilly
- Enseignant(e): Cyrille D'Halluin
- Enseignant(e): Tiago De Lima
- Enseignant(e): Fabien Delorme
- Enseignant(e): Said Jabbour
- Enseignant(e): Astrid Klipfel
- Enseignant(e): Jean-Marie Lagniez
- Enseignant(e): Dominique Laurent
- Enseignant(e): Daniel Le Berre
- Enseignant(e): Pierre Marquis
- Enseignant(e): Bertrand Mazure
- Enseignant(e): Anne Parrain
- Enseignant(e): Olivier Roussel
- Enseignant(e): Karim Tabia
- Enseignant(e): Bruno Verachten
- Enseignant(e): Romain Wallon
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);
- Enseignant(e): Olivier Roussel
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 :
- Enseignant(e): Tony Ghilain
- Enseignant(e): Olivier Roussel
- Enseignant(e): Jean-Marie Lagniez
Cours de mobilité (développement d'application sur appareil mobile).
Développement sous Android
- Enseignant(e): Cyrille D'Halluin
L'objectif de ce module est de fournir les concepts, modèles et techniques de programmation graphique dans les jeux. Tous les TPs sont
faits sous UNREAL Engine 4.
- 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.)
- Enseignant(e): Frederic Koriche
- Enseignant(e): Tiago De Lima
Le cours sur les paradigmes de l'apprentissage machine donne les bases théoriques de ce domaine. Voici le plan général
- 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
- Réseaux de neurones
- Apprentissage en ligne
- Modèle “online learning”
- Algorithmes d’experts
- Algorithmes de bandits multi-bras
- Apprentissage par renforcement
- Enseignant(e): Zied Bouraoui
- Enseignant(e): Frederic Koriche
Cours de programmation logique :Master 2 IA
- Enseignant(e): Lakhdar Sais
- Enseignant(e): Salem Benferhat
- Enseignant(e): Karim Tabia
- Enseignant(e): Fabien Delorme