Planning PF (programmation fonctionnelle, Info4 - Polytech)
1. Semaine 0
1.1. CM1 06/09/2024
1.1.1. Chap 1 : introduction à la programmation fonctionnelle en OCaml
1.2. TD1 06/09/2024
- 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 13/09/24
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 18/09/24
3.1.1. Chap 2 :
- Opérateurs logiques et structuration de données
- Sommes et filtrage
- Récurrence et récursion
3.2. TD2 18/09/24
- 1.8 (portées) : correction (fait maison)
- 2.1 (arbres binaires)
- 2.3, 2.4 (ABR) ; en option : 2.5
- listes : 3.1 (
listeint
seulement ; somme des éléments) ; 3.2, 3.4 (en utilisantmax_int
et le typeoption
)
3.3. pas de TP2 : WECS
4. Semaine 3
4.1. CM3 25/09/24
4.1.1. Chap 2
- bienfaits du filtrage
4.1.2. Chap 3
- évaluation, environnement jsq
let rec
4.2. TD3 25/09/24
- 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 27/09/24
4.3.1. Arbres binaires, ABR
Section 2 du poly TP
5. Semaine 4
5.1. CM4 02/10/24
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 02/10/24
- 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 09/10/24
- 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 09/10/24
- 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 11/10/24
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 16/10/24
7.1.1. Chap 7
- Type unit, effets IO et en mémoire, types mutables et tableaux
7.2. TD6 16/10/24
- 8.2, 8.3 (
array_to_list
etarray_of_liste
) [45 minutes max] - 7.1 (analyse syntaxique de suites de chiffres)
7.3. TP5 18/10/24
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 7
8.1. CM7 23/10/24
Analyse syntaxique :
- Chap 6 : analyse syntaxique descendante
analist_exemples.ml
etanacomb_decouverte.ml
8.2. TD7 23/10/24
- 7.2, 7.3 (analyse syntaxique avec combinateurs)
8.3. TP6 25/10/24
Analyse lexicale et syntaxique, section 5 poly TP.
Suivant avancement :
- reprendre le 5.1 (suites de chiffres) avec anacomb.ml ; il est possible de sauter cette étape ;
- 5.2 (expressions arithmétiques) de préférence avec anacomb.ml, ou avec analist.ml
- 5.3 (connect6, facultatif) avec anacomb.ml.
9. SEMAINE COURANTE →
10. TOUSSAINT
11. Semaine 8
11.1. CM8 06/11/24
- Analyse lexicale et syntaxique par combinateurs
- Élimination de la récursion à gauche
- Retours sur les algorithmes rendus en TP
11.2. TD8 jeudi 07/11/24
- 5.5-5.7 (Ordre supérieur)
11.3. TP7 08/11/24
- démarrage projet
12. Semaine 9
12.1. CM9 13/11/24
- Ordre supérieur sur les listes
- Modules et compilation en OCaml
12.2. TD9 14/11/24
- Lambda-calcul
- 10.2 (not, and)
- 10.3 (succ)
- 10.4 (plus, mult)
- 6.1, 6.2 (listes paresseuses) ?
- GADT ?
12.3. TP8 15/11/24
Projet, contrôle continu
13. Semaine 10
13.1. CM10 20/11/24
- Lambda-calcul
- GADT (Generalized Algebraic Data Types) ?
13.2. pas de TD ni TP
14. Semaine 11
14.1. TD10 27/11/24
LT SOS
14.2. TP9 29/11/24
Projet
15. Semaine 12 (2-6 dec)
15.1. TP10 mercredi 04/12/24
Projet
16. Semaine 13 (9-13 dec)
Date limite de rendu du projet.
17. Semaine 14 (16-20 dec)
Oraux d'évaluation :
- 18/12/24 8h-12h00
- 18/12/24 13h30-18h00