Cours de L3 “programmation 1”Jean Goubault-Larrecq
LSV, ENS Paris-Saclay, CNRS, Université Paris-Saclay
|
61 avenue du président-Wilson, F-94230 Cachan |
goubault@lsv.fr |
Phone: +33-1 47 40 22 60 Fax: +33-1 47 40 75 21
|
|
Le cours de programmation de 1ère année du
l’année L3 se découpe
en deux parties. La deuxième sera effectuée par
Giuseppe
Castagna.
Ceci est la page de la première partie.
Il y sera question:
-
des différents styles de langages de programmation, avec un
accent particulier sur la programmation impérative (notamment en
langage C), qui
est sans doute relativement nouvelle pour vous. On parlera aussi de
langages fonctionnels, mais il est probable que vous ayez déjà
quelques bases en OCaml.
- Il y sera aussi question des constructions typiques de chaque
famille de langage, des questions de portée (lexicale, opposée à la
liaison dynamique), de passage de paramètres, des constructions de
types de données, etc.
- A plus bas niveau, on verra comment tous ces objets sont
représentés en machine, et le cours s’interfacera notamment avec
celui d’architecture et systèmes de
Stefan Schwoon.
- On s’exercera aussi à écrire de petits programmes, et des moins
petits, dans chacun de ces langages et chacun des styles permis ou
encouragés dans ces langages. Ceci se fera en séances de TP, ou
d’une séance de TP sur l’autre.
Tout ceci nous occupera, grosso modo, de septembre à novembre.
De novembre à début janvier, nous profiterons des acquis pour
progresser vers:
-
la sémantique des langages de programmation, autrement dit la
représentation mathématique de ce que les programmes font (ou
devraient faire). On parlera notamment de sémantique opérationnelle
à grands pas, et de sémantique dénotationnelle.
- L’intérêt principal d’une formalisation mathématique est
d’établir des théorèmes. On parlera donc de preuve sur des
programmes, ou sur des propriétés de langage de programmation.
- L’autre intérêt d’une sémantique est la documentation précise du
langage. On tentera donc en cours de définir une ou plusieurs
sémantiques de certains fragments du langage C. En parallèle, on
appliquera notre compréhension de la sémantique de C et de
l’assembleur x86 à réaliser un petit compilateur de C vers x86, en
assembleur: c’est le projet de programmation 1, qui comptera
pour une bonne partie de la note finale (outre les TP, le devoir à
la maison/partiel, et l’examen).
Ce projet sera officiellement après environ 7 semaines, soit
probablement le 05 novembre.
Vous pouvez déjà regarder à quoi son incarnation des années
précédentes
ressemblait,
jusqu’en 2012. En 2013, Lucca Hirschi
l’a fait évoluer d’une architecture 32 bits à une architecture 64
bits; ceci a impliqué quelques complications, dont G. Houdet vous parlera.
Le plan est que ce projet est en deux phases: une première phase à
rendre deux semaines après la date de lancement, et une deuxième
phase, beaucoup plus sophistiquée, et qui devra exercer vos talents
en compréhension de sémantique, terminant sur la remise d’un code et
d’un rapport court début janvier.
1 Le programme des cours
Ceci est un programme indicatif, et je changerai probablement
certaines informations ici ou là, au fur et à mesure.
-
Mardi 17 septembre:
cours
1, et les
transparents
et TD1.
Diversité des langages de programmation. Un petit programme simple
en C. Représentation des entiers, des caractères. Non, on n’aura
pas le temps de faire tout ce qui est dans le poly du cours pour
cette séance.
- Mardi 25 septembre, suite du cours 1: sémantique, bugs et
cambouis, bases de langages impératifs, représentation des types de
données de base. Puis le
cours
2 proprement dit et TD 2:
assembleur x86 (et MIPS en TD), mémoire, adresses, pointeurs,
tableaux, la pile.
- Mardi 01 octobre:
cours
3
3 [suite du poly du cours 2], et TD 3.
- Mardi 08 octobre:
cours
4 et TD 4.
- Mardi 15 octobre: Cours 5 et TD 5.
Le cours 5 est juste la suite du poly du cours 4.
- Mardi 22 octobre:
cours
6 et TD 6. On sort du cambouis, et on commence à
faire de la sémantique. Voici la première série de
transparents de ce cours de sémantique.
Pas de cours la semaine du 28 octobre au 03 novembre: vacances de la
Toussaint.
-
Mardi 05 novembre:
cours
7 et TD 7.
Voici la deuxième série de
transparents de ce cours de sémantique.
- Mardi 12 novembre: cours 8 (suite des polys précédents) et TD 8.
Voici la troisième série de
transparents de ce cours de sémantique.
- Mardi 19 novembre: cours 9 et TD 9.
Voici la quatrième série de
transparents de ce cours de sémantique.
- Mardi 26 novembre: (visite de labos ou)
cours
10 et TD 10. Voici la série de
transparents que nous utiliserons pour parler de
typage.
- Mardi 03 décembre: (visite de labos ou) cours 11 et TD 11.
- Mardi 10 décembre: (visite de labos ou) cours 12 et TD 12.
Suite des cours précédents, ou bien, si le temps le permet, les
bases de
l’interprétation
abstraite, la théorie qui sous-tend l’analyse statique de
programmes, avec les
transparents.
- Mardi 17 décembre: (visite de labos ou) cours 13 et TD 13.
Pas de cours les deux semaines du 21 décembre au 05 janvier:
vacances de Noël.
-
Mardi 07 janvier: cours 14 et TD 14.
- Mardi 14 janvier: examen.
This document was translated from LATEX by
HEVEA.