Détails du cours MAP-SIM1

Scientific programming with C++

Cette page est essentiellement destinée aux enseignants et regroupe toutes les informations nécessaires à la gestion d'un cours ENSTA.

Identité du cours

Sigle : MAP-SIM1
Titre français : Programmation scientifique en C++ [V2C]
Titre anglais : Scientific programming with C++
Méta infos : modifiée le : 02/03/2017   par : guest   Nb de visiteurs : 105   annee : 2A      periode : 1      Rattachement/module : voie      unités : 2      ECTS : 2      type : unknown     
ouvert : Oui     modif. autorisée : Oui     email auto. au responsable : Oui     à évaluer : Oui     en ligne : Non    
domaine ParisTech : 1b    

Equipe pédagogique

Responsable (login) :
Professeur principal :
Professeurs participants : Eric LUNEVILLE,   
Maitres de conférences : Eric LUNEVILLE,    Adrien LOSEILLE,    Nicolas KIELBASIEWICZ,    Quentin MERIGOT,   

Contenu

a pour prérequis : Programmation en C (IN101)
est prérequis pour : MAP-SIM2 (projet C++)
Objectifs :

1. Descriptif

Ce cours s’adresse aux étudiants qui seront amenés à travailler dans un environnement où le développement logiciel, bien que n’étant pas nécessairement le cœur de métier, est très présent, par exemple les laboratoires de recherche et développement des grandes entreprises et ce dans tous les domaines (mécanique, physique, finances,…). L’utilisation avancée et le développement des logiciels s’inscrivant dans un contexte technique et scientifique spécifique au laboratoire, il requiert bien évidemment un bon niveau dans les disciplines concernées mais également un bon niveau de programmation, car il s’agit soit de développer un code « durable » soit d’intégrer de nouvelles fonctionnalités dans un code existant reposant sur des concepts informatiques avancées. Les logiciels scientifiques se différencient des logiciels de gestion par des exigences de performance et une complexité des méthodes mises en œuvre . Par le passé, ils ont été développés en Fortran et sont aujourd’hui de plus en plus développés en C++ afin de bénéficier d’une couche objet plus riche et plus sûre. Le cours proposé a pour objectif de fournir aux étudiants quelques clés importantes du développement logiciel dans ce contexte. Une partie importante du cours est dédiée au langage C++ afin que l’étudiant acquiert un niveau suffisant pour développer du code objet. En parallèle, on aborde des problématiques spécifiques des codes de calcul scientifique : rapidité, efficacité, optimalité, stabilité des calculs. Une place importante sera donnée à la pratique car pour bien programmer il faut programmer "beaucoup". Dans un premier temps, afin d’acquérir les bases, des séances de travaux pratiques sont proposées.

2. Compétences à acquérir

Être capable de prendre en compte les problèmes spécifiques d’un code de calcul scientifique : rapidité, efficacité, optimalité, stabilité des calculs. Être capable de développer du code objet en langage C++ (héritage, programmation générique)

3. Programme des séances

Mots clés : Programmation, C++, Objet, logiciel scientifique, Simulation numérique, projet
Objectives : Many research and development centers of business companies use and developp
scientific software which are specific to their own technical background
(mecanichs, physics, financial engineering, ....). Such softwares generally have
some special issues compare to information managment software. More precisely ,
they have to be very efficient in terms of speed and numerical stability. In the
past, most of them was writen in Fortran and today there is a migration to C++
langage (rewriting and new development).
This lecture deals with the C++ langage at an advanced level (i.e. development
of object software). Specific questions of scientific software (speed and
stability) are presented and concepts and tools related to development (EDI
platform, makefile, profiler, scientific libraries,test ...) are briefly
introduced.

An important part is devoted to the practice (pratical training) in order the
students reach a quite good level in scientific programing.
Keywords : Programing, C++, object, scientific software, Numerical simulation
Supports : Transparents, polycopié, sujets de TP avec corrigés
Biblio : Bjarne Stroustrup, Le langage C++, 2003,
Bjarne Stroustrup, The Design and Evolution of C++, Addison-Wesley, 1st Ed.,
1994,
Ionut Danaila, Frédéric Hecht, Olivier Pironneau, Simulation numérique en
C++, (Dunod, 2003)

