Planning PF (programmation fonctionnelle, Info4 - Polytech)
1 Semaine 0
1.1 CM1 05/09/2025
1.1.1 Chap 1 : introduction à la programmation fonctionnelle en OCaml
1.2 TD1 05/09/2025
- 1.1, 1.2 (type somme, filtrage)
 - 1.3 (fonctions)
 - 1.4 (if fonctionnel)
 - 1.6 (récursivité : factorielle)
 - 1.8 (portées) : à faire à la maison
 - En option : 1.5, 1.7
 
2 Semaine 1
2.1 TP1 12/09/2025
2.1.1 Vérification des installations
2.1.2 Exercices introductifs
Section 1 du poly TP : aller aussi loin que posssible.
Méthode de travail : il faudra résoudre des exercices de chaque catégorie (1.3 découverte, 1.4 définitions de types, 1.5 fonctions) ; il n'est pas nécessaire de finir une catégorie avant de passer à la suivante.
3 Semaine 2
3.1 CM2 17/09/2025
3.1.1 Chap 2 :
- Opérateurs logiques et structuration de données
 - Sommes et filtrage
 - Récurrence et récursion
 
3.2 TD2 17/09/2025
- 1.8 (portées) : correction (fait maison)
 - 2.1 (arbres binaires)
 - 2.3, 2.4 (ABR) ; en option : 2.5
 - listes : 3.1 (
listeintseulement ; somme des éléments) ; 3.2, 3.4 (en utilisantmax_intet le typeoption) 
Fait R1:
- 1.8 (portées) : correction (fait maison)
 - 2.1 (arbres binaires)
 - listes : 3.1 (
listeintseulement ; somme des éléments) ; - 2.3
 
3.3 pas de TP : WECS
4 Semaine 3
4.1 CM3 25/09/2024
4.1.1 Chap 2
- bienfaits du filtrage
 
4.1.2 Chap 3
- évaluation, environnement jsq 
let rec 
4.2 TD3 25/09/2025
- 5.1 à 5.4 (ordre supérieur élémentaire) – 5.1 : somme de deux fcts arith – 5.2 : compo (g ∘ f) et compo2 : ('a -> 'b * 'c) -> ('b -> 'c -> 'd) -> 'a -> 'd – 5.3 : produit de n fonctions arith – 5.4 : curry / uncurry
 - listes (?)
 - 2.2 (preuve simple arbre binaire)
 - 1.9 (évaluation de fonctions + typage)
 
4.2.1 R1 : 2025
fait: fr 5.1 a 5.4 + 2.2 + commencé le 3.14 (mon interpretation de liste)
4.2.2 TD3 25/09/2025
- 5.1 à 5.4 (ordre supérieur élémentaire) – 5.1 : somme de deux fcts arith – 5.2 : compo (g ∘ f) et compo2 : ('a -> 'b * 'c) -> ('b -> 'c -> 'd) -> 'a -> 'd – 5.3 : produit de n fonctions arith – 5.4 : curry / uncurry
 - listes (?)
 - 2.2 (preuve simple arbre binaire)
 - 1.9 (évaluation de fonctions + typage)
 
4.3 TP2 26/09/2025
4.3.1 Arbres binaires, ABR
Section 2 du poly TP
5 Semaine 4
5.1 CM4 01/10/2025
5.1.1 Chap 3
- fin évaluation du let rec
 
5.1.2 Chap 4 :
- ordre sup élémentaire
 - curryfication
 - typage jsq 
fun x -> x x, 
5.2 TD4 01/10/2025
- 3.7, 3.8 (fonctions simples sur les listes)
 - 3.15, 3.16 (propriétés de append et preuves)
 
6 Semaine 5
6.1 CM5 08/10/2025
- Exceptions
 - Le min d'une liste,
avec exception juste sur l'appel "initial"
- récursif structurel (sans accumulateur)
 - récursif avec accumulateur
 
 - Ordre sup : verif ABR avec accumulateur fonctionnel
 - Preuve de long2 u 0 = long u (sauf si preuve min suffisante -> exo ?)
 
