Deuxième semestre

C++ pour la statistique computationnelle

Objectifs

Connaître les principaux concepts du langage C++ moderne, maîtriser des bases d’algorithmique et de programmation orientée objets pour écrire des programmes efficaces en C++ pour l’informatique scientifique ou le calcul intensif. Posséder les bases permettant de poursuivre en autonomie l’apprentissage du C++ et d’autres langages inspirés du C.

Plan

Le langage C++ est apparu en 1983. Il s’agit d’une extension du langage C dédiée la programmation orientée objet. Contrairement à la plupart des langages définis par une implémentation de référence, le C++ est défini par une norme dont la dernière révision date de 2023.rnCe langage est utilisé dans la recherche ou l’industrie surtout lorsque le temps d’exécution ou la gestion de la mémoire représentent des contraintes importantes : calcul scientifique, application financière, traitement de grandes quantités de données, imagerie 3D, traitement vidéo, traitement du signal.rnC’est un langage compilé, ce qui en fait un outil de prédilection pour écrire utilisable également pour développer des modules ou plugins pour d’autres langages comme Matlab, R, ou encore Python ou bien des outils comme SAS ou QGIS pour dépasser les contraintes natives et augmenter les performances de ces langages ou outils.rnCe 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++.rnrnLes notions de base :rn• Structure et syntaxe des programmesrn• Expressions, instructions et types de basern• Manipulation des pointeurs, références et gestion de la mémoirern• Concepts orientés objet généraux : encapsulation, héritage, polymorphisme, etc.rn• Concepts propre au C++ : surcharge d’opérateurs, classes paramétriques et spécialisation, etc.rn• Structures de données, itérateurs et algorithmes de la bibliothèque standardrn

Prérequis

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