Introduction à la Programmation Fonctionnelle
Projet IPF
- Le sujet du projet (version sans serif) (mise à jour du 27/11, typo dans le calcul des fréquences (2+3=5, pas 6))
- La feuille de la séance 1 (version sans serif)
- La feuille récapitulative de la séance 1 (version sans serif)
- La feuille de la séance 2 (version sans serif)
- Le squelette de code
- Des supports de cours sur git
- Le script d'initialisation d'OCaml pour les sessions de secours.
But du cours
Ce cours est une introduction générale à la programmation fonctionnelle. On y présente :
- Le paradigme fonctionnel
- L'utilisation de structure de données persistentes
- La programmation récursive
Le langage utilisé dans le cours est le langage OCaml.
Travailler avec OCaml
Les tutoriels suivants permettent d'installer OCaml sur votre machine ou de travailler à distance avec OCaml sous l'environnement JupyterHub. Un glossaire liste les termes utilisés, n'hésitez pas à le consulter si certains termes semblent obscurs.
- Instructions officielles. Elles devrait fonctionner sans trop de problème. En cas de soucis, vous pouvez regardez les tutoriels ci-dessous plus détaillés.
- Installation d'OCaml + VSCode sous Windows (mise à jour à venir, l'ancien document n'est plus correct)
- Installation d'OCaml sous WSL + VSCode sous Windows
- Installation d'OCaml sous MacOS
- Installation d'OCaml sous Linux : suivre le tutoriel sur la page
- Utilisation de JupyterHub pour OCaml (indisponible suite au piratage de l'Université mais reviendra bientôt)
Plan du cours, supports de cours et de TP
- Cours 1 : Présentation, introduction au langage OCaml, types de base, fonctions
récursives. cours 1 en HTML5
, cours 1 en
PDF et version
imprimable
.
- Le sujet du TP 1.
- Le corrigé du TP 1
- L'archive à télécharger
- Le sujet TP 1 en version sans serif.
- Cours 2 : Fonctions récursives avancées, inférence de types cours 2 en HTML5
, cours 2
en
PDF et version
imprimable
.
- Le sujet du TP 2.
- Le corrigé du TP 2
- Cours 3 : Types structurés, filtrage, polymorphisme, ordre supérieur cours 3 en HTML5
, cours 3
en
PDF et version
imprimable
.
- Le code commenté de l'activité 1 (slide 19)
- Le code commenté de l'activité 2 (slide 33)
- Le sujet du TP 3.
- Le corrigé du TP 3
- Cours 4 : Exceptions, listes (1) cours 4 en HTML5
, cours 4
en
PDF et version
imprimable
.
- Le sujet du TP 4.
- Le corrigé du TP 4
- Cours 5 : Fonctions anonymes, Itérateurs, Application partielle cours 5 en HTML5
, cours
5 en
PDF et version
imprimable
.
- Le sujet du TP 5.
- L'archive du TP 5 contenant le fichier queries.ml et le fichier movies.csv.
- Le corrigé du TP5
- Cours 6 : Algorithmes avancés sur les listes cours 6 en HTML5 , cours 6 en PDF et version imprimable .
Information pratiques
- Cours : mercredi après-midi, amphi H6, batiment 336.
- TP : mercredi après-midi (L2 Info GR2, LDD2 IM GR1 & GR2, jeudi matin L2 Info GR1 & GR2)
- Chargés de TP : Loïc Le Mogne, Paul Patault, François Pirot, Renaud Vilmart, Philippe Volte--Vieira.
- Les supports de cours sont mis en ligne au plus tard la veille au soir
- Les corrigés sont mis en ligne tous les vendredi après-midi
Aide mémoire pour l'examen
Un aide mémoire est disponible pour l'examen et le TP noté.
Le sujet de première session 2020-2021avec un corrigé intégré est disponible ici.
Le sujet de première session 2021-2022 (sans le corrigé) est disponible ici.
Le sujet de première session 2022-2023 est disponible ici, avec un corrigé pour l'exercice 3 (le problème).