Knowing how to code an algorithm effectively in a given programming language requires a prior understanding of the associated calculation model and how the instructions in that language are translated into machine instructions. Too many students still approach programming in a superficial and risky way, lacking the basic knowledge necessary to write elegant and effective code.
The unique strength of the C++ language is to allow the production of compiled codes close to the optimal machine code while offering different high-level programming approaches such as strong typing, object programming, functional programming and meta-programming (automatic code generation at compilation). For this reason, C++ has become the essential language for developing optimized algorithms. Its only disadvantage is its richness, which has continued to grow in its most recent versions (C++11/14/17/20) and which makes it difficult to understand the language in its entirety without adequate training.
This course is intended for students, including beginners, who want to master the different aspects of C++ programming in order to be able to write code that combines performance and elegance. The course adopts a bottom-up approach starting from the mechanisms of elementary program execution and gradually moving towards the most advanced language functionalities.
- Know how to write a program in C++ using different programming paradigms such as object programming, functional programming and generic programming.
- To know certain aspects of the C++ language that have a decisive influence on the performance of programs during their execution.
- Be familiar with the functionalities offered by the most recent specifications of the C++ language (C++11, C++14, C++17, C++20).
- Know how to use a C++ compilation and debugging environment
For some sections of the course about template and system programming (threads) see the old website of the C++ courses
Organization of the programming test
The test consists in an individual labwork on a machine with Ubuntu provided by CentraleSupélec (not yours). You will be given the password when the test starts. The test duration is 2 hours, you will have only access to cpp reference and the materials of the lectures on the machines. No personal electronic devices are allowed.
There are two consecutive test sessions, S1 and S2, and you will be notified in advance about the one you will attend. There are test rooms, where the machine stand, and there is a supplementary waiting room. All rooms are located on the third floor, where the labworks are usually given.
- Students in session S1 : Be present at test rooms at 08:10am, find your seat. The test start at 08:20am. Once the test is started, latecommers will not be accepted anymore. The test ends at 10:20am. Close your session and leave the room. Leaving the test room before the ending time is not allowed in S1.
- Students in session S2 : Be present at the waiting room at 10:10am. The use of electronic devices is not allowed in the waiting room. When S1 ends (i.e. at 10:20 if everything has gone right in S1), no latecommers will be accepted in the waiting room, they will not be able to pass the test. The test starts at 10:30am and ends at 12:30am. Leaving the test room before the ending time is allowed in S2, but leaving the room if final.