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.
À travers les différentes séances pratiques, les étudiants seront amenés à appliquer les concepts de programmation orientée objet.
Objectifs
À l’issue du cours, vous serez capable de :
- Concevoir et implémenter des modèles en C++ (orienté objet : encapsulation, héritage, polymorphisme).
- Utiliser la STL et les templates pour des applications numériques.
- Mettre en place une chaîne de développement (CMake, Doxygen, débogage, profilage).
Syllabus
- Programmation orientée objet pour la modélisation et la programmation.
- Concepts orientés objet en C++ : Encapsulation, Abstraction, Héritage, Polymorphisme
- Mécanismes : flux, opérateurs, signal.
- Métaprogrammation : template, namespace, STL.
- Outils de développement : CMake, doxygen, gprof, valgrind.
Organisation
Les séances de cours seront suivies de séances de TPs de mise en application.
Prérequis
Des connaissances élémentaires en informatique suffisantes pour écrire et comprendre un programme non trivial, de préférence en C.
Des connaissances en algorithmique, structures de données, méthodes numériques sont demandées.
Évaluation
La note finale sera basée sur le TP final et une évaluation écrite.
Cours
Séances pratiques
Critères pour l’évaluation des rendus de TP : Éléments généraux
Instructions pour le rendu des TP
Les instructions ainsi que le script de vérification pour le rendu sont disponibles au téléchargement :
Conseils pour la rédaction des TP
- Maîtriser les options de compilation : 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ésence des ifndef, define, endif, once.
- Ne pas inclure de fichiers d’en-tête inutiles.
- Possibilité d’utiliser des cas tests extérieurs : pas de cas test en dur dans le code.
- Les performances doivent être établies sur des temps de calcul supérieurs à 10 secondes.
- Vérifier les fuites de mémoire (valgrind).
Liste des TP
-
Lab 1
-
Lab 2
-
Lab 3
-
Lab 4
-
Lab 5
-
Lab 6