Vous êtes ici : FIL > Portail > Master Info > 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 Operators.zip "
3 28/02 Inheritance Inheritance.zip TP 2
4 4/02 Exceptions Exceptions.zip TP 3
5 11/02 Templates " "
- 18/02 Int. Pedagogique -- --
6 25/02 Contrôle continu " Contrôle continu
7 4/03 Smart Pointers smart pointers.zip TP4
8 11/03 Simulation with metasim Simulation with metasim TP5
9 18/03 Lambda Functions Functional.zip "
10 25/03 Metaprogramming Metaprogramming TP6
11 1/04 Threads Threads "
12 ??/?? 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.zip
  6. Simulation with metasim
  7. Functions and lambdas
  8. Metaprogramming

TPs

  1. Stack
  2. Opérateurs sur le stack
  3. Formes
  4. Templates
  5. Simulation with metasim
  6. Graph Library
Giuseppe Lipari
dernière modification : 25/03/2019 à 13:20:35

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 x 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.

Examen intermediaire

L'examen intermediaire aura lieu le lundi 25 février pour le groupe 1 (C. Ballabriga) et le mercredi 27 fevrier pour le groupe 2 (G. Lipari), pendant l'heure de TP. L'intérrogation orale prends environ 5-6 minutes et sera fait de manière "individuelle". L'examen porte sur les premiers 4 groupes de slides : "Introduction", "Operators", "Inheritance" et "Exceptions and Templates".

Heure de passage pour le groupe 2 (G. Lipari)

DESRUMAUX 10:00:00 AM
BENKHIDER 10:06:00 AM
BENSADOK 10:12:00 AM
BEUNS 10:18:00 AM
ROCA 10:24:00 AM
BRIAND 10:30:00 AM
PROVIS 10:36:00 AM
BEAUPREZ 10:42:00 AM
AL YASINI 10:48:00 AM
BEUCHEY 10:54:00 AM
DRINCQBIER 11:00:00 AM
KASPEREK 11:06:00 AM
DJELLOULI 11:12:00 AM
MONS 11:18:00 AM
BA 11:24:00 AM
MARES 11:30:00 AM
LAFQUIH 11:36:00 AM
ROUGETET 11:42:00 AM
KUTEK 11:48:00 AM
LABSARI 11:54:00 AM
LECOINTE 12:00:00 PM
OUTIOUA 12:06:00 PM
YAHIATENE 12:12:00 PM
Giuseppe Lipari
dernière modification : 26/02/2019 à 12:53:12