Outils théoriques pour formaliser et comprendre le comportement des
programmes, et techniques de programmation avancées, dans deux
paradigmes : la programmation fonctionnelle et la programmation
concurrente.
Les outils couvrent : les sémantiques qui donnent une vision
globale du résultat et du comportement d’un programme, les modèles
d’exécution qui décrivent à un grain plus fin les étapes de
l’exécution, et les systèmes de types qui garantissent certaines
propriétés sur l’exécution des programmes.
Documents
- 11/09 : lambda-calcul
- Cours. Lambda-calcul et stratégies d'évaluation : notes.
- TP. Algorithme MinMax et évaluation paresseuse : squelette .ml, énoncé html.
- Culture.
- Why functional programming matters (Hughes).
- Call-by-name, call-by-value and the lambda-calculus (Plotkin).
- 18/09 : continuations
- Cours. Continuations et transformations CPS : notes.
- TP. Exploration d'abres en style CPS : squelette .ml, énoncé html.
- Culture.
- Continuation-Passing C: compiling threads to events through continuations (Kerneis & Chroboczek).
- Lambda: The Ultimate Imperative (Steele & Sussman). Autre version.
- 25/09 : monades
- Cours. Transformations de programmes et monades : notes.
- TP. Exemples de monades : compteurs et non-déterminisme. squelette .ml.
- 02/10 : types
- Cours. Typage : notes provisoires.
- 09/10 : types, suite
- TP / DM première partie. Typage : squelette, version en ligne.