Planning PF (programmation fonctionnelle, Info4 - Polytech)

Remonter à la page PF

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 utilisant max_int et le type option)

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)

5.3. TP3 04/10/24

  1. Faire un rappel sur les def recursives avec accumulateurs

    ou remonter le cours dessus avant.

5.3.1. Manipulation de (grandes) listes

Section 3 du poly TP

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)

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 et array_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 et anacomb_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