6.2 TD5 08/10/2025
- 4.1, 4.2 (exceptions)
 - preuves : fichier Coq renv_acc.v fourni en ligne
- 3.16 (associativité de 
@) - 3.19 (renversement efficace)
 - (*) 3.17 (renversement et 
@), 3.18 (renversement du renversement) 
 - 3.16 (associativité de 
 
6.3 TP4 10/10/2025
6.3.1 File à priorité
Section 4 du poly TP
6.3.2 (*) Vérification ABR avec exception + suppression
Section 2 du poly TP, fin
7 Semaine 6
7.1 CM6 15/10/2025
7.1.1 Chap 7
- Type unit, effets IO et en mémoire, types mutables et tableaux
 
7.2 TD6 15/10/2025
- 8.2, 8.3 (
array_to_listetarray_of_liste) [45 minutes max] - 7.1 (analyse syntaxique de suites de chiffres)
 
7.3 TP5 17/10/2025
7.3.1 Début analyse descendante récursive
- 5.1 poly TP (sommechiffres, Horner)
 - facultatif : début 5.3 avec analist.ml, ou début du 5.2 (expressions arithmétiques) avec analist.ml.
 
Le rendu s'effectuera en combinaison avec le TP6.
7.4 CC
Listes et arbres
Venez avec vos PCs. Vous devrez rendre un fichier .ml qui compile sans erreur.
8 SEMAINE COURANTE →
9 Semaine 7
9.1 CM7 23/10/2025
Analyse syntaxique :
- Chap 6 : analyse syntaxique descendante
 analist_exemples.mletanacomb_decouverte.ml
9.2 pas de TD
9.3 TP6 25/10/2025
Analyse lexicale et syntaxique, section 5 poly TP.
Suivant avancement : (avec analiste.ml )
- reprendre le 5.1 (suites de chiffres), éventuellement avec anacomb.ml pour les plus agiles ;
 - 5.3 (connect6)
 - 5.2 (expressions arithmétiques) de préférence avec anacomb.ml,
 
10 TOUSSAINT
11 Semaine 8
11.1 pas de CM
11.2 TD7 7/11/2025
- 7.2, 7.3 (analyse syntaxique avec combinateurs)
 
11.3 TP7 07/11/2025
- finir au moins le 5.2 (expressions arithmétiques) de préférence avec anacomb.ml,
 - démarrage projet
 
12 Semaine 9
12.1 CM8 12/11/2025
- Analyse lexicale et syntaxique par combinateurs
 - Élimination de la récursion à gauche
 - Retours sur les algorithmes rendus en TP
 
12.2 TD8 14/11/2025
- 5.5-5.7 (Ordre supérieur)
 
12.3 TP8 14/11/2025
Projet
13 Semaine 10
13.1 CM9 19/11/2025
- Ordre supérieur sur les listes
 - Modules et compilation en OCaml
 
13.2 TD9 21/11/2025
- Lambda-calcul
- 10.2 (not, and)
 - 10.3 (succ)
 - 10.4 (plus, mult)
 
 - 6.1, 6.2 (listes paresseuses) ?
 - GADT ?
 
13.3 TP9 21/11/2025
Projet
14 Semaine 11
14.1 CM10 28/11/2025
- Lambda-calcul
 - GADT (Generalized Algebraic Data Types) ?
 
14.2 TD10 29/11/2025
LT SOS
14.3 pas de TP
15 Semaine 12 (1-5 dec)
15.1 TP10 mercredi 03/12/2025
Projet
16 Semaine 13 (8-12 dec)
Date limite de rendu du projet: lundi soir 8 décembre 2025 23h59
17 Semaine 14 (15-19 dec)
17.1 Oraux d'évaluation :
- 15/12/2025 8h-12h00
 - 15/12/2025 13h30-18h00