Recherche
Deuxième semestre

C++ pour la statistique computationnelle

Objectifs

Comprendre le fonctionnement de la gestion de la mémoire des ordinateurs et donner aux élèves les principaux concepts du langage C++ moderne pour écrire des programmes plutôt orientés calculs et informatique scientifique.

Plan

Le langage C++ est apparu en 1983. Il s’agit d’une extension du langage C permettant la programmation orientée objet. Ce langage reste très utilisé et a su évoluer dans le temps puisque sa dernière révision date de 2020. Les points forts du C++ sont :
Les grandes performances de calcul en temps et en utilisation mémoire ;
L’utilisation de concepts de développement orienté objet ;
L’existence d’une grande communauté d’utilisateurs et d’un outillage de développement important (compilateurs, bibliothèques, outils de débuggage, etc.).
Ce langage est utilisé dans la recherche ou l’industrie surtout lorsque le temps d’exécution ou la gestion de la mémoire deviennent des contraintes importantes : calcul scientifique, calculs financiers, traitement de grandes quantités de données, imagerie 3D, traitement vidéo, traitement du signal.
Sa capacité à traiter de l’information à bas niveau en fait un langage de prédilection pour la conception d’outils modulaires. Il est ainsi possible d’intégrer des bibliothèques de fonctions développées en C++ au sein de logiciels tels que Matlab, R, SAS ou encore Python pour dépasser les contraintes natives de ces outils et langages.
Ce langage pourra donc être utile pour les élèves devant faire face à des problèmes nécessitant des exécutions efficaces ou dont les solutions doivent s’intégrer dans les outils modulaires mentionnés plus haut. En particulier, les élèves de la filière gestion des risques utiliseront ce langage dans leur cours de méthodes numériques et le développement de modules en cours de R avancé pourra se faire en C++.

Les notions de base :
Structure et syntaxe des programmes
Expressions, instructions et types de base
Manipulation des pointeurs, références et gestion de la mémoire
Structures de données avancées et algorithmique

Introduction aux classes C++ et concepts orientés objet : encapsulation, héritage, polymorphisme
Outils pour le C/C++
Environnement de programmation (notions de compilation)
Debuggage (gdb, valgrind)
Bibliothèque standard : structures de données, itérateurs, opérateurs

Prérequis

Bases de programmation dans un langage impératif (Python, Java, etc.)