L'apprentissage automatique est devenu indispensable dans la plupart des applications récentes. Par exemple, on peut retrouver les algorithmes d'apprentissage automatique dans les moteurs de recherche, les réseaux sociaux, la reconnaissance d'objets, le bio-informatique, etc.  Cette unité se focalise pleinement sur l'utilisation en pratique de  l'apprentissage automatique. Elle étudie en particulier des algorithmes de prédictions sur des vrais jeux de données. Après un rappel des concepts de base de l'apprentissage automatique, les étudiants apprendront, dans un premier temps, les concepts clés liés à l'utilisation des cardriciels  d’apprentissage automatique tels que TensorFlowTM (https://www.tensorflow.org), Keras (https://keras.io) et PyTorch (https://pytorch.org). Dans un deuxième temps, les étudiants découvriront comment développer, en utilisant ces outils, des algorithmes d'apprentissage et évaluer leur performance sur des données issues des applications réelles, comme par exemple des applications de traitement d'images ou de recommandation de produits.

Le cours de complexité est centré sur les questions de calculabilité et de complexité de problèmes. Y sont abordés différents modèles de calcul (dont la machine de Turing), les réductions fonctionnelle et de Turing, la hiérarchie arithmétique, celle de Chomsky, la NP-complétude, les réductions polynomiales (Karp et Cook) et la hiérarchie polynomiale.

Cours de réseau dispensé au semestre 1 du Master Informatique.


L’ensemble du cours se focalise sur le développement d’applications dans l’environnement Android et présente les aspects théoriques et techniques de ce système (Mécanismes de call back, Activités, Services, Intents, Concurrence, utilisation des ressources, etc…). L’objectif est qu’à la fin de l’année l’étudiant soit capable d’une part de comprendre les principes de fonctionnements  et de programmation sous ce système et de mettre en pratique ses connaissances pour développer une application de bout en bout (projet de fin d’année).


Le concept de DevOps pour un développeur peut être défini comme la capacité de comprendre tous les processus nécessaires du développement d'une application à sa mise en oeuvre en production et sa maintenance en conditions opérationnelles.

Cette unité d'enseignement a pour vocation de conceptualiser et de mettre en pratique les différents éléments d'une chaine d'industrialisation du développement, à l'aide principalement d'outils comme docker et gitlab-ci.

L'objectif de cette unité est la présentation des systèmes d'exploitation et de leur programmation.

  • 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)

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
  • Optimisation
    • Tâches de maintenance du SGBD

  • 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);


    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.

    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

    Ensemble des ressources du cours de "Science de données" encadré par Anicet Bart.

    Cours Moodle à utiliser pour communiquer entre  enseignants intervenant en master 1 Informatique et entre enseignants et étudiants du master 1 Informatique.

    Cours de Fouille de données en Master 2

    Cours Moodle à utiliser pour communiquer entre  enseignants intervenant en master 2 Informatique (parcours IA, ILI et ILJ) et entre enseignants et étudiants du master 2 Informatique.

    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.