Cours de C++ en ligne
Bruce Eckel's Thinking in C++, 2nd edition, Volume 1 , 2001
http://www.ibiblio.org/pub/docs/books/eckel/TICPP-2nd-ed-Vol-one.zip
Bruce Eckel's Thinking in C++, 2nd edition, Volume 2 , 2003
http://www.ibiblio.org/pub/docs/books/eckel/TICPP-2nd-ed-Vol-two.zip
http://www.planetpdf.com//article.asp?contentid=6634&ra
Christian Casteyde, Cours de C/C++
http://casteyde.christian.free.fr/cpp/cours/online/book1.html
Contrôle : Contrôle continu et QCM

Besoins particuliers et remarques éventuelles

Moyens :
Commentaires :

Séances

jeu. 10 nov. 2016   - 09:00 à 10:00 : Cours Magistral (CM)
programme : Introduction C++ une extension du C
besoin : Vidéo,
Intervenants : Eric LUNEVILLE,
jeu. 10 nov. 2016   - 10:15 à 12:15 : TD en salle info (TD)
programme : familiarisation avec un environnement de développement C++, exercices basiques
besoin : Vidéo,
Intervenants : Eric LUNEVILLE, Adrien LOSEILLE, Nicolas KIELBASIEWICZ, Quentin MERIGOT,
jeu. 01 déc. 2016   - 09:00 à 10:00 : Cours Magistral (CM)
programme : Eléments d'analyse numérique : Représentation des réels, opérations sur les réels, stabilité numérique, vitesse d'exécution
besoin : Vidéo,
Intervenants : Eric LUNEVILLE,
jeu. 01 déc. 2016   - 10:15 à 12:15 : TD en salle info (TD)
programme : expérimentation numérique sur l'instabilité numérique
besoin : Vidéo,
Intervenants : Eric LUNEVILLE, Adrien LOSEILLE, Nicolas KIELBASIEWICZ, Quentin MERIGOT,
jeu. 08 déc. 2016   - 09:00 à 10:00 : Cours Magistral (CM)
programme : Introduction à la notion d'objet
besoin : Vidéo,
Intervenants : Eric LUNEVILLE,
jeu. 08 déc. 2016   - 10:15 à 12:15 : TD en salle info (TD)
programme : Ecriture d'une classe vecteur et matrice
besoin : Vidéo,
Intervenants : Eric LUNEVILLE, Adrien LOSEILLE, Nicolas KIELBASIEWICZ, Quentin MERIGOT,
jeu. 15 déc. 2016   - 09:00 à 10:00 : Cours Magistral (CM)
programme : Surcharge des opérateurs
besoin : Vidéo,
Intervenants : Eric LUNEVILLE,
jeu. 15 déc. 2016   - 10:15 à 12:15 : TD en salle info (TD)
programme : Surcharge des opérateurs sur les vecteurs et les matrices
besoin : Vidéo,
Intervenants : Eric LUNEVILLE, Adrien LOSEILLE, Nicolas KIELBASIEWICZ, Quentin MERIGOT,
jeu. 05 janv. 2017   - 09:00 à 10:00 : Cours Magistral (CM)
programme : Programmation générique (classe modèle)
besoin : Vidéo,
Intervenants : Eric LUNEVILLE,
jeu. 05 janv. 2017   - 10:15 à 12:15 : TD en salle info (TD)
programme : Développement de classes vecteur et matrice génériques
besoin : Vidéo,
Intervenants : Eric LUNEVILLE, Adrien LOSEILLE, Nicolas KIELBASIEWICZ, Quentin MERIGOT,
jeu. 12 janv. 2017   - 09:00 à 10:00 : Cours Magistral (CM)
programme : Héritage de classes
besoin : Vidéo,
Intervenants : Eric LUNEVILLE, Quentin MERIGOT,
jeu. 12 janv. 2017   - 10:15 à 12:15 : TD en salle info (TD)
programme : Classe matrice pleine et bande héritant d'une classe abstraite
besoin : Vidéo,
Intervenants : Eric LUNEVILLE, Adrien LOSEILLE, Nicolas KIELBASIEWICZ, Quentin MERIGOT,
jeu. 19 janv. 2017   - 09:00 à 10:00 : Cours Magistral (CM)
programme : Librairies et introduction à la stl
besoin : Vidéo,
Intervenants : Eric LUNEVILLE,
jeu. 19 janv. 2017   - 10:15 à 12:15 : TD en salle info (TD)
programme : Utilisation de la stl : list et itérateur
besoin : Vidéo,
Intervenants : Eric LUNEVILLE, Adrien LOSEILLE, Nicolas KIELBASIEWICZ, Quentin MERIGOT,