Catalogue des cours
Sommaire
- Au département d'informatique à l'ENS Paris-Saclay
- ALG1 : Algorithmique
- AOS1 : Architecture et système d'exploitation
- CCO1 : Calculabilité et complexité
- MDI1 : Mathématiques discrètes
- PCF1 : Programmation : concepts et fondements
- LAF2 : Langages formels
- LOG2 : Logique
- LAL2 : Lambda-calcul et logique
- PAV2 : Programmation avancée
- PBD2 : Projet BD
- PLO2 : Projet logique
- PPR2 : Projet programmation
- Au département de mathématiques à l'ENS Paris-Saclay
- AFH1 : Analyse de Fourier et Hilbertienne
- INP1 : Intégration et probabilités
- EDO1 : Analyse numérique des EDO
- ALI2 : Algèbre linéaire
- ANC2 : Analyse complexe
- MIN2 : Mini-cours
- Au département d'informatique à l'ENS PSL
- AST2 : Apprentissage statistique
- BD2 : Bases de données
- ICR2 : Initiation à la cryptologie
ALG1 : Algorithmique
| Credits : | 6 ECTS |
| Nombre d'heures : | 56 (+14 renforcement) |
| Type : | Leçons, Travaux dirigés |
| Evaluation: | Contrôle continu, Examen |
| Public : | Info et Math-Info |
| Responsables : | Thomas Nowak, Thomas Chatain, Jean Goubault-Larrecq |
Objectifs : Le but de ce cours est d’acquérir une maîtrise des concepts de base et de certains concepts avancés de l’algorithmique et des structures de données, ainsi que de maîtriser le calcul de leur complexité et les preuves de correction.
Les concepts abordés concernent les paradigmes algorithmiques, les algorithmes sur les structures de données linéaires, arborescentes et sur les graphes.
En savoir plus...
AOS1 : Architecture et système d'exploitation
| Credits : | 6 ECTS |
| Nombre d'heures : | 56 (+14 renforcement) |
| Type : | Leçons, Travaux dirigés et pratiques |
| Evaluation: | Contrôle continu, Projet, Examen |
| Public : | Info |
| Responsables : | Stefan Schwoon |
Objectifs : Le cours se propose d'introduire les principes de l'architecture
matérielle classique (dite de von Neumann) ainsi que ses évolutions
récentes (hierarchies de mémoire, pipeline) et la programmation en
assembleur. Dans la partie système d'exploitation, l'architecture à
noyau est étudiée pour sa gestion des processus, de la mémoire, des
fichiers et des entrées/sorties, en inclus sur réseau. Les compétences
acquises seront exercées par deux projets, la conception d'un
micro-processeur et la programmation d'un shell.
En savoir plus....
CCO1 : Calculabilité et complexité
| Credits : | 6 ECTS |
| Nombre d'heures : | 56 (+14 renforcement) |
| Type : | Leçons, Travaux dirigés |
| Evaluation: | Contrôle continu, Examen |
| Public : | Info et Math-Info |
| Responsables : | Philippe Schnoebelen, Jean Goubault-Larrecq |
Objectifs : Le but de ce cours est de comprendre les limites de ce qui est
calculable d'une part, et de ce qui est calculable efficacement d'autre
part. Il sera donc question, dans une première partie (calculabilité)
des modèles de calculs, au premier rang desquels les machines de Turing,
mais aussi les fonctions récursives. On y verra que certains langages,
au premier rang desquels le problème de l'arrêt, sont indécidables. Dans
la deuxième partie (complexité), il sera question de savoir ce qu'on
peut calculer ou non sous des contraintes de temps, ou d'espace. La
NP-complétude, et la complétude pour d'autres classes de complexité,
sera étudiée. La notion de réduction sera importante dans les deux
parties.
En savoir plus...
MSI1 : Mathématiques discrètes
| Credits : | 6 ECTS |
| Nombre d'heures : | 56 (+14 renforcement) |
| Type : | Leçons, Travaux dirigés |
| Evaluation: | Contrôle continu, Examen |
| Public : | Info |
| Responsables : | Stéphane Le Roux |
Objectifs : L'objectif est de donner aux étudiant.es une culture des mathématiques,
surtout discrètes mais pas uniquement, requise pour suivre les cours de
L3 et du M1 MPRI. Le cours est composé de deux parties. La première
partie (6 séances) se concentre sur la théorie des ensembles ; la
seconde partie (8 séances) aborde des notions de combinatoire,
structures ordonnées, points fixes, récurrences, monoïdes et
probabilités.
En savoir plus...
PCF1 : Programmation : concepts et fondements
| Credits : | 6 ECTS |
| Nombre d'heures : | 56 (+14 renforcement) |
| Type : | Leçons, Travaux dirigés et pratiques |
| Evaluation: | Contrôle continu, Projet, Examen |
| Public : | Info |
| Responsables : | Jean Goubault-Larrecq, Mihaela Sighireanu |
Objectifs : Ce cours est d'abord une introduction aux différents paradigmes des
langages de programmation, des constructions typiques de ces langages et
de ce qui fait que certains sont dits impératifs et d'autres
fonctionnels par exemple. Il y sera question de portée (lexicale,
opposée à la liaison dynamique), de passage de paramètres, de
constructions de types de données, de compilation et de représentation
en mémoire des objets. La définition formelle des langages de
programmation (lexique, syntaxe et sémantique) sera abordée en utilisant
les notions d'expressions régulière, de grammaire non-contextuelles et
de traduction et interprétation orientées par la syntaxe. Ces notions
seront mises dans le contexte d'un interpréteur ou d'une chaine de
compilation. La question de savoir ce qu'un programme fait mènera à la
notion de sémantique, opérationnelle ou dénotationnelle. On évoquera
comment ces sémantiques justifient la correction de logiques comme la
logique de Hoare. La notion de systèmes de types sera étudiée, et
notamment le fait qu'un programme bien typé offre des garanties
d'absence d'erreurs à l'exécution.
En savoir plus...
semestre 2
LAF2 : Langages formels
| Credits : | 6 ECTS |
| Nombre d'heures : | 56 (+14 renforcement) |
| Type : | Leçons, Travaux dirigés et pratiques |
| Evaluation: | Contrôle continu, Projet, Examen |
| Public : | Info, Info-Math |
| Responsables : | Sam van Gool, Stefan Schwwon |
Objectifs : Ce cours étudie les familles de langages rationnels et algébriques, des
concepts essentiels de l'informatique fondamentale. Entre autres, nous
présentons différentes caractérisations de ces langages en termes
d'automates, d'expressions régulières, de grammaires, de monoïdes et de
logique. Une application majeure étant l'analyse lexicale et syntaxique
dans la construction des compilateurs, nous en étudierons les bases
théoriques et les mettrons en pratique à travers un projet.
En savoir plus...
LOG2 : Logique
| Credits : | 6 ECTS |
| Nombre d'heures : | 54 (+16 renforcement) |
| Type : | Leçons, Travaux dirigés |
| Evaluation: | Contrôle continu, Examen |
| Public : | Info |
| Responsables : | Sam van Gool |
Objectifs : La logique est au fondement à la fois des mathématiques et de
l'informatique. Ce cours étudie des aspects de la logique relevant de
ces deux disciplines, en abordant des thèmes fondamentaux et des thèmes
plus avancés, énumérés ci-dessous. À l'issue du cours, les étudiants
disposeront d'une solide formation de base en logique et seront capables
d'appliquer des méthodes logiques en informatique.
En savoir plus...
LAL2 : Lambda-calcul et logique
| Credits : | 6 ECTS |
| Nombre d'heures : | 54 (+16 renforcement) |
| Type : | Leçons, Travaux dirigés et pratiques |
| Evaluation: | Contrôle continu, Examen |
| Public : | Info |
| Responsables : | Jean Goubault-Larrecq, Guillaume Scerri |
Objectifs : Le but de ce cours est de comprendre les bases du lambda-calcul, un
formalisme qui est à la fois le cœur des langages de programmation
fonctionnels et le langage des preuves dans diverses logiques,
intuitionnistes ou classiques, propositionnelles ou non. La
correspondance entre langages de programmation et preuves est la
correspondance de Curry-Howard. Ce cours se déroule en trois parties:
(1) le lambda-calcul pur, ses propriétés, y compris le fait qu'il code
exactement les fonctions calculables; (2) logique et démonstrations, la
correspondance de Curry-Howard; (3) implémentations, machines, et
lambda-calculs à substitutions explicites.
En savoir plus...
PAV2 : Programmation avancée
| Credits : | 6 ECTS |
| Nombre d'heures : | 48 |
| Type : | Leçons, Travaux dirigés et pratiques |
| Evaluation: | Contrôle continu, Projet, Examen |
| Public : | Info |
| Responsables : | Jacques-Henri Jourdan |
Objectifs : Le cours présente différents concepts des langages de programmation
modernes: les systèmes de modules, les classes et signatures/interfaces,
les foncteurs/classes génériques et GADT, les exceptions et les
continuations, les coroutines, les moniteurs, le typage avec
permissions, mémoire faibles, modèle map-reduce, et les mémoires
transactionnelles. Ces concepts seront illustrés par des langages déjà
vus (C, C++, Ocaml, Scala) ou de nouveaux langages (Haskell et Rust).
En savoir plus...
PBD2 : Projet BD
| Credits : | 6 ECTS |
| Nombre d'heures : | 24 (+24 en autonomie) |
| Type : | Travaux pratiques |
| Evaluation: | Contrôle continu |
| Public : | Info |
| Responsables : | Guillaume Scerri |
Objectifs : Le but de ce projet est de réaliser un système de gestion de bases de
données (SGBD dans la suite), capable d'éxécuter des requêtes SQL, y
compris des requêtes de création/modification de données, sur des
données stockées sur disque. Le projet sera fait par groupe, chaque
groupe réalisant une partie du système et devant s'interfacer avec les
autres groupes.
En savoir plus...
PLO2 : Projet logique
| Credits : | 6 ECTS |
| Nombre d'heures : | 24 (+24 en autonomie) |
| Type : | Travaux pratiques |
| Evaluation: | Contrôle continu |
| Public : | Info |
| Responsables : | Thomas Chatain |
Objectifs : Ce projet est en deux parties.
- La première partie porte sur le problème SAT: implémentation de stratégies de résolution, encodage (réduction) de problèmes NP-complets en SAT et résolution.
- La seconde partie porte sur les assistants de preuves. Il s'agit de construire une bibliothèque de lemmes prouvés sur un domaine défini chaque année.
En savoir plus...
PPR2 : Projet programmation
| Credits : | 6 ECTS |
| Nombre d'heures : | 24 (+24 en autonomie) |
| Type : | Travaux pratiques |
| Evaluation: | Contrôle continu |
| Public : | Info |
| Responsables : | Stefan Schwoon |
Objectifs : Le but du projet est d'introduire les élèves à la programmation orientée
objet ainsi qu'à la gestion d'un projet collaboratif en petit groupe. Le
projet commence par une introduction au langage Scala et aux concepts de
la programmation orientée objet (classes, objets, héritage,
polymorphie), aux bibliothèques disponibles dans Scala, et au système de
gestion de versions et de partage de Git. Le sujet précis du projet est variable
selon l'année, mais comprend généralement trois parties, avec une
soutenance pour chacune. La première partie sert à la familiarisation
avec le langage, la seconde à l'utilisation avancée des classes et de
l'héritage, la troisième à compléter la fonctionnalité.
En savoir plus...