Introduction to C/C++

Introduction to C/C++

Responsables :

Pierre-Etienne MOREAU, Professeur, Pierre-Etienne.Moreau@univ-lorraine.fr

Cédric ZANNI, Maitre de Conférences, Cedric.Zanni@univ-lorraine.fr

Durée du module : 36 heures

Crédits ECTS : 4

Objectifs pédagogiques

“This course provides a fast­paced introduction to the C and C++ programming languages.
You will learn the required background knowledge, including memory management, pointers, 
preprocessor macros, object­ oriented programming, and how to find bugs when you
inevitably use any of those incorrectly.” (MIT 6.S096)

Contenu - Programme

Mots clefs :

langage machine, langage de programmation, microprocesseur, compilation, structures de donnée, gestion de la mémoire, outils de build

Outils utilisés

GCC, Gvim, Emacs, VisualStudio

Descriptif :

Comprendre de manière abstraite le mécanisme d’exécution des programmes

Être capable de comprendre le fonctionnement d’un programme

Être capable d’écrire ou de modifier un programme écrit en C ou C++

Fonctionnement d’un ordinateur

    • architecture
    • rappels sur l'exécution d'un programme
    • processeur, langage machine
    • langage d’assemblage, assembleur
    • langage haut niveau, compilation
    • notion de machine abstraite
    • mémoire, donnée, programme
    • introduction à Unix

Compilation pipeline

    • pré­processeur
    • compilation, règles de déclaration, règles de typage
    • compilation séparée, linkage
    • conception modulaire de programmes
    • outils de build (makefile)

Syntaxe et sémantique de core C

    • types de données élémentaires
    • codage de l’information (int, short, char)
    • structures de contrôle
    • notion de tableau
    • notion de chaine

Organisation de la mémoire

    • notion d’adresse
    • déréférencement
    • pile et tas
    • allocation dynamique

Structures de données avancées

    • type record
    • allocation dynamique et gestion de la mémoire

Introduction à C++

    • encapsulation des données, classes, espace de noms
    • gestion de la mémoire, constructeurs et destructeurs

Programmation objet

    • héritage, polymorphisme
    • liaison dynamique
    • entrées/sorties

Utilisation avancées

    • standard template library
    • pointeurs de fonctions
    • exceptions
    • standardisation

Applications

    • Exemples issus de problématiques liées aux départements autres que I&S
    • Analyse d'image avec OpenCV
    • Programmation parallèle avec MPI

Supports de cours :

Compléments de cours :

vous devez lire ces livres si vous voulez progresser

    • Le langage C, Norme ANSI, Brian W. Kernighan, Denis M. Ritchie, Dunnod (une référence)
    • C: A Reference Manual, Fifth Edition, Samuel P. Harbison, Guy L. Steele Jr., Pearson, 2002 (mon préféré)
    • Effective C++, Third Edition, Scott Meyers, Addison Wesley, 2005 (excellent mais il faut déjà connaitre un peu le langage)
    • C++ Primer, Fifth Edition, Stanley B. Lippman, Josée Lajoie, and Barbara E. Moo, Addison Wesley, 2013 (un gros pavé pas facile à avaler)
  • Autres cours introductifs :
    • CS197U, UMassAmherst, A Hands-on Introduction to UNIX
    • EECS381, University of Michigan (matériel de très bonne qualité)
    • S087, MIT (très détaillé mais peu pédagogique)
    • S088, MIT (assez classique)
    • S096, MIT (premier cours intéressant, ensuite cela devient classique)
    • 6.S096, 2013, MIT
    • 6.S096, 2014, MIT
  • un article intéressant pour les "vieux" programmeurs : How to C in 2016

Séances :

  1. (18/09/2018) - Fonctionnement d'un ordinateur, introduction à Unix. Cours au tableau. TD.
  2. (25/09/2018) - Compilation pipeline [S096, MIT]. TD.
  3. (02/10/2018) - Types de données élémentaires et tableaux. TD.
  4. (16/10/2018) - Structures de contrôle et notion de chaine. TD.
  5. (23/10/2018) - Notion d'adresse : allocation dynamique des tableaux et de chaines. TD.
  6. (06/11/2018) - Types de données structurées. TD + projet
  7. (13/11/2018) - Introduction à C++ [S088, MIT]. TD Introduction C++.
  8. (04/12/2018) - Conception objets, héritage, polymorphism [S088, MIT]. TD Polymorphisme.
  9. (11/12/2018) - Standard Template Library. Cours. TD. exemple.
  10. (18/12/2018) - Interface graphique. TD(Qt).
  11. (08/01/2019) - Projet
  12. (15/01/2019) - Projet

Mode d’évaluation :

Contrôle continu, projet et examen final.