Detailed descriptions of the teaching units can be found at the bottom of this page. Note: not all teaching unit descriptions are translated into English.
First year
The first semester is dedicated to acquiring basic knowledge at the core of the program, and to complementing and strengthening background knowledge from undergraduate studies. It consists in:
- two mandatory courses (COMPLEX, MODEL) which provide essential knowledge in complexity theory (decidability, complexity classes, approximation algorithms) as well as the main paradigms of mathematical algorithms (core algorithms of linear algebra, Chinese Remainder techniiques and evaluation/interpolation, arithmetic operators and Fourier transforms);
- three courses to choose freely under the following constraints:
- at least two among the units : PPAR, ARCHI1, ARES, NOYAU and 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 focuses on the networks architecture and TCP/IP layers,
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;
- at least two among the units : PPAR, ARCHI1, ARES, NOYAU and QCLG :
Above, the course acronyms appearing in color are those whose lectures are in English (tutorial and practical sessions remain available in French).
The second semester goes deeper into the notions introduced during the first semester and introduces notions necessary towards the second year notably concerning cryptology and numerical algorithms. It consists in:
- a mandatory Project, which is a strong component of the degree where students work in small teams on ambitious projects, all along the semester, under the supervision of a teacher-researcher from the team of instructors of this degree;
- at least three courses among ANUM (numerical algorithms), FLAG (fundamentals of algebraic algorithms), CRYPTO1 (introduction to modern cryptology) — all these courses contain parts which are prerequisites for the second year of the degree — and ARCHI2 (architecture of kernels of multi-processor systems)
- at most one teaching unit among ARCHI2, PNL (linux kernel programming) and SAS (system security and administration) and QIIntro (Introduction to quantum information).
Above, the course acronyms appearing in color are those whose lectures are in English (tutorial and practical sessions remain available in French).
Second year
The third semester of the degree strengthens the knowledge and skills acquired in the first year, while also preparing students to their internship and job search and work. It consists in five courses:
- At least four among AFAE (floating-point arithmetic and rounding errors), CRYPTO2 (advanced cryptology), HPCA (advanced high-performance computing), POSSO (algebraic system solving and multivariate post-quantum cryptography), and SCA (side-channel attacks). These four courses are at the core of the themes studied in this degree.
- At most one course to choose freely among those offered in the Computer Science Master's degree of Sorbonne University.
The fourth and last semester is dedicated to a long student internship, which is conducted either in industry or in a public research laboratory. The intern has to write a report and prepare an oral presentation of the work at the end of the internship.
Descriptions of teaching units
Clicking on a unit name will show the description.
COMPLEX (Complexité, algorithmes randomisés et approchés) — CODE UE : MU4IN900
We will introduce the fundamental complexity classes P and NP and define NP-completeness. Most algorithmic problems encountered in practice are "hard". We will be interested in the trade-offs and relationships between different computational "modes": what happens if we allow ourselves to use probabilistic algorithms, if we are satisfied with approximate rather than exact solutions, if we are satisfied with an algorithm that works only for most but not all possible inputs? This course will introduce techniques of approximation and randomization of algorithms that allow to circumvent the difficulty of solving hard problems, and thus allow their use in practice with reasonable computation times. These techniques will be illustrated in tutorials and in lab-projects on a range of concrete problems from the various specialties of the master.
- Model of a computer; Turing machines.
- Complexity classes and reductions.
- Tree methods.
- Approximation algorithms with performance guarantee.
- Probabilistic algorithms (Las Vegas, Monte Carlo)
- Probabilistic graph algorithms.
- Probabilistic algebraic algorithms (primality tests; polynomial identity tests).
- Probabilistic algorithms for variants of the SAT problem.
- Probabilistic complexity classes (BPP, ZPP, RP, PP)
Evaluation: Small project (20%), Mid-term exam (40%), Final exam (40%)
MODEL (Numerical and Symbolic Algorithms Modeling) — CODE UE : MU4IN901
This finds applications in many areas of computer science (cryptography, high-performance computing, big data, operational research, imagery, etc.).
- Exact and approximate linear system solving
- SVD and FFT
- Complexity and non-naive multiplication algorithms for integers, polynomials and matrices
- Reductions to matrix multiplication, structured and sparse linear system solving
- Evaluation: Quizzes (20%), Small project (20%), Mid-term exam (30%), Final exam (30%)
PPAR (Parallel Programming) — CODE UE : MU4IN903
Evaluation: two large parallelization projects (33% each), final exam (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
Evaluation : tests (30%), project (35%), final exam (35%)
CRYPTO1 (Cryptologie 1) — CODE UE : MU4IN904
Evaluation : midterm + final exam (33% each) + online practical work (33%)
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.