Software Science and Technology (STL)

The Software Science and Technology (STL) program aims to train specialists in software development, with a solid foundation in programming languages and algorithmic methods. It is aimed at students interested in both the fundamental and technological aspects of computer science.

The training is focused on learning rigorous methods and tools for the design and development of complex software, as well as for the modeling and analysis of algorithmic problems from various application domains.

The STL program offers a research program (Algorithm and Programming Research) and two professional programs, one of which is traditional (Algorithm and Programming for Engineers) and the other is an apprenticeship program in partnership with the CFA INSTA.

Software Science and Technology (STL)


The program offers a combination of courses that cover both broad and specialized skills, particularly in the following areas:

  • Software reliability and algorithms.
  • Web programming, competition and mobility.
  • Software engineering and development environments.

The professional and research paths are largely intertwined. The professional opportunities are those of specialists in software architecture and engineering tools, and of project managers with strong technical skills in algorithms and programming. The paths to research are not only aimed at further study in doctoral programs, but also have immediate outlets in the research centers of large companies, design offices, and small innovative and high-tech companies. The research areas covered are programming and software architectures, as well as algorithms, with very current problems related to, for example, concurrent programming or program reliability.

From the perspective of scientific knowledge, the training introduces algorithms and programming in depth, so that students will be able to apply their knowledge directly upon graduation. However, as our scientific field is constantly evolving, students must also grasp the fundamental, abstract concepts that will allow them to adapt to the important changes they will face throughout their career. Finally, the course addresses the practice and responsibility of project management, which is required for many of the positions offered upon graduation.


The first year M1 of the STL course complements the fundamentals of the discipline transversal to the Computer Science master's degree and also introduces a specialization. It is therefore based on a common curriculum that offers an important conformity of teachings with the other courses of the Computer Science master.

The year is composed of two distinct semesters (S1 and S2), insofar as they must be validated independently of each other. During each semester, the student must follow a number of UEs corresponding to 30 ECTS, each UE generally corresponding to 60 hours of teaching (generally 20 hours of courses + 40 hours of TD/TP) and being worth 6 ECTS.

First semester (M1-S1)

In semester M1-S1, students follow 6 UEs, including 2 compulsory UEs proposed by the STL course, 2 specific UEs and 2 UEs to be chosen among those proposed by the other courses of the Computer Science Master.

The 2 compulsory UEs are:

  • ALGAV (Advanced Algorithms, 6 ECTS)
  • DLP (Development of Programming Languages, 6 ECTS)

The 2 specific UEs are:

  • OUV (Opening and pre-requisites, 3 ECTS)
  • ENG (English, 3 ECTS)

The 2 recommended optional courses are to be chosen (subject to availability) among:

  • IL (Software Engineering, 6 ECTS)
  • LRC (Logic and Knowledge Representation - UE of the ANDROIDE course, 6 ECTS)
  • NOYAU (Advanced architecture of system kernels - UE of the SAR path, 6 ECTS)
  • PSCR (Concurrent and Distributed System Programming - UE of the SAR path, 6 ECTS)
  • ARCHI (Processor Architecture and Optimization - UE of the SESI course, 6 ECTS)
  • COMPLEX (Complexity, Probabilistic and Approximate Algorithms - UE of the SFPN course, 6 ECTS)
  • MOGPL (Modeling, Optimization, Graphs, and Linear Programming - UE of the ANDROIDE course, 6 ECTS)
  • Free UE: any UE from the global UE catalog of the Computer Science master, subject to approval of the course director (and compatibility of the timetable)

Second semester (M1-S2)

In the M1-S2 semester, students also take 6 UEs:

  • A compulsory project UE: PSTL, 6 ECTS
  • Four UE to be chosen among:
  • APS (Program Analysis and Semantics, 6 ECTS)
  • CA (Advanced Compilation, 6 ECTS)
  • CPA (Design and Practice of Algorithms, 6 ECTS)
  • CPS (Components, 6 ECTS)
  • PAF (Advanced Functional Programming, 6 ECTS)
  • PC2R (Concurrent Reactive and Distributed Programming, 6 ECTS)

It is possible to choose a UE outside of the STL UE, in other courses of the Master, provided that the course director agrees.


The M2 year follows the schedule and general rules of the Master of Computer Science.

For STL, there are three tracks: R&D: Algorithms and Programming for Research, ING: Algorithms and Programming for Engineering and ALT: Work-study. Each stream defines specific rules for the arrangement of UE. This distinction between courses is actually more important for the organization than for the content. These are divided into three themes: 1. software reliability and algorithms, 2. web, competition and mobility and 3. Software Engineering and Development Environment. All of the M2-STL programs are shared between several courses as shown on the diagram. This consistency considers the periods spent in companies for the transitionnal course.
In the M2-S3 semester, students also take 6 UEs among :

  • AAGA (Algorithm Analysis and Random Generation, 6 ECTS)
  • ALASCA (Advanced Software Architecture for Autonomous Cyber-physical Systems, 6 ECTS)
  • DAAR (Development of Reticular Application Algorithms, 6 ECTS)
  • PPC (Concurrent Programming Paradigms, 6 ECTS)
  • SVP (Program Specification and Validation, 6 ECTS)
  • TAS (Typing and Static Analysis, 6 ECTS)
  • TPEA (Professional Techniques - Environment and Applications, 6 ECTS)
  • GPSTL (STL Project Management, 6 ECTS)
  • PISTL (STL Engineering Project, 6 ECTS)
  • GRAPA (Research Group in Advanced Algorithms and Programming, 6 ECTS)

The choice of UEs is limited in relation to the integrated program.
It is also possible to choose a UE outside the STL UEs mentioned below (in the other Master's courses or, for the research course, a UE from the MPRI), provided that the course director agrees.


Skills and knowleddge

At the end of the training, students will have acquired expertise in software engineering and thorough knowledge of software safety, while having been presented with the solutions to recent algorithmic problems.
The STL program trains specialists with strong technical skills in algorithms and programming, while providing them with a substantial amount of fundamental knowledge in these areas, facilitating career development and the subsequent acquisition of new skills.


Target audience and prerequisites:

The STL program is intended for students with a bachelor's degree or an equivalent degree in computer science or mathematics and computer science. The program is  also open to students who have completed their first year of the Master's program in another school or university, in France or abroad. Admission is possible for candidates in continuing education, possibly applying for the VAE.

The prerequisites for the first year of STL are knowledge and concepts at the bachelor’s level, essentially in the fields of programming and algorithms: general concepts of the three types of languages (functional, imperative and object); comprehensive knowledge of at least one language (Java, OCaml or C); data structures and fundamental algorithms (lists, trees, graphs, searching and sorting); methods of designing algorithms (correction and complexity). Basic logic and compilation skills as well as operating system principles are also required, together with good external knowledge of Unix and program development tools.


Possible professions are those of experts in software engineering (mastery of the most recent application techniques and ability to take charge of the definition and management of development environments) as well as specialists in operating safety (design or validation of systems with numerous software components that must meet safety requirements). The research program not only facilitates the pursuit of a PhD in algorithms and programming, but also offers immediate openings in the research centers of large companies, design offices and software startups.


Course leaders