C++ pour les Mathématiques Appliquées

C++ pour les Mathématiques Appliquées

Description

L’objectif de ce cours est l’apprentissage de la programmation en C++ dans le contexte des mathématiques appliquées avec une spécialisation des algorithmes par rapport aux spécificités de la filière. Ce cours se décompose en 2 parties :

  • Un cours théorique sur le C++ et des notions sur les patrons de conception.
  • Des tp de mise en application du cours.

Les étudiants apprendront à manipuler des outils permettant de compiler et analyser le comportement de programmes écrits en C++. Le cours se focalisera plus particulièrement sur : l’efficacité, la modularité, l’abstraction.

A travers les différentes séances pratiques, les étudiants seront amené à appliquer les concepts de programmation orientée objet.

Dans le projet final, les étudiants auront la possibilité de paralléliser sur leur propre application de calcul numérique.

Syllabus

  • Programmation orientée objet pour la modélisation et la programmation.
  • Concepts orientés objets en C++: Encapsulation, Abstraction, Héritage, Polymorphisme
  • Mécanismes: flux, opérateurs, signal.
  • Metaprogramming: template, namespace, STL.
  • Outils de développement: CMake, doxygen, gprof, valgrind.

Organisation

Les séances de cours seront suivis de séances de TPs de mise en application.

Prérequis

Des connaissances élémentaires en informatiques suffisantes pour écrire et comprendre un programme non trivial, de préférence en C.

Des connaissances en algorithmie, structures de données, méthodes numériques sont demandées.

Evaluation

La note finale sera basée sur le TP final et une évaluation écrite.

Cours

Séances pratiques

Instructions pour le rendu des TP

Les instructions ainsi que le script de vérification pour le rendu sont disponibles au téléchargement :

Instructions

Conseils pour la rédaction des TP

  • Maîtriser les options de compilations : pas d’options ésotériques, se poser les bonnes questions.
  • Documentation claire (Doxygen).
  • Indentation claire : on peut par exemple utiliser un logiciel pour nettoyer son code (http://uncrustify.sourceforge.net/)
  • Vérifier la structure des fichiers : présences des ifndef, define, endif, once.
  • Ne pas inclure de fichiers d’en-tête inutiles.
  • Possibilités d’utiliser des cas tests extérieurs : pas de cas test en dur dans le code.
  • Performances doivent être établies sur des temps de calculs supérieur à 10 secondes.
  • Vérifier les fuites de mémoire (valgrind).

Quelques liens