Course code MP01
Course title Le langage C++
Institution Mines ParisTech
Course address Ecole des Mines de Paris – 60 boulevard Saint Michel 75272 Paris cedex 6
City Paris
Minimum year of study 4th year
Minimum level of English None
Minimum level of French Good
Key words Langage orienté objet, typage, héritage, généricité, contrôle d’accès, mécanisme d’exception, gestion de la mémoire, bibliothèque de programmes - STL, introspection
Language French
Professor responsible Valérie Roy, Centre de Mathématiques Appliquées, MINES ParisTech
Telephone +33 4 97 15 70 70
Fax +33 4 97 15 70 66
Email valerie.roy@mines-paristech.fr
Participating professors

Valérie ROY,  Benoit  GSCHWIND  et Hassan BOUCHIBA (MINES ParisTech), Nikolas STOTT (INRIA)

Number of places Minimum: 10, Maximum: 15, Reserved for local students:
Objectives

C++ est devenu le langage industriel normalisé incontournable. En effet, il combine les grandes qualités des langages de haut niveau orientés objets à la puissance des langages proches de la machine. Comme toutes les applications comportent des contraintes de temps d’exécution et d’espace mémoire, il permet l’implémentation des logiciels qui nécessitent une manipulation directe des cibles matérielles (systèmes d’exploitation, drivers de périphériques, réseaux, ....etc) tout en apportant l’expressivité, la réutilisation, la maintenance, la simplicité d’évolution, la facilité de test, la gestion de gros projets, le passage à l’échelle, la stabilité des codes écrits et la portabilité.

C++ est un langage généraliste à large spectre. Ayant été intensivement utilisé dans de nombreux domaines, il devient désormais possible de l’utiliser efficacement dans les applications qui imbriquent une grande variété de disciplines : science et visualisation des données numériques, applications graphiques, réseau, .....etc. C++ est un des langages de référence des logiciels libres Open Source.

C++ est un des principaux langages utilisés dans le monde industriel et dont la connaissance est indispensable à tout futur ingénieur désireux de s’impliquer dans les nombreux domaines connexes aux technologies de l’information et de la communication.

Programme to be followed

 Ce cours présentera le langage C++ de la norme C++11 du langage et donnera les différences avec la précédente norme C++03. Les élèves seront distribués en deux groupes suivant leur niveau.

 Généralités : 

Toutes les constructions du langage seront abordées (d'une manière plus ou moins détaillée selon leur importance). Les notions seront approfondies par un ensemble d'exercices (travaux dirigés) de difficulté croissante. 

Nous introduirons, au besoin, quelques notions d’algorithmique et de complexité nécessaires pour une bonne compréhension des difficultés inhérentes à la programmation.

L'accent sera mis sur l'apprentissage du langage lui-même, plutôt que sur l'apprentissage d'environnements de programmation intégrés, afin que les mécanismes de compilation d'édition de liens et d'exécution soient bien compris.

La semaine comportera un projet de programmation.

Contenu :

 - la réutilisabilité et la généricité (pour réduire les coûts de développement : mécanismes orientés objets, classes template) 

 -le contrôle d’accès (séparation de la spécification et de l’implémentation)

 - le typage fort et le polymorphisme (pour détecter les erreurs le plus tôt possible dans le cycle de développement : structures et classes, dérivation  simple et multiple, surcharge des fonctions et des opérateurs, etc.)

 - les mécanismes d’exceptions pour la gestion des erreurs à l’exécution

 - la gestion de la mémoire (mémoire statique, pile d’exécution, mémoire dynamique, surcharge des opérateurs d’allocation et de désallocation)

 - l’introspection sur les types de données lors de l’exécution

 - l’utilisation de la  STL, bibliothèque normalisée de classes et de fonctions C++

 - l'utilisation de la norme du langage C++.

Projets de programmation :

Une partie du temps de la semaine sera consacrée à la réalisation d'un projet de programmation qui utilise des bibliothèques de programmes extérieures (en plus de la bibliothèque standard C++).

Par exemple, cette année, pour l'un des groupes, le projet sera fondé sur la programmation graphique utilisant openGL (bibliothèque graphique pour laquelle vous aurez un cours introductif).

Support de cours:

Une version électronique des transparents et des listes d'exercices.

Prerequisites

Notions de programmation dans un langage (quel que soit ce langage). Le cours revient sur les différentes notions de base utiles à la programmation et qui pourraient faire défaut aux élèves.

Course exam

l'évaluation, pour les élèves qui en auraient besoin, pourra être fondée (à choisir en début de semaine dans chacun des groupes) sur un contrôle continu ou sur le projet de programmation.

Back