1 September 2013
Objectif
Au niveau 1, l’objectif de ce cours est de :
- connaître un langage de programmation impératif multi-usage (par exemple le langage C) ;
- pouvoir s’adapter facilement à d’autres langages équivalents ;
- savoir programmer efficacement les principaux algorithmes “classiques” ;
- connaître les outils et méthodes élémentaires d’aide au développement et à la validation de programmes.
Au niveau 2, l’objectif de ce ce cours est d’introduire à aux concepts fondamentaux de l’informatique que sont langages et automates.
Volume horaire par certificat
Heures encadrées :
- 10 h cours
- 10 h travaux dirigés
Heures non-encadrées :
- 10 h travaux pratiques non encadrés en salle de TP (voir l’organisation type de la journée)
- 20 h travail personnel
Niveau 1 : Langage et programmation (certificat DU-ISN-C1.3)
Responsable Anne Rasse
Intervenants : Anne Rasse et Guillaume Huard
Contenu
- Notions fondamentales des langages de programmation impératifs
- Un exemple : le langage C
- notion de syntaxe et de sémantique;
- structure d’un programme (module, sous-programme, portée, durée de vie);
- état et transformation d’états, structures de contrôle;
- principaux types de données, allocation dynamique;
- interface avec un environnement utilisateur (fichiers, ligne de commande, interface graphique).
- Implémentation de structures de données et algorithmes classiques
- encapsulation de données, notion de type abstrait;
- implémentation des types de données usuels (séquence, pile, file, arbre, graphe, etc).
- mise en oeuvre d’algorithmes standards (tris, parcours de graphe, algorithmes géométriques, etc.)
- Techniques et outils élémentaires d’aide au développement de programmes}
- fonctionnalités offertes par le système d’exploitation (gestion de fichiers, langage de commande);
- compilation : compilation séparée, Makefile;
- mise au point : technique et outils;
- validation : test et instrumentation de programmes
Niveau 2 : Langage et compilation (certificat DU-ISN-C2.3)
Responsable Fabienne Carrier
Contenu
Ce cours doit permettre d’acquérir
-les connaissances en terme de savoirs (fondamentaux et appliqués) - Langage : lexicographie, syntaxe, sémantique - Description et reconnaissance de langages - Compilation : vérifications syntaxiques et sémantiques, génération de code, optimisation - les savoir-faire - Description de langages simples a l’aide de grammaires régulières ou hors-contexte - Utilisation de la sémantique opérationnelle pour décrire les aspects de sémantique statique et dynamique d’un langage - Programmation d’un reconnaisseur syntaxique
- les connaissances/outils pédagogiques maîtrisés
- Grammaires, programmation d’un reconnaisseur en utilisant un generateur d’analyse LL, realisation d’un interpreteur
Bibliographie
- Chapitres 3 de Introduction à la science informatique : Pour les enseignants de la discipline en lycée informatique, Gilles Dowek (coordination de l’ouvrage collectif) Collection Repères pour agir, CRDP Académie de Paris. 2011
- Autres références (non exhaustif)
- Gilles Dowek and Jean-Jacques Lévy. Introduction à la théorie des langages de programmation. Ecole Polytechnique, 2006.
- Pierre Wolper. Introduction à la calculabilité : Cours et exercices corrigés. Dunod, 3e edition, 2006.
- Alfred Aho, Ravi Sethi, and Jeffrey Ullman. Compilateurs : principes techniques et outils, cours et exercices. Dunod, 2000.
- Quelques références sur des langages de programmation
- Bernard Cassagne. Introduction au langage C. Livre électronique, 1998.
- K. N. King. C Programming : A Modern Approach. W. W. Norton & Company, 2e edition, 2008.
- Bruce Eckel. Thinking in Java. Prentice Hall, 2e edition, 2006.
- Patrick Niemeyer and Jonathan Knudsen. Introduction à Java. O’Reilly, 2002.