La troisième année de licence (L3) est une année d'approfondissement continue et de spécialisation. Chaque semestre comporte des unités d'enseignement obligatoire et optionnelles.
Les approfondissement concernent des matières de génie logiciel, sciences des données, réseaux et systèmes, de programmation et théorie de l'informatique. À chaque semestre, un choix d'options permet d'approfondir certaines matières (interaction humain-machine, intelligence artificielle, informatique théorique) ou de découvrir de nouveaux concepts (bio-informatique, programmation Web, optimisation combinatoire, …).
Au deuxième semestre, une large place est faite à un projet (5 crédits) pour lequel différents sujets sont proposés.
Pré-requis, profil d’entrée permettant d'intégrer la formation
Les pré-requis sont ceux d'une L2 Informatique :
Connaissance des trois paradigmes de programmation
Expérience en programmation et développement logiciel
Bagage mathématique et théorique conséquent : automates, logique, algèbre linéaire
Connaissance de l'architecture des machines et des réseaux
Compétences
Maîtriser les grands paradigme de programmation (Impérative, Objet, Fonctionnel) et les bases du développement logiciel
Utiliser avec aisance les systèmes informatiques (Systèmes d'exploitation, Systèmes d'information)
Modéliser des problèmes concrects par des formalismes informatiques et mathématiques
Évaluer la correction et l'efficacité d'une solution informatique
Organiser et valoriser des données
Utiliser l'outil informatique de manière collaborative
Lieu(x) d'enseignement
La majorité des enseignement s'effectue au PUIO, bâtiment 640, sur le campus du Plateau de Saclay. Certains examens peuvent avoir lieu dans les salles communes de l'Université sur le campus de Bures-Sur-Yvette ou Orsay.
Programmer proprement et efficacement : Programmation, Algos, Structures de données, Complexités.
Programme/plan/contenus :
Petits programmes (puissance(x,n) (ardu: en itératif de complexité log), Hanoï, Ackermann...) et complexités (linéaires, quadratiques, logarithmiques, exponentielles par "effet Fibonacci", etc.)
Programmes sur les listes pile (type listes chainées). Itératif, récursif, récursif terminal. Paramètres in, inout et out (calculs depuis la tête et le fond de liste, exemple ardu: "EstPalindrome" en une passe sur listes simplement chainées). Diviser pour régner (exemple ardu: générer par récursivité et DPR la liste des permutations de [1..n])
Pointeurs, listes chaînées, pointeurs de pointeurs.
Tableaux. Sélections. Parcours (exemple: détecter si un mot donné par tableau est sans carré, en cubique puis, ardu, en quadratique). Dichotomie. Tris simples, rapide, par tas, fusion. Hachage.
Arbres. Programmes sur les arbres. Informations ascendantes et descendantes. (Ardu: donnez une demi-douzaine de façons de faire "EstComplet(A)" en temps linéaire). Parcours et notations préfixe infixe postfixe d'expressions. ABR simples puis équilibrés.
Algo avancée, diviser pour régner (Multiplier deux nombres en mieux que quadratique). Programmation dynamique. (Distance d'édition de deux textes). Backtracking. -Sous réserve de temps-
Responsable : Laurent Rosaz
Pré-requis :
Premières expériences en algorithmique, programmation et complexité (en L1 et L2)
Semestre calendaire :
S5
Modalités pédagogiques particulières
Cours, TD. et projet C. Evaluation par partiel et examen terminal écrit.
L’objectif du cours est de se familiariser avec le formalisme de la logique du premier ordre. La logique est utilisée pour modéliser des problèmes informatiques et comme outil de spécification de contraintes sur des objets informatiques comme des bases de données ou des programmes. Ce cours aborde les notions de démonstration, de validité, le lien entre les objets physiques (syntaxe) et le sens qu'on leur donne (sémantique). Il présente plusieurs techniques de démonstration automatique comme le calcul des séquents et la résolution. Il met en pratique un certain nombre d’outils mathématiques utilisés en informatique, comme les définitions récursives de fonctions, les preuves par récurrence structurelle ou les définitions par règle d'inférence.
Programme/plan/contenus :
Le programme du cours est le suivant :
Langage logique (calul propositionnel et calcul des prédicats), modélisation à l'aide de la logique
Systèmes de règles logiques pour construire des preuves
Termes : signature, preuve par récurrence structurelle, définition récursive de fonctions
Calcul des prédicats : syntaxe, variables libres et liées, sémantique, équivalence
Modèle, modèle de Herbrand
Exemples de théories
Démonstration automatique, formes normales, résolution, séquents
Responsable : Christine Paulin
Pré-requis :
les bases du calcul propositionnel (tables de vérité des connecteurs logiques). Les bases du raisonnement mathématique (définitions, énoncé, preuves).
Semestre calendaire :
S5
Modalités pédagogiques particulières
UE est organisée de manière classique avec des séances de cours et exercices en classe entière suivies de séance de TD. Quelques activités d'apprentissage autonome en ligne sont proposées. L'évaluation repose sur un partiel et un examen final.
Notions théoriques sur les langages formels, techniques de preuve, principe de l'analyse syntaxique ascendante, notions élémentaires de calculabilité.
Programme/plan/contenus :
Le cours se développe comme suit:
Automates finis : non déterminisme, expression rationnelle, preuve du théorème de Kleene (système d'équations associé à un automate), minimisation, résiduels, construction directe de l'automate minimal, lemme de l'étoile, pompage, propriétés de clôture, lien avec l'analyse lexicale.
Grammaires : hiérarchie de Chomsky, grammaire régulière, grammaires hors contexte, Lemme de la double étoile pour les langages algébriques, propriétés de clôture Illustration avec des grammaire de vrai langage de programmation, arbre de syntaxe abstraite
Automates à pile : fonctionnement non-déterministe, terminaison, lien avec les langages algébrique.
Analyse syntaxique ascendante: calcul des tables d'analyse LR(0), SLR(1), gestion des conflits, le cas général LR(1), le cas utilisé en pratique LALR(1).
Calculabilité: Machines de Turing , langage/problèmes indécidables. Le probléme de l'arrêt. Introduction aux classes de complexité, P, NP, problème NP-complet.
Responsable : Frédéric Gruau
Pré-requis :
Automates d'état fini, expressions rationnelles.
Semestre calendaire :
S6
Modalités pédagogiques particulières
Le cours prépare aux TDs, lequels font digérer le cours. L'UE se termine par un TP d'analyse syntaxique. La note de Controle Continu comprends un devoir et/ou mini projet.
Utilisation de technique de traîtement du signal (codes correcteurs, …)
Connaissance du fonctionnement et des protocoles de la couche physique
Connaissance du fonctionnement et des protocoles de la couche de liaison
Programme/plan/contenus :
Pour fonctionner correctement, les réseaux nécessitent un grand nombre d'équipements et de processus, rendant leur architecture souvent complexe. Pour réduire cette complexité, les différentes fonctions ont été décomposées en niveaux protocolaires. Après avoir posé les fondements des télécommunications et rappelé les bases de la transmission de l’information, cette unité d'enseignement détaille les deux premiers niveaux des réseaux, à savoir « physique » (bande passante, débit binaire, codage, …) et « liaison » (codes détecteurs, codes correcteurs, techniques d'accès, …). Les principaux protocoles correspondants sont également présentés. Une série de travaux dirigés et de travaux pratiques permet d’assimiler et d’appliquer les différents concepts étudiés.
Etre capable de programmer, en SQL, PL/SQL et PHP, une application de base de données relationnelle complète gérant en particulier les contraintes d'intégrité, la confidentialité, l'indépendance des niveaux, la reprise sur panne, et le contrôle de concurrence.
Programme/plan/contenus :
Etude des problèmes de bases de données ci-dessus, avec la partie du langage SQL pour les traiter.
Bases du langage PL/SQL : procédures stockées, curseurs, gestion des transactions, triggers.
Initiation à l'accès à une base depuis un langage généraliste (PHP) : modifications, requêtes select et curseurs, appels de fonctions et procédures stockées.
Responsable : Emmanuel Waller
Pré-requis :
conception d'un schéma relationnel, décompositions SPI, manipulations et interrogations de données en SQL.
Semestre calendaire :
S6
Modalités pédagogiques particulières
L'UE s'organise en cours accompagnés de séances de TD/TP.
Dans le génie logiciel, on distingue plusieurs phases dans le processus de développement de logiciels: L'analyse, la conception, le codage, l'intégration, la validation et vérification des composants ou des systèmes entiers. Le cours se concentre sur les deux dernières phases dans du processus de développement, en traitant en profondeur l'aspect modélisation lors de l'analyse, sous l'aspect des méthodes automatisées et des outils. Afin de vérifier un systeme grâce à la génération de tests, par exemple, on a besoin de modèles suffisamment précis.
Programme/plan/contenus :
L'enseignement portera sur les techniques suivantes:
Approfondir les techniques de modélisation en UML avec des annotations formelles
Test de boite-noire à partir d'une spécification
Sequence-Test boite-noire à partir d'une spécification State-Chart
Test de boite-noire de sécurité
Test de boite-blanche à partir de programmes
Fuzz-Testing
Vérification à base des methodes deductives preuves formelles
Responsable: Burkhart Wolff
Pré-requis :
Programmation en Java, bases en modelisation UML, notions en logique (les pré-requis suivent le cours "Eléments de Logique" en parallele)
Semestre calendaire :
S5
Modalités pédagogiques particulières
l'UE est organisée de manière classique avec des séances de cours et exercices en classe entière suivies de séance de TD ou TP. Quelques activités d'apprentissage autonome en ligne sont proposées. L'évaluation repose sur un partiel et un examen final.
concepts fondamentaux de l'apprentissage automatique/statistique
et application à des exemples simples.
Programme/plan/contenus :
Ce cours a pour but d'introduire les concepts de bases de l'apprentissage statistique en les illustrant sur des réseaux de neurones simples et en les appliquants à la reconnaissance de caractères, et ensuite en analysant les résultats obtenus. Dans un second temps, on s'intéressera à l'apprentissage par renforcement consistant à guider l'apprentissage d'un agent autonome en interaction avec un environnement à partir d'expérience. Le cours se abordera les points suivants
La notion de gradient et d'optimisation de fonction de coût
le perceptron multiclasse, et multicouche
les ensembles pour valider l'apprentissage
la notion d'agent en interaction avec un environnement
les équations de Bellman permettan d'évaluer la politique de mouvement pour l'agent
l'apprentissage Q-learning et SARSA
Responsable :
Aurélien Decelle
Pré-requis :
introduction à l'informatique et python, introduction à la programmation impérative, Calculus 1-2, Algèbvre linéaire 1-2, Combi Proba
Semestre calendaire :
S6
Modalités pédagogiques particulières
L'UE s'organise en cours accompagnés de séances de (quelques) TD et de (nombreux) TP.
Attendus de l'UE Langue-Anglais4 : Niveau B2+/C1 dans les 5 compétences linguistiques.
Programme/plan/contenus :
ANGLAIS DE SPÉCIALITÉ. Cette UE s'inscrit dans la continuité de l'UE Langue-Anglais3 et le travail sur la langue de spécialité (scientifique et/ou à visée professionnelle) : on prolongera l'approche actionnelle dans les 5 compétences et on s'attachera à la préparation de l'étudiant aux différentes tâches liées à son activité scientifique telles que la rédaction d'un compte rendu d'expérience, le commentaire d'un graphique, la desciption d'un processus mais aussi à son insertion dans le monde professionnel : rédaction d'un CV ou d'une lettre de motivation en vue d'un stage... On proposera une initiation au débat ainsi qu'un entraînement à la certification CLES 2. Le travail se fera par groupes de niveau.
Travail sur une base de code conséquente nécessitant l'utilisation de technique de génie logiciel et de conduite de projet.
Programme/plan/contenus :
Projet de second semestre. Ce projet est usuellement réalisé en binôme. Plusieurs types de projets sont proposés, par exemple :
Projet de Génie logiciel
Projet de programmation fonctionnelle Avancée
Projet autour du traîtement de données
Chaque projet donne lieu à un rendu (code, rapport) et à une soutenance. Les étudiants sont laissés en semi-autonomie (salles de TP réservées, points réguliers avec leur responsable de projet).
Connaitre les limites théoriques de l'algorithmique et comprendre pourquoi et à quel point certains problèmes sont intrinsèquement difficiles.
Programme/plan/contenus :
Introduction rapide aux automates. Machines de Turing déterministes. Variantes. Indécidabilité. Problème de l'arrêt. Réductions. Rice. Post. Machines de Turing non-déterministes. NP. Certificats et vérifications. Réductions polynomiales. NPcomplétude. SAT. Cliques. Hamiltonien. 3Coloriages. SacADos. Algos d'approximation. Ardu : Autres classes: Hiérarchies, L, NL, PSPACE.
Responsable : Laurent Rosaz
Pré-requis :
Avoir des notions d'algorithmique, distinguer le polynomial de l'exponentiel. Etre capable de faire des raisonnements (preuves par l'absurde, preuves parfois abstraites) et avoir un certain sens combinatoire.
Semestre calendaire :
S6
Modalités pédagogiques particulières
Cours et TD. Évaluation par un partiel et un examen terminal écrit.
Ce cours permet de se familiariser avec quelques cadres génériques de résolution de problèmes, dans le but de concevoir des agents intelligents. L'accent est mis sur des algorithmes de recherche permettant d'explorer efficacement des espaces de recherche (modélisés par des arbres et/ou des graphes) généralement de trop grande taille pour pouvoir être représentés exhaustivement.
Programme/plan/contenus :
Le cours aborde différents cadres de formalisation.
La première partie étudie celui des jeux avec adversaires (e.g. Echecs, Dames, Othello, …). Elle présente la notion de stratégie de jeu, des techniques d'estimation de configuration, le principe d'une recherche Minimax et présente différents algorithmes permettant, à partir d'une simple description des règles d'un jeu, d'explorer efficacement l'ensemble des parties possibles (e.g. AlphaBeta, NegEchecAlphaBeta, MTDf,...).
La seconde partie s'intéresse aux problèmes pouvant se formaliser en termes d’états et d’opérateurs de changements d’états. Leur résolution s'apparente alors à la recherche d'un chemin solution dans un graphe. Différents algorithmes d'exploration sont présentés et comparés. Certains d'entre eux exploitent des informations heuristiques sur les états pour les guider plus efficacement vers le but à atteindre.
Le cours introduit également quelques notions de représentation de connaissance et de raisonnement, centrales en Intelligence Artificielle, par le bais des systèmes à bases de connaissances. Differents niveaux de langages sont illustrés et les principes de base des moteurs d'inférences (chaînage avant, arrière ou mixte) permettant de raisonner efficacement sur des bases de connaissances sont introduits.
Responsable: Philippe Chatalic
Pré-requis :
Concept de base en langage Java (Classes, Héritage, Interfaces),
Algorithmique et structures de données de base (séquences, arbres, graphes)
Semestre calendaire :
S6
Modalités pédagogiques particulières
Le cours équilibre les dimensions théoriques et pratiques. Les techniques présentées sont mise en oeuvre au travers d'un ou plusieurs projets, comme par exemple la réalisation de joueurs intelligents s'affrontant au travers d'un tournoi. Le langage de programmation utilisé est Java.
UE Réseaux de L2 et Réseaux avancés de L3, UE Système de L3
Modalités pédagogiques particulières
Cette UE est structurée en séances de cours (en début d'UE pour présenter les concepts) suivi de séances de TP permettant de réaliser l'application choisie.
Elle est évaluée par des soutenance du projet et un examen.
Partir de problèmes réels pour proposer des formulations mathématiques (modélisation sous forme de programmes mathématiques et graphes) traitées par des techniques d'optimisation combinatoire exactes et approchées.Une mise en œuvre informatique des méthodes sera réalisée.
Programme/plan/contenus :
De nombreux problèmes réels sont intrinsèquement des problèmes d'optimisation combinatoire. L'idée de cette unité d'enseignement est d'aborder les problèmes classiques d'optimisation ainsi que ses techniques de résolution en partant d'applications que l'on retrouvent dans le monde réel (réseaux, Internet des Objets, traitement des données, gestion des stocks).
Responsable : Dominique Quadri
Pré-requis :
Notions de base de l'algèbre linéaire, bases de la programmation
Semestre calendaire :
S5
Modalités pédagogiques particulières
Cours, TD, TP. Évaluation par controle continu (Partiel, interrogation, projets, …) et examen terminal écrit.
Introduction aux problématiques de Bioinformatique. Mise en application des compétences acquises en bases de données et en programmation sur des projets impliquant des données massives et hétérogènes réelles de biologie moléculaire.
Programme/plan/contenus :
Introduction à la bioinformatique et à la biologie moléculaire. Deux mini projets encadrés représentatifs des analyses de données bioinformatiques.
Interrogation de bases de données biologiques réelles et mise en évidence des caractéristiques fortes (massives, hétérogènes) de ces données; Conception et implémentation d’une base de données biologique fonctionnelle depuis des données réelles (format XML), développement d'un parseur en python pour le remplissage de la base, interfacage de la base en PHP pour son interrogation via des formulaires.
Analyse de données phylogénétiques. Introduction à la phylogénie, algorithmes de contruction d'arbres phylogénétiques, Implémentation d’un pipeline d’analyse phylogénétique.
Responsable: Sarah Cohen-Boulakia
Pré-requis :
Savoir développer dans un langage de programmation impératif ou objet; savoir développer en SQL (création de schémas, remplissage simple d'une base de données, interrogation simple).
Semestre calendaire :
S5
Modalités pédagogiques particulières
L'UE comporte des séances de cours en classe entière dédiée aux spécificités des données bioinformatique et des traitements algorithmiques sur ces données. Des exercices de mise en application en TD/TP suivent systématiquement. Les projets sont effectués à moitié sur les heures encadrés et à moitié sur le temps étudiants (hors présence enseignant).
Environnement économique et juridique de l'entreprise, outils et techniques de gestion
Modalités pédagogiques particulières
Cette UE comprend deux modules :
Marketing stratégique : démarche marketing (marché, marque, segmentation, ciblage et positionnement) et élaboration d'un lan marketing, le B to C versus le B to B, la place du marketing digital et le marketing international (internationalisation, modes d'implantation à l'étranger).
Un projet tutoré permettant aux étudiants d'élaborer des décisions stratégiques sur la base de leur analyse financière, concurrentielle, commerciale, productive de leur entreprise. Cela pourra pendre la forme d'un business game en équipe, ou d'un projet de création d'entreprise avec l'élaboration d'un business plan.