Introduction à la Programmation Fonctionnelle
TP noté du mercredi 23 octobre 2024 au bâtiment 336
Ne pouvant pas mettre publiquement en ligne des listes d'étudiants, merci de suivre les consignes suivantes:
- Le TP durera 1h30 (ou 2h pour les étudiants bénéficiant d'un tiers temps)
- Les sujets seront mis en ligne sur cette page à 14h15 précise
- Merci de vous rendre dans les salles machines à 14h00, pour avoir le temps de démarrer ces dernières et éventuellement changer de salle en cas de problème de place.
- Votre salle de TP est donnée ci-dessous en fonction de la première lettre de votre nom (attention, les étudiants disposant d'un tiers temps sont en salle 315):
- L2 Info de A inclus à D inclus, salle 226
- L2 Info de E inclus à M inclus, salle 314
- L2 Info de N inclus à Z inclus, salle 344
- LDD2 IM de A inclus à C inclus, salle 213
- LDD2 IM de D inclus à M inclus, salle 214
- LDD2 IM de N inclus à Z inclus, salle 224
- L2 Info ou LDD2 IM disposant d'un tiers temps: salle 315
- Vous êtes autorisés à consulter la page Web du cours, y compris les corrections
- L'accès à tout site de communication (mail, discussion), de site d'IA générative (ChatGPT) ou de site d'aide générique tels que Stackoverflow seront considérés comme des tentatives de fraude
- Aucun autre document que ceux sur la page de cours n'est autorisé
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).