Vous êtes ici : FIL > Portail > Master Informatique > M1S2 > COA

Conception Object Avancée

Responsable

Giuseppe Lipari

Volume horaire

12 séances de CM/TD et 12 séances de TP.

Les transparents et le matériel didactique sont en anglais.

Crédits

5 ECTS

Description

Cette UE porte sur le langage de programmation C++.

Le langage C++ n'est pas une simple evolution du langage C, mais c'est un langage plus riche et complexe. Les efforts de standardization récentes (C++11, C++14 et C++17) ont ajouté une grande nombre de foncionnalité comme les lambda functions, l'induction sur les types, la metaprogrammation, etc. qui ont modernisé le langage. Ses characteristiques principales sont:

  • Haute performance : C++ est un de langage le plus performants en terme de rapidité et taille en mémoire du code géneré ;
  • Un système de templates très puissante qui permet la meta-programmation ou programmation à temps de compilation.
  • Un système de typage plus fort et sûr que des langages bas-niveau comme le C.

Le C++ est un des langages le plus utilisé aujourd'hui. Il y a un nombre très élevé de programmes et librairies codé en C++ pour de raisons de performances:

  • Interfaces graphiques: Qt, GTK++, etc.
  • Librairies de processing d'images: OpenCV, dlib, OpenGL, etc.
  • Librairies graphiques: Cairo, SDL, Cinder, etc.
  • Game engines: EnTT, EntityX, etc.
  • Mathematique, machine learning, etc.

En revanche, le nombre très élevé de fonctionnalités rends plus difficile de programmer correctement en C++.

Specialités

Cette UE est compatible avec les specialités TIIR, IVI, IAGL.
Giuseppe Lipari
dernière modification : 14/01/2019 à 10:30:46

Objectives

Dans cette UE, l'étudiant apprendra:
  • Les fonctionnalité du langage ;
  • Les patron de programmation typique du C++ moderne ;
  • Des applications typiques du langage.

Contenu (en anglais)

  • Introduction
  • Pointers vs. references, copy constructor, const references
  • operators, type conversion
  • inheritance, virtual functions, slicing, multiple inheritance
  • exceptions, templates, stl
  • template metaprogramming
  • function objects, lambda functions, auto, range-based loops
  • temporary objects and move semantic
  • exception safety, smart pointers
  • threading, atomic instructions
  • design patterns in C++
Giuseppe Lipari
dernière modification : 14/01/2019 à 10:30:46

Communications

  • La séance de TP de lundi 14 janvier (groupe 1) est annullée.
  • La séance de TP de mercredi 23 janvier (groupe 2) est annullée.
  • À partir du 21 janvier, les séances de CTD se font en Amphi Turing (M3, premier étage)

Semainier

Séance Date Content File TP
1 14/01 Introduction, basics Introduction.zip TP 1
2 21/01 constness, operators TBA "
3 28/02 Inheritance TBA TBA
4 4/02 Exceptions TBA TBA
5 11/02 Templates   TBA
- 18/02 Int. Pedagogique -- --
6 25/02 Contrôle continu TBA Contrôle continu
7 4/03 Smart Pointers TBA TBA
8 11/03 Exception-safe programming TBA --
9 18/03 Template Metaprogramming TBA --
- 25/03 Lambda function -- --
10 1/04 Threads in C++ TBA  
11 ??/?? EXAMEN -- --

Documents

Slides et exemples

Chaque fichier .zip contient le fichier pdf avec les slides, et un dossier examples qui contient les exemples du cours.

  1. Introduction
  2. Operators
  3. Inheritance
  4. exceptions.zip
  5. smart pointers

TPs

  1. Stack
  2. Opérateurs sur le stack
  3. Formes
Giuseppe Lipari
dernière modification : 14/01/2019 à 10:30:46

Examen

L'épreuve orale porte sur tout le programme (voir les slides et les exemples fourni dans la section "Documents"). L'examen est individuel et il dure environ 20 minutes.

L'étudiant devra savoir répondre à des questions sur les TPs et commenter du code proposé par l'enseignant, ou resoudres de simples exercices de programmation.

Attention : il faut savoir s'exprimer correctement, en utilisant les termes techniques appropriés (en français ou en anglais) : la note tiendra compte aussi de la qualité de l'expression orale. La note finale sera calculé comme une moyenne de la note des TPs, et de l'épreuve oral.

Giuseppe Lipari
dernière modification : 14/01/2019 à 10:30:46