Cryptology, High-Performance Computing and Algorithmics (CCA)
The Cryptology, High-Performance Computing and Algorithmics (CCA) program offers high-level training in the fields of cryptology and high-performance computing. These two fields, which are complementary on the job market, have many high value-added outlets. They are based on advanced skills in several areas of algorithmics such as formal calculation and computer arithmetic.
Some of the teaching units of the specialization are shared with the EUMaster4HPC (European reference master's degree in high-performance computing) and the MaIn (Mathematics and Computer Science) specialization of the PolyTech Sorbonne engineering school.
Objectives
This program aims to train high-level specialists with a dual competence in the following two application areas
- Cryptology: this is the science of secrecy, which includes cryptography -- the art of designing protocols for communicating and exchanging information -- and cryptanalysis -- which consists of the analysis of the security levels of these protocols;
- High-performance computing: an essential component of strategic industries, this field encompasses issues related to the parallelization of semi-numerical algorithms, parallel programming and adaptation to emerging architectures (GPU or supercomputers).
These two fields are closely related from a practical point of view: cryptanalysis often makes use of high-performance computing paradigms and programming techniques. They are even more closely related from a fundamental point of view: mathematical algorithms (operating on matrices, polynomials, etc.) and arithmetic issues (algebraic operators for cryptography, numerical quality) constitute the fundamental methodological arms of the training. These are divided into two main areas:
- Computer arithmetic and numerical reliability: this is the area of computer science concerned with the basic operations of computer computation, the representation and algorithmic use of integers and floating point numbers, and the evaluation of the numerical quality of programs;
- Formal computation (or algebraic computation): this is the field of computer science that is interested in algebraic computation operators on objects such as matrices and polynomials, relying on exact representations of the computation data, the domains mostly considered as finite fields (especially for cryptology) or multi-precision integers.
Program, Skills and Competencies
Upon completion of the course, students will have gained expertise in:
- Modern cryptology techniques, from the perspective of both the attacker and the defender, as well as an introduction to cryptanalysis techniques;
- Computational models and paradigms (approximate/exact) and their deployment/development both in the fields related to cryptology and scientific computing;
- High performance computing, its models and programming techniques.
Students also acquire operational knowledge via numerous development projects within several teaching units, including one substantial unit throughout the second semester of the first year.
The writing of various reports and project presentations, and the organized oral presentations allow students to acquire the reflexes and practices of scientific and professional communication.
Finally, several courses are taught in English (tutorials are still taught in French) which ensures a mastery of technical English. This is reinforced by the presence of internationally mobile students in several teaching units of the program, which also promotes the communication skills of the students in the program.
Target audience and pre-requisites
This training is intended for students with a solid background in computer science and/or mathematics. Most of the people recruited at the M1 level have completed a L3 course in computer science, a double course in mathematics and computer science, or a mathematics course including teaching units in algorithmics and programming. Successful applicants at the M2 level are mainly students from engineering schools, but also from other masters programs with an M1 curriculum that largely overlaps with this program.
The prerequisites for this course relate to the general knowledge expected at the bachelor level in computer science:
- Algorithms and data structures on the one hand and programming on the other (due to the themes developed, an ability in C language is appreciated).
- Solid knowledge of basic mathematics: logic, arithmetic, algebra (especially linear algebra) and analysis, probability.
Having followed an introductory course in cryptology is a plus but not necessary.
Since many courses are offered in English (the tutorials and practical work remain in French), a strong level of English is required (between A2 and B1).
First year
The first semester enables students to acquire the preliminary fundamental knowledge and to complete or reinforce their undergraduate knowledge. It is composed of:
- two compulsory teaching units (COMPLEX, MODEL) which enable students to acquire the essential knowledge in complexity theory (decidability, complexity classes, approximation algorithms) as well as the paradigms of mathematical algorithms (fundamental algorithms of linear algebra, CRT and evaluation/interpolation, arithmetic operators and Fourier transforms);
- three teaching units to be chosen freely under the following constraints:
- at least two of the following units: HPC, ARCHI1 and Kernel: HPC introduces the fundamental concepts of parallel programming (which are prerequisites for M2), ARCHI1 introduces the concepts of computer architecture and Kernel studies the functioning of operating system kernels;
- at most one UE among the following units: BDA (Advanced Databases), MOGPL (Modeling and probas-stats), PR (Distributed Programming) and SC (Secure Coding).
The above units shown in italics/bold are those where the course is taught in English (the tutorials and practical work are still taught in French).
The second semester enables students to deepen the concepts introduced during the first semester and to introduce those necessary for their continuation in M2, especially in cryptology and digital algorithms. It is composed of :
- A compulsory Project Teaching Unit: this is an important part of the course where students work in teams on an ambitious project throughout the semester under the supervision of a teacher-researcher, researcher or researcher from our teaching team;
- at least three Teaching Units among:
- ANUM (Numerical Algorithms), FLAG (Fundamentals of Algebraic Algorithms), ISEC (Introduction to Security) -- all of these units provide courses that are prerequisites for the second year of the master's program -- as well as ARCHI2 (Architecture of multi-processor kernels)
- at most, one Teaching Unit among :
- ARCHI2, ML (Machine Learning), PNL (Programming in the Linux kernel) and SAS (Security and System Administration).
The above units shown in italics/bold are those where the course is taught in English (the tutorials and practical work are still taught in French).
Second year
The third semester reinforces the knowledge acquired in the first year, while preparing students for the search for an internship and professional placement. It is composed of five teaching units, at least four of which are:
- AFAE (Floating Arithmetic and Rounding Errors), CRYPTA (Advanced Cryptology), GPU (GPU Programming), POSSO (Post Quantum Algebraic Systems and Multivariate Cryptology) and SCA (Auxiliary Channel Attacks). These five units are at the disciplinary core of our training.
- at most, one unit to be chosen freely among those proposed in the Master of Computer Science at Sorbonne University.
This last semester is dedicated to the internship that students prepare either in the digital industry or in the academic world. This internship is evaluated through the writing of a report and an oral presentation.
Opportunities
This course trains experts in the design and implementation of computer solutions in cryptology and high-performance computing.
The range of possible jobs at the end of this training is quite broad: it includes technical jobs in cyber-security and intensive computing (e.g. deployment of software solutions), design and/or management positions in computer security engineering and high-performance computing, and even research and development jobs in cryptology, high-performance computing, and the fundamental fields of computer arithmetic and formal computing.
The opportunities are therefore numerous. Students quickly find a job in the digital industry, either within large groups, medium-sized companies or in the important network of digital start-ups; within institutional professions dependent on the State; or within the world of academic research (Universities, CNRS, Inria, for example).
Contacts
Course manager (SFPN)
Mohab SAFEY EL DIN
Secretary
Yanny DICOT