Des descriptifs détaillés des unités d’enseignement se trouvent en bas de page. Note : selon les cours, certains descriptifs sont en anglais ou en français.
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, ARES, 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,
ARES s’intéresse à l’architecture des réseaux TCP/IP,
NOYAU étudie le fonctionnement des noyaux des systèmes d’exploitation, et
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 moins deux parmi les Unités : PPAR, ARCHI1, ARES, 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) — CODE UE : MU5IN952
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
POSSO (Introduction to polynomial system solving and applications to post-quantum cryptography) — CODE UE : MU5IN953
This course focuses on algebraic methods for solving such systems of equations with a view towards applications in post-quantum cryptography and algebraic cryptanalysis.
A first period is devoted to introduce basic notions and Buchberger-style algorithms, introducing Gröbner bases and their properties. A second period is devoted to techniques for analyzing the complexity of Gröbner basis algorithms. A third period introduces linear algebra-based Gröbner bases algorithms. The last period covers applications in post-quantum cryptography.
Exercise sessions are scheduled and computer sessions organized in order to help the student to better assimilate the contents of the course.
SCA (Side-Channel Attacks) Attaques par Canaux Auxiliaires — CODE UE : MU5IN954
Les thèmes abordés en cours sont les suivants :
– Sécurité embarquée et attaques matérielles
– Attaques par analyse de consommation
– Attaques par faute
– Attaque par analyse de timing
– Contre-mesures logicielles face aux attaques
– Évaluation de fuites secrètes
Les travaux pratiques comprennent les points suivants :
– Analyse de traces de consommation, lien entre consommation et instructions exécutées
– Attaque d’un code (récupération d’un mot de passe) par analyse simple de consommation
– Lien entre consommation et données manipulées par un programme
– Attaque de l’AES par analyse différentielle de la consommation
– Implantation d’un schéma de protection pour l’AES
– Attaques par faute sur simulateur
Evaluation : 50% pour les TPs et 50% par un examen.
CRYPTO2 (Cryptologie 2) — CODE UE : MU5IN951
Volume horaire : 18h CM, 18h TD, 18h TP
Modalités d’évaluation : deux examens répartis (un « partiel » + un « final ») et une note de TP, qui comptent pour 35%, 35% et 30% respectivement. Les TME ont lieu en-ligne sur une plate-forme que nous avons développée.