Programmation fonctionnelle avancée
Cette page est dédiée au cours "Programmation fonctionnelle avancée", L2 groupe A, Licence Informatique, Univ. Paris 8, 2023. Pour plus de détails concernant la planification, voir : ici.
Modalités d'évaluation
La note finale est déterminée par :
-
Une série de devoirs à rendre, qui seront annoncés dans les exercices affichés par session ci-dessous. Vous êtes donc censé les surveiller. Ces travaux sont à rendre individuellement et comptent pour 40% de la note finale.
-
Un examen écrit. Il compte pour 60% de la note finale.
Je vous suggère fortement d'essayer les travaux par vous-même dans un premier temps. Si vous êtes bloqué, essayez d'abord d'identifier les points sur lesquels vous avez des difficultés, et de revisiter le matériel de cours.
Si, malgré tout, vous constatez que vous n'arrivez pas à avancer, vous êtes autorisé (et encouragé) à discuter des devoirs avec vos collègues.
Cependant, vous êtes censé comprendre parfaitement tout ce que vous rendrez et citer vos collaborateurs et toutes les sources que vous avez utilisées.
Je me réserve le droit d'examiner tout groupe d'étudiants que je soupçonne de méconduite académique (copiage, plagiat) et d'ajuster leurs notes en conséquence.
Dépôt git
Le code accompagnant le cours se trouve dans ce dépôt public. Apprendre à programmer ne peut pas se faire simplement en lisant des diapositives, l'expérience pratique est absolument essentielle. Je vous conseille vivement de cloner le repo ci-dessus et d'expérimenter avec le code qu'il contient.
Matériel de cours
-
Séance #0 : Introduction à OCaml, variables, fonctions, récursion, motifs & pattern matching, types de données algébriques, motifs de programmation impérative. slides code exercises
-
Séance #1 : Polymorphisme, listes et récursivité structurelle, records. slides code exercises
-
Séance #2 : Arbres, map & fold sur des arbres. slides exercises
-
Séance #3 : Étude de cas : implementation de la fonction
map
et de ses variantes. Modules, structures et signatures. slides exercises code -
Séance #4 : Types abstraits, includes, contraintes de type, et foncteurs. slides exercises code
-
Séance #7 : Les monades Reader et State, Maps. slides exercises
-
Séance #9 : Un bref aperçu de la correspondance Curry-Howard. slides
Ressources
-
Support de cours pour le groupe L2-B par Nicolas Jouandeau: Consultez-le pour obtenir un point de vue supplémentaire sur la matière enseignée.
-
Documentation OCaml: Référence essentielle pour tous les aspects d'OCaml. En particulier, la documentation d'API couvre les modules de la bibliothèque standard et contient une fonction de recherche très utile (vous pouvez même rechercher par signature de type!).
-
OCamlverse: Documentation sur de nombreux aspects d'OCaml. Je vous recommande particulièrement de consulter le tutoriel sur Dune.
-
OCaml Programming: Correct + Efficient + Beautiful: Le manuel utilisé pour le cours CS 3110 Data Structures and Functional Programming à l'Université de Cornell. Voir aussi les vidéos d'accompagnement.