Des descriptifs détaillés des unités d’enseignement se trouvent en bas de page.
Première année
Le premier semestre permet d’acquérir les premières connaissances fondamentales et compléter ou renforcer ses acquis de licence. Il est composé de :
- deux Unités d’Enseignement obligatoires (COMPLEX, MODEL) qui permettent d’acquérir les connaissances indispensables en théorie de la complexité (décidabilité, classes de complexité, algorithmes d’approximation) ainsi que les paradigmes de l’algorithmique mathématique (algorithmes fondamentaux de l’algèbre linéaire, CRT et évaluation/interpolation, opérateurs arithmétiques et transformées de Fourier);
- trois Unités d’Enseignement à choisir librement sous les contraintes suivantes :
- au moins deux parmi les Unités : PPAR, ARCHI1, NOYAU et QCLG :
PPAR introduit les concepts fondamentaux de la programmation parallèle pour le calcul haute-performance (qui sont des pré-requis pour le M2),
ARCHI1 introduit les concepts de l’architecture des ordinateurs et
NOYAU étudie le fonctionnement des noyaux des systèmes d’exploitation;
QCLG introduit les concepts de base de l’informatique quantique qui est amenée à jouer un rôle important en cryptographie dans les années à venir;
- au plus une parmi les Unités : BDA (Bases de Données Avancées), MOGPL (Modélisation et probas-stats), PR (Programmation Répartie).
- au moins deux parmi les Unités : PPAR, ARCHI1, NOYAU et QCLG :
Les Unités apparaissant en couleur ci-dessus sont celles dont le cours est dispensé en anglais (les échanges en TD et TP peuvent se dérouler en français).
Le second semestre permet d’approfondir les notions introduites au premier semestre et d’introduire celles nécessaires à la poursuite en M2, notamment en cryptologie et en algorithmique numérique. Il est composé de :
- une Unité d’Enseignement Projet obligatoire : il s’agit d’un temps fort de la formation où les étudiants travaillent en équipe sur un projet ambitieux, tout au long du semestre sous l’encadrement d’un enseignant-chercheur, enseignante-chercheuse, chercheuses ou chercheur de notre équipe pédagogique ;
- au moins trois Unités d’Enseignements parmi ANUM (Algorithmique Numérique), FLAG (Fondements de l’Algorithmique Algébrique), CRYPTO1 (Introduction à la cryptologie moderne) — toutes ces unités dispensent des enseignements qui sont des pré-requis pour le deuxième année de master — ainsi que ARCHI2 (architecture des noyaux des systèmes multi-processeurs) ;
- au plus une Unité d’Enseignement parmi ARCHI2, PNL (Programmation au coeur du noyau Linux) et SAS (Sécurité et Administration des Systèmes) et QIIntro (Introduction à l’information quantique).
Les Unités apparaissant en couleur ci-dessus sont celles dont le cours est dispensé en anglais (les échanges en TD et TP peuvent se dérouler en français).
Deuxième année
Le troisième semestre permet de renforcer les acquis de première année tout en préparant les étudiants à la recherche de stage et l’insertion professionnelle. Il est composé de cinq Unités d’Enseignements,
- au moins quatre parmi AFAE (Arithmétique flottante et erreurs d’arrondis), CRYPTO2 (Cryptologie Avancée), HPCA (calcul haute performance avancé), POSSO (Systèmes algébriques et cryptologie multivariée post-quantique) et SCA (Attaques par Canaux Auxiliaires). Ces cinq Unités sont au coeur disciplinaire de notre formation ;
- au plus une Unité à choisir librement parmi celles proposées dans le master d’Informatique de Sorbonne Université.
Le dernier semestre est dédié au stage que les étudiantes et étudiants peuvent réaliser dans l’industrie du numérique comme dans le monde académique. Ce stage donne lieu à la rédaction d’un rapport ainsi qu’à une soutenance orale.
Descriptif des unités d’enseignement
Cliquer sur l’UE pour afficher le descriptif.
COMPLEX (Complexité, algorithmes randomisés et approchés) — CODE UE : MU4IN900
Nous introduirons les classes de complexité fondamentales P et NP et nous définirons la NP-complétude. La plupart des problèmes algorithmiques rencontrés en pratique sont « difficiles ». Nous nous intéresserons alors aux compromis et relations entre différents « modes » de calculs : que se passe-t-il si l’on s’autorise à utiliser des algorithmes probabilistes, si l’on est satisfait de solutions approchées plutôt qu’exactes, si l’on est satisfait d’un algorithme qui marche seulement pour la plupart des entrées possibles, mais pas pour toutes ? Ce cours introduira des techniques d’algorithmes d’approximation et de randomisation permettant de contourner la difficulté de résolution des problèmes difficiles, et permettant ainsi leur application en pratique avec des temps de calcul raisonnables. Ces techniques seront illustrées en TD et en TME-projet sur un éventail de problèmes concrets relevant des diverses spécialités du master.
- Modèle d’un ordinateur ; machines de Turing.
- Classes de complexité et réductions.
- Méthodes arborescentes.
- Algorithmes approchés avec garantie de performance.
- Algorithmes probabilistes (Las Vegas, Monte Carlo)
- Algorithmes probabilistes de graphes.
- Algorithmes algébriques probabilistes (Tests de primalité ; tests d’identité polynomiale).
- Algorithmes probabilistes pour des variantes du problème SAT.
- Classes de complexité probabiliste (BPP, ZPP, RP, PP)
Évaluation : Petit projet (20%), Examen réparti 1 (40%), Examen réparti 2 (40%)
MODEL (Numerical and Symbolic Algorithms Modeling) — CODE UE : MU4IN901
Ce cours trouve des applications dans de nombreux domaines de l’informatique (cryptographie, calcul haute performance, big data, recherche opérationnelle, imagerie, etc.)
- Résolution de systèmes linéaire exacte ou approchée
- SVD et FFT
- Complexité et algorithmes non naïfs de multiplication d’entiers, de polynômes et de matrices
- Réductions à la multiplication de matrices, résolution de systèmes linéaires structurés et creux
- Évaluation : Quiz (20%), Petit projet (20%), Examen réparti 1 (30%), Examen réparti 2 (30%)
PPAR (Parallel Programming) — CODE UE : MU4IN903
Evaluation : deux projets conséquents (33% chacun) + examen final sur table (33%).
ANUM1 (Numerical Algorithms) — CODE UE : MU4IN910
– Floating-point arithmetic and rouding error analysis
– Matrix computation
– Introduction to continuous optimization
– Interpolation and approximation
– Numerical differentiation et integration
– Monte Carlo method
Grades will be computed as follows: exam 1 (40%), exam 2 (40%), praticals (20%).
FLAG (Fondements de l’algorithmique algébrique) — CODE UE : MU4IN902
Évaluation : tests (30%), projet (35%), examen final (35%)
CRYPTO1 (Cryptologie 1) — CODE UE : MU4IN904
Evaluation : partiel (33%) + examen final (33%) + un TP géant qui dure tout le semestre
AFAE (Floating-point arithmetic and error analysis) — CODE UE : MU5IN950
HPCA (Advanced high-performance computing and programming many core architectures)
This Part I introduces GPU programming using CUDA API and then provides a large number of examples that will make the reader more and more comfortable with the hardware and the API used. The purpose is to give the technical background that opens scaling up applications to a large public of students, researchers, and engineers.
Modern computers have an increasing number of computing units. To take advantage of this parallelism, it is therefore necessary to use and implement algorithms with a high level of concurrency. In this Part II, different techniques for solving hollow linear systems that benefit from such a feature are presented. In particular, domain decomposition methods and multigrid methods that have an optimal asymptotic cost are detailed.
Here is a link to the detailed syllabus