Second semester

Programming in C++

Objectives

Understand how computer memory management works and give students the main concepts of the modern C++ language to write programs that are more geared towards calculations and scientific computing.

Course outline

The C++ language first appeared in 1983. It is an extension of the C language, enabling object-oriented programming. This language is still widely used and has evolved over time, with its latest revision dating from 2020. The strengths of C++ are
High computational performance in terms of time and memory usage;
The use of object-oriented development concepts;
The existence of a large user community and extensive development tools (compilers, libraries, debugging tools, etc.).
This language is used in research and industry, especially where execution time and memory management are key constraints: scientific computing, financial calculations, processing large quantities of data, 3D imaging, video processing, signal processing.
Its ability to process low-level information makes it the language of choice for the design of modular tools. Libraries of functions developed in C++ can be integrated into software such as Matlab, R, SAS or Python to overcome the native constraints of these tools and languages.
This language could therefore be useful for students faced with problems requiring efficient execution, or whose solutions need to be integrated into the modular tools mentioned above. In particular, students in the Risk Management stream will use this language in their Numerical Methods course, and the development of modules in the Advanced R course can be done in C++.

Basic concepts :
Program structure and syntax
Expressions, instructions and basic types
Handling pointers, references and memory management
Advanced data structures and algorithms

Introduction to C++ classes and object-oriented concepts: encapsulation, inheritance, polymorphism
C/C++ tools
Programming environment (compilation concepts)
Debugging (gdb, valgrind)
Standard library: data structures, iterators, operators

Prerequisites

Programming basics in an imperative language (Python, Java, etc.)