Partager cette page :
Discipline(s) : Infomatique et télécommunications

Programmation 2 : programmation avancée

Semestre Semestre 2
Type Obligatoire
Nature UE
Crédits ECTS 3
Volume horaire total 36
Volume horaire CM 12
Volume horaire TD 12
Volume horaire projet 12

Responsables

Pré-requis

  • Cours de programmation du semestre 5
  • Maîtrise du langage C
  • Maîtrise de l’environnement Unix
  • Maîtrise de la programmation Caml
  • Expérience de programmation orientée objet

Objectifs

  • Découverte des outils de programmation avancés dans un cadre de type professionnel
  • Maîtrise des aspects sémantiques de la gestion de l’environnement dans les langages de programmation
  • Réalisation d’un interprète d’un langage simple

Contenu

Description du cours

Ce cours prolonge ceux du semestre 5 en approfondissant deux points particuliers.
Tout d’abord, l’utilisation d’un langage de programmation de niveau professionnel, C++. Il s’agit d’utiliser des outils avancés: compilateurs, environnements de programmation, gestionnaires de version, débogueurs, outils de visualisation de performance, etc.
Ensuite, il s’agit d’approfondir certains aspects sémantiques des langages de programmation concernant la gestion de l’environnement : gestion statique et dynamique de l’environnement, notion de liaison globale et locale, etc. Les langages supports sont Lisp et Scheme.
Le cours inclut un projet de programmation avec une gestion agile en petits groupes, sur une semaine à mi-temps. Il consiste en la réalisation d’un interprète d’un langage fonctionnel simple.

Programme

A. Programmation C++
a. Aspects principaux : classes, objets, méthodes, héritage, références
b. Aspects avancés : virtualisation, exceptions, généricité, pointeurs
c. Utilisation de la STL
B. Étude de la notion de liaison
a. Liaison dynamique
b. Liaison statique
c. Application à la programmation d’ordre supérieure
C. Réalisation d’un interprète
a. Méta-interprète Lisp
b. Gestion des environnements Scheme
c. Application à la gestion des futurs

Bibliographie

Langage C et C++
• Le langage C, norme ANSI, Brian W. Kernighan, Dennis M. Ritchie
• Méthodologie de la programmation en C, Achille BraquelaireHaut du formulaire
• C++ for mathematicians, by Ed Scheinerman and published by CRC Press. Le livre de référence du cours.
• Langage C++: les spécifications du standard ANSI/ISO expliquées, par Jacquelin Charbonnel, Dunod.
• Notes de cours de l'ISTIC: Programmation par objets en C++, P. Le Certen, L. Ungaro, numéro 99.
• The C++ programming language, Bjarne Stroustrup.
Langages Lisp et Scheme
• Structure and Interpretation of Computer Programs, Harold Abelson, Gerald Jay Sussman, Julie Sussman, MIT Press.
• The little LISPer, 3rd Edition, Daniel P. Friedman, Matthias Felleisen, Pearson, 1989.
• Principes d'implantation de Scheme et Lisp, Christian Queinnec, 2007.

Contrôles des connaissances

En session principale, une note contrôle continu (CC)
Un TD noté
Un projet de programmation
Un examen terminal de synthèse
En session de rattrapage, un examen oral (O)
Tous documents/matériels sont autorisés.
Note finale en session 1 : CC
Note finale en session 2 : O

Mise à jour le 12 juillet 2017