Durée: 4 jours

Dates: du lundi 24 novembre au vendredi 28 novembre 2025

Horaires: 9h30 - 17h30

Lieu: Inria Saclay - Bâtiment Turing - Salle Gilles Kahn ou Inria Paris

Intervenants: Au moins Sébastien Gilles, Vincent Rouvreau et Jérôme Diaz (SED Saclay)

Cette formation a pour but de donner de solides bases en C++ dans sa version la plus moderne (C++ 11 à C++23). A l'issue de la formation l'objectif est de:

La formation peut être donnée en anglais ou en français selon les participants; le support est en anglais et si la formation est donnée en anglais il sera possible de poser des questions en français - le but est que la langue ne soit pas un obstacle.

La présentation est disponible ici et s'appuie sur les notebooks Jupyter (elle évoluera légèrement d'ici la session de décembre). Le README indique comment installer facilement notre noyau Jupyter pour le C++ CppyyKernel sur votre portable, qui sera indispensable car la formation alterne présentations et TP.

Pré-requis sur votre portable

Aucun pré-requis fort n'est requis: une version déployable sur BinderHub est disponible cette année.

Il est néanmoins conseillé de procéder à une installation locale de CppyyKernel (voir le README: le déploiement sur Binder prend quelques minutes).

Optionnellement, une image Docker est fournie au besoin pour les TP.

Inscriptions et format

Vous pouvez vous inscrire à la formation ici; merci de nous signaler en amont de la formation si vous vous êtes inscrits mais ne pouvez finalement pas y participer.

La formation est gratuite et accessible à tous. Elle s'adresse à un public ayant déjà une expérience du développement mais pas nécessairement avec le langage C ou C++. Il est possible de ne pas assister à une des sessions mais il faut avoir conscience qu'elles ne sont pas complètement indépendantes et suivent une progression logique.

La formation dure 4 jours; elle a été étalée sur 5 jours pour permettre aux participants de centres distants de voyager le lundi matin et le vendredi après-midi.

Elle est inscrite dans le plan formation de la DGD-I, et les frais de mission devraient à ce titre être pris sur un budget formation dédié. Nous sommes en relation avec la DRH et la DGD-I pour clarifier comment opérer cette prise en charge; cette page sera mise à jour une fois que nous aurons toutes les informations.

Contenu de la formation:

  1. Programmation procédurale
    • Variables, initialisation, affectations
    • Conditions et boucles
    • Types prédéfinis
    • Fonctions
    • Allocation dynamique de la mémoire
    • Entrées et sorties
  2. Programmation objet
    • Introduction au concept de la programmation objet
    • Fonctions membres
    • Constructeurs (de base) et destructeur
    • Encapsulation
    • Attributs statiques
    • Héritage et polymorphisme
  3. Opérateurs
    • Introduction au concept de surcharge d'opérateurs
    • Opérateurs de comparaison
    • Opérateurs de flux (entrée/sortie)
    • Opérateur d'affectation et forme canonique d'une classe
    • Foncteurs
  4. Templates
    • Introduction au concept de template
    • Spécialisation
    • Les syntaxes spéciales: mots-clés typename, template et this obligatoire
    • Métaprogrammation
    • Tease pour des concepts plus avancés avec les templates
  5. Concepts utiles et librairie standard (STL)
    • Gestion des erreurs
    • Idiome RAII
    • Conteneurs
    • Conteneurs associatifs
    • La "move semantics"
    • Les smart pointers
    • Les algorithmes de la STL
  6. C++ en environnement réel
    • Mise en place d'un environnement minimal
    • La structure des fichiers pour un programme C++
    • Compilateurs
    • Librairies tierces: comment les inclure sans récupérer leurs warnings de compilation
    • Les namespace
    • Outils divers