Mathématiques pour l'Informatique
Crédits ECTS : 5
Semestre d'enseignement :
S3
Volumes horaires : CM : 18, TD : 24
Descriptif :
Ce cours introduit le langage propositionel et les propriétés fondamentales qui s'y appliquent. On en déduit la construction des ensembles et leurs propriétés. Les notions de surjectivité, injectivité et bijectivité sont introduites. Toutes ces notions debouchent naturellement sur la notion de dénombrement des ensembles. On rappelle des notions de probabilités discrètes, conditionnement et indépendance des évenements.
Le cours s'achève avec les lois de probabilités, et quelques notions pour caractériser des distributions discrètes ou continues (moments d'une loi). On introduit également quelques bases de statistiques, en complément. Cette partie consitue une formalisation et une suite de info 114. Selon les besoins, des rappels d'algèbre sont prodigués.
Responsable: François Landes
Objectifs d'enseignement :
Introduction au langage et aux méthodes mathématiques propres à l'informatique. D'une part, le langage propositionel et ce qui en découle d'une part, qui sont nécessaires pour aborder plus tard les preuves de programmes ou certaines méthodes pour les graphes. On insiste en particulier sur la rigueur des démonstrations. D'autre part, les probabilités et statistiques, qui sont indispensables en science des données.
Organisation de l'UE :
L'UE s'organise en cours accompagnés de séances de TD. L'évaluation se fait en partie par devoirs maisons (DM) c.a.d. contrôle continu, et d'examens écrits en temps limités (un partiel et un examen final). Il peut y avoir une occasionnelle séance de TP (python), et certains des DM peuvent être des mini-projets (python) à rendre. Responsable: François Landes
Pré-requis :
Introduction à la Science des Données #1 (info 114), notions de base d'algèbre, notions de base de calcul (sommes, intégrales, fonctions, dérivées) notions de base de python.
Introduction Programmation Fonctionnelle
Crédits ECTS : 3
Semestre d'enseignement :
S3
Volumes horaires : CM : 9, TP : 12
Descriptif :
La programmation fonctionnelle est l'un des grands paradigmes de programmation. À l'inverse de la programmation impérative, axée sur la modification de valeurs en mémoire, la programmation fonctionnelle mets l'accent sur la notion de calcul (qui renvoie un résultat). L'UE aborde les concepts suivant :
-
Introduction au langagae OCaml
-
Programmation récursive sur les entiers
-
Types structurés (types algébriques, enregistrements) pour la modélisation de problèmes
-
Structure de listes persistantes et récursion structurelle
-
Iterateurs génériques sur les listes
Objectifs d'enseignement :
Introduction du paradigme de programmation fonctionnelle. Ce cours donne les bases de la programmation applicative (sans effets de bords) et récursive. Il met en avant la notion de fonction, en tant qu'objet de premirère classe du langage (au même titre que les entiers, les chaînes de caractères, …). Le cours propose aussi une introduction au langage OCaml.
Organisation de l'UE :
L'UE s'organise en cours accompagnés de séances de TD ou TP. L'évaluation se fait par des épreuves de contrôle continu (interrogations écrites, TP notés, devoirs) et un examen terminal écrit.
Pré-requis :
Notions de bases de programmation. Connaîssance des structures de liste chaînées et algorithmes associés (parcours, insertion, tris, …)
Outils Logiques et Algorithmiques
Crédits ECTS : 5
Semestre d'enseignement :
S4
Volumes horaires : CM : 18, TD : 24
Descriptif :
Introduction de structures mathématiques utiles en informatique, leur utilisation pour modéliser un problème à résoudre, techniques de raisonnement et algorithmes associés.
- Graphes (chemins, parcours, connexité, coloration)
- Arbres (exploration, arbres de recherche)
- Définitions par clôture (définition et raisonnement par récurrence)
- Termes (manipulation symbolique de formules ou de programmes)
- Relations d’équivalence (classes, union-find)
- Relations d’ordres (terminaison, treillis, point fixe)
Le cours insiste sur l’utilisation rigoureuse des outils de modélisation et de raisonnement. Il fait également le lien avec la manipulation concrète de ces outils pour la résolution d’un problème donné, et contient pour cela une petite dose de programmation en OCaml.
Responsable : Thibaut Balabonski
Objectifs d'enseignement :
Étudier des structures permettant de modéliser et résoudre des problèmes informatiques, et apprendre à raisonner sur ces structures. Le cours mélange des aspects mathématiques et algorithmiques, et vise à la fois à découvrir des structures de données et algorithmes fondamentaux en informatique et à affûter ses capacités de raisonnement.
Organisation de l'UE :
L’UE s’organise en cours accompagnés de TD ou TP. L’évaluation se fait par des épreuves de contrôle continu (interrogations ou TP notés) et deux épreuves écrites (partiel et examen terminal).
Pré-requis :
notions de bases de logique, d’ensembles, d’algèbre (mathématiques pour l’informatique), introduction à la programmation récursive.
Principes d'Interprétation des Langages
Crédits ECTS : 4.5
Semestre d'enseignement :
S4
Volumes horaires : CM : 18, TP : 10, TD : 14
Descriptif :
- Généralités sur la compilation, l'analyse lexicale, syntaxique, sémantique. Notion de langage formel et lien avec les langages informatiques (de description, de programmation).
- Langages rationnels et analyse lexicale
- Expressions rationnelles et rationnelles étendues
- Automates finis et langages reconnaissables, théorème de Kleene (sans démonstration), automates déterministes, algorithme de déterminisation
- Bases de l'analyse lexicale
- Bases de lex et applications en TP
- Grammaires et analyse syntaxique
- Notion générale de grammaire.
- Grammaires algébriques (ou hors-contexte) et langages algébriques ; arbres de dérivation ambiguïté, syntaxe abstraite, priorité
- Analyse syntaxique : algorithme CYK, analyse LL(1)
- Bases de yacc et applications en TP
- Analyse sémantique et génération de code
- Définitions dirigées par la syntaxe (grammaires attribuées)
- Génération de code intermédiaire (code à trois adresses)
Responsable : Alain Denise
Objectifs d'enseignement :
Compréhension des bases de l'analyse lexicale, syntaxique, sémantique et de certains outils de leur réalisation.
Organisation de l'UE :
Cours TD, TP. Un TP noté, un examen final sur table.
Pré-requis :
Notions de base en algorithmique, programmation basique en langage C
Architecture des Ordinateurs
Crédits ECTS : 5
Semestre d'enseignement :
S3
Volumes horaires : CM : 18, TP : 24
Descriptif :
Ce cours a pour but d'introduire les mécanismes à l'oeuvre au sein d'un ordinateur, aussi bien à un niveau logiciel (programmation assembleur) qu'à un niveau plus fondamental sur le fonctionnement des circuits logiques et de l'algèbre booléenne. On verra en particulier
- la représentation de l'information (nombres entiers, flottants, caractères) ainsi que les opérations arithmétiques en binaire.
- une architecture logicielle MIPS32 : un jeu d'instruction RISC et la réalisation des fonctions essentielles d'un langage de haut niveau impératif.
- les circuits combinatoires et séquentielles (fonctions élémentaires à l'aide de circuits, bits de mémoire)
- une micro-architectuer non-pipelinée
- une introduction au concept de pipeline
La première partie du cours aura pour but de se familiariser avec le binaire, la représentation de l'information et le codage de fonctions de haut niveau en assembleur. La seconde partie aborde les circuits combinatoires et séquentielles ainsi que la micro-architecture.
Responsable : Aurélien Decelle
Objectifs d'enseignement :
comprehénsion des mécanismes fondamentaux d'un ordinateurs et comment ceux-ci interviennent dans le développement de haut-niveau
Organisation de l'UE :
L'UE s'organise en cours accompagnés de séances de TD et de TP. L'évaluation sera faite par contrôle continu (rendus de TPs, interro) ainsi qu'un partiel à mi-semestre et un examen.
Pré-requis :
Aucun
Réseaux
Crédits ECTS : 5
Semestre d'enseignement :
S3
Volumes horaires : CM : 18, TP : 24
Descriptif :
L’UE détaille les principes et protocoles de l’architecture TCP/IP, plus particulièrement des couches réseau et transport. Le contenu du cours est le suivant : - Généralités sur les réseaux informatiques, architecture en couches OSI - Commutation en mode circuit et en mode datagramme - Protocoles de routage dans un réseau : les algorithmes de routage - Couche réseau IP : communication et nommage, adressage IPv4 et IPv6, masques et préfixes, structure des entêtes et services de la couche réseau, NAT, DHCP, ARP et NDP, gestion des erreurs : protocole ICMP. - Couche Transport : TCP et UDP, services et fonctionnalités, TCP : contrôle de flux et fenêtre glissante, contrôle de congestion et ses évolutions, évolutions de TCP. - Programmation sockets pour implémenter le fonctionnement des protocoles TCP et UDP.
Responsable : Lila Boukhatem
Objectifs d'enseignement :
Comprendre et maitriser les différents mécanismes et protocoles de communication des réseaux informatiques.
Organisation de l'UE :
L'UE se sompose de cours, travaux dirigés et des travaux pratiques. Le contrôle continu comprend un partiel et un TP noté. L'épreuve terminale est un examen écrit.
Pré-requis :
Programmation en C
Bases de données 1
Crédits ECTS : 5
Semestre d'enseignement :
S4
Volumes horaires : CM : 18, TP : 24
Descriptif :
Le contenu du cours est le suivant : 1. L'introduction apporte une vision globale du développement des SGBSs ainsi que des grandes fonctionnalités de ceux-ci. 2. Conception d’un schéma relationnel. Il s’agit de savoir définir un schéma relationnel complet et correct, comprenant des tables, des contraintes, des vues. 3. Langages d’interrogation et de manipulation. L’accent est mis sur SQL et ses fondements.
Responsable : Nicole Bidoit
Objectifs d'enseignement :
Étude des principes des Systèmes de Gestion de Bases de Données (SGBD) relationnels et mise en pratique de ces principes
Organisation de l'UE :
Des travaux dirigés et des travaux pratiques avec un SGBD (PostgreSQL ou ORACLE) permettent de mettre en oeuvre les techniques étudiées en cours. Les étudiants développeront une mini-application permettant d'intégrer les différents concepts de bout en bout. Contrôle continu : partiel (QCM avancé) + TP noté
Épreuve terminale : examen écrit
Pré-requis :
- Programmation
- Architecture des ordinateurs
Introduction à la Science des données 2
Crédits ECTS : 2.5
Semestre d'enseignement :
S4
Volumes horaires : TP : 24
Descriptif :
La "science des données" occupe une place centrale dans ce que nous appelons de nos jours "intelligence artificielle" car les "machine intelligentes" modernes sont douées d'apprentissage par l'exemple. Cet enseignement sous forme de projet vous permettra d'approfondir les notions acquise en L1 (Introduction à la Science des Données #1). Les étudiants de master vous auront préparé des projets juste pour vous, sous forme de mini-challenges, sur des sujets très variés: recommandation de films ou de restaurants, la reconnaissance des images d'animaux, de plantes, d'objets ou de personnes, le dépistage des maladies ou l'évaluation de l'efficacité de médicaments, l'identification des bons ou des mauvais payeurs, de clients potentiels, ou de fraudeurs, etc. Votre mission sera de résoudre ces challenges en utilisant des outils Python tels que scikit-learn et keras. Vous travaillerez pas groupes de 6, comportant 3 binômes, chacun en charge d'un aspect du projet: visualisation, preprocessing, ou prédiction (classification ou regression).
Responsable : Isabelle Guyon
Objectifs d'enseignement :
L'objectif de ce cours est de se familiariser avec la Science des Données et la programmation en Python en s'amusant.
Organisation de l'UE :
L'UE est constitué de séances de TP. L'évaluation se fait par du contrôle continu et d'une note de projet.
Organisation de l'UE :
Pré-requis :
Introduction à la Science des Données 1
Introduction Programmation Objet
Crédits ECTS : 5
Semestre d'enseignement :
S3
Volumes horaires : CM : 18, TP : 24
Descriptif :
Objectifs d'enseignement :
Principes de la programmation orientée objet, utilisation standard du langage java, notions d'environnements de développement
Organisation de l'UE :
Cours magistraux et TP encadrés, mini projet partiellement encadré. Évaluation : partiel, mini projet et examen final
Pré-requis :
Fondamentaux de la programmation impérative et des structures de données, notion de modularité
Introduction à l'Interaction Humain-Machine
Crédits ECTS : 2.5
Semestre d'enseignement :
S3
Volumes horaires : CM : 9, TP : 12
Descriptif :
Ce cours débute par un bref panorama du domaine de l'interaction humain-machine et introduit les concepts de base de l'interaction du point de vue de l'utilisateur humain et du point de vue de l'ordinateur. Il aborde ensuite la conception et l'évaluation d'interfaces utilisateur par l'intermédiaire d'un ensemble d'exercices permettant à l'étudiant de développer son sens critique et de mettre en pratique un ensemble de techniques de base pour concevoir des interfaces plus adaptées aux besoins et caractéristiques des utilisateurs. Le module met l'accent sur les techniques de prototypage rapide, qui ne nécessitent pas de développement logiciel et qui pourront être appliquées avec profit dans d'autres modules nécessitant le développement d'interfaces utilisateurs.
Plan du cours : Bref historique de l'Interaction Humain-Machine Panorama des styles et techniques d'interaction
- Eléments de psychologie humaine (perception / action / cognition)
- Architecture logicielle des systèmes interactifs
- Analyse critique d'interfaces
- Conception et prototypage rapide
- Evaluation qualitative et quantitative des interfaces
Responsable : Michel Beaudouin-Lafon
Objectifs d'enseignement :
Comprendre et mettre en pratique les principes de base de la conception et de l'évaluation des systèmes interactifs
Organisation de l'UE :
Le module est organisé en 6 séances d'1h ½ de cours et 6 séances de 2h de TD/TPs. L'évaluation consiste en un contrôle continu (questionnaires en ligne, rendus de TD/TPs) et un examen de fin de module.
Pré-requis :
Aucun
Programmation Objet et Génie Logiciel
Crédits ECTS : 5
Semestre d'enseignement : Volumes horaires : CM : 18, TP : 24
Descriptif :
Ce cours pratique un aller-retour permanent entre des aspects de programmation objet (PO) et d’ingénierie du logiciel (GL). Thèmes abordés en programmation Java :
- Classes, interfaces, classes paramétrées
- Héritage et liaison dynamique
- Itérateurs et lambda-expressions
Thèmes abordés en génie logiciel :
- Analyse et modélisation des besoins d’un système
- Conception d’une architecture logicielle et d’une organisation de classes pour réaliser un système
- Langage de modélisation graphique UML
- Spécification d’un composant ou d’une opération
- Validation et test d’un composant
Objectifs d'enseignement :
Approfondissement des concepts de la programmation objet, avec utilisation avancée du langage Java. Connaissance du cycle de vie des logiciels et des processus de développement. Outils de modélisation de systèmes logiciels et de support au développement à grande échelle. On vise à la fois la virtuosité dans la programmation d’un composant donné et la capacité à insérer ce composant dans un projet plus large. À la fin, l’étudiant doit être capable de produire du code Java lisible, robuste et réutilisable, ainsi que de lire le code source de projets réels.
Organisation de l'UE :
l’UE s’organise en cours accompagnés de TD ou TP. L’évaluation se fait par des épreuves de contrôle continu (TP notés ou mini-projets) et deux épreuves écrites (partiel et examen terminal).
Pré-requis :
S4
Informatique Graphique pour la Science des Données
Crédits ECTS : 4.5
Semestre d'enseignement :
S4
Volumes horaires : CM : 18, TP : 24
Descriptif :
Ce cours aborde les aspects 2D et 3D du graphisme qui permettent de construire des visualisations interactives de données. Sans aborder les problèmes de réalisme ce cours s'attache à comprendre le pipeline graphique et comment l'utiliser pour faire passer à l'échelle un système de visualisation de grandes quantités de données. Par ailleurs le besoin de rendre les systèmes interactifs implique également de mettre en oeuvre des graphismes performants qui permettent l'exploration des données sans attendre le système.
Responsable : Frédéric Vernier
Objectifs d'enseignement :
acquisition des compétences particulières de la mise en place d'un affichage 3D. Maîtrise de l'ensemble du pipeline graphique des données jusqu'à l'affichage sur GPU.
Organisation de l'UE :
6CM sur le pipeline graphique performant et l'algorithmique graphique et 6CM sur la mise en œuvre dans un environnement concret. 4 TD sur l'algorithme graphique et 6 séance sur un mini projet.
Pré-requis :
Introduction au Graphisme et aux Systèmes Interactifs