Programmation Fonctionnelle Avancée
But du cours
Ce cours est la suite du cours de L2 « Introduction à la programmation fonctionnelle » et d'une partie du cours de L2 « Outils Logiques et Algorithmiques ». On y présente :
- Le paradigme fonctionnel et le langage OCaml (rappel)
- L'utilisation de structure de données persistentes
- La programmation récursive et son utilisation dans des algorithmes avancés (diviser pour régner, alogorithme avec retour arrière)
- L'interaction entre programmation fonctionnelle est aspects impurs (structures de données mutables, boucles, …)
- Outils de génie logiciels propres à OCaml : organisation du code avec les modules et les foncteurs, utilisation de dune
Le langage utilisé dans le cours est le langage OCaml.
Plan du cours, supports de cours et de TP
- Cours 1 :
- Présentation, rappels sur le langage OCaml.
cours 1 en HTML5
, cours 1 en
PDF et version
imprimable
.
- Le sujet du TP 1 (ne sera pas fait en séance).
- Le L'archive du TP 1 à compléter
- Le corrigé du TP 1
- Cours 2 :
- Rappels sur le langage OCaml (fin).
cours 2 en HTML5
, cours 2 en
PDF et version
imprimable
.
- Le sujet du TP 2 (ne sera pas fait en séance).
- L'archive avec le code à compléter.
- L'archive avec le code à compléter (version extérieure au PUIO).
- Cours 3 :
- Arbres binaires de recherche (1). cours 3 en HTML5 , cours 3 en PDF et version imprimable .
- Cours 4 :
- Modules, Foncteurs et compilation séparée. cours 4 en HTML5 , cours 4 en PDF et version imprimable .
- Cours 5 :
- Modules, Foncteurs et compilation séparée (fin) cours 5 en HTML5 , cours 5 en PDF et version imprimable .
- Cours 6 :
- Traits impératifs d'OCaml cours 6 en HTML5 , cours 6 en PDF et version imprimable .
- Cours 7 :
- Tables de hachage cours 7 en HTML5 , cours 7 en PDF et version imprimable.
- Cours 8 :
- Trie (traille)
cours 8 en HTML5
, cours 8 en
PDF et version
imprimable.
- Le code de la recherche dans un trie :fichier consultable en ligne (avec la coloration syntaxique)
- Le sujet du TP 8 (version Sans Serif, grand interligne).
- L'archive avec le code à compléter.
- Cours 9 :
- Trie (fin)
cours 9 en HTML5
, cours 9 en
PDF et version
imprimable.
- Le code des fonctions vues en cours
- Le sujet du TP 9 (version Sans Serif, grand interligne).
- L'archive avec le code à compléter (l'exercice 1 est déjà fait jusqu'à la question 5).
- Le corrigé du TP 9.
- Pas de cours le 11/11/25 :
- TP de révision/consolidation
- Cours 10 :
- Étude de cas
cours 10 en HTML5
, cours 10 en
PDF et version
imprimable.
- Le fichier d'idées écrit en cours collectivement pour arriver à la solution
- Le sujet du TP 10 (version Sans Serif, grand interligne).
- L'archive avec le code à compléter.
- Le corrigé du TP 10.
- Cours 11 :
- Étude de cas, backtracking/mémoization cours 11 en HTML5 , cours 11 en PDF et version imprimable.
- Cours 12 :
- Préparation à l'examen (le sujet 2024-2025 est dans la liste en bas)
- Le sujet du TP 12 (version Sans Serif, grand interligne)..
- Le code à compléter.
- Le corrigé du TP 12.
Examens passés
- 2023-2024, session 1 :
- le sujet
- le corrigé (bouton droit, enregisrer sous)
- le corrigé en ligne avec coloration syntaxique
- 2023-2024, session 2:
- L'aide mémoire intégré aux sujets
- 2025-2025, session 2:
- L'aide mémoire intégré aux sujets
Information pratiques
- Cours : mardi après-midi, Petit amphi du PUIO.
- TP : jeudi, vendredi et lundi après-midi au PUIO
- Chargés de TP : Renaud Vilmart puis Paul Patault (vendredi après-midi), François Pirot (lundi après-midi), Clémence Sebe (jeudi matin, vendredi après-midi).
- Les supports de cours sont mis en ligne au plus tard la veille au soir
- Les corrigés sont mis en ligne tous les mardi, avant le cours
Resources complémentaires
- La page dédiée aux livres sur OCaml.org contient de nombreuses ressources, dont des livres gratuits. Attention, certains concepts sont présentés différemment du cours.
- Pour l'algorithmique en général, on ne peut que conseiller le livre Algorithms, 4th Edition (Sedgewick and Wayne, Ed. Addison-Wesley).