Home – Research – Teaching
Divers
- Cours : INF6120, Programmation fonctionnelle et
logique
- Session : automne 2024
- Groupe : 20
- Professeur : Samuele Giraudo
- Coordinateurs : Samuele Giraudo et Quentin Stiévenart
Plan du cours
Accessible ici.
Entente d’évaluation
Accessible ici.
Calendrier des séances
Séance 1
- Mardi 3 septembre 2024, 13 h 30 à 16 h 30, Salle SH-3620.
- Cours 1 (dernière modification :
2024-09-03, 19 h 37)
- Thèmes abordés : informations générales ; comparaison des paradigmes
impératif, fonctionnel et logique ; introduction en surface à
l’OCaml.
Séance 2
- Mardi 10 septembre 2024, 13 h 30 à 16 h 30, Salle SH-3620.
- Cours 2 (dernière modification :
2024-09-10, 18 h 26)
- Thèmes abordés : exemples simples de manipulation de listes en OCaml
; machine de Turing ; Turing-complétude ; problème de l’arrêt ; bases du
lambda-calcul ; notion de paradigme de programmation ; transparence
référentielle ; vérification des types (statique et dynamique) ;
attribution des types (statique et dynamique).
Séance 3
- Mardi 17 septembre 2024, 13 h 30 à 16 h 30, Salle SH-3620.
- Lancement du TP1 (voir plus bas).
- Cours 3 (dernière modification :
2024-09-17, 18 h 27)
- Thèmes abordés : attribution des types (explicite et implicite) ;
portée d’un identificateur ; interpréteur OCaml ; liaisons (globales et
locales) ; types de base.
Séance 4
- Mardi 24 septembre 2024, 13 h 30 à 16 h 30, Salle SH-3620.
- Cours 4 (dernière modification :
2024-09-24, 16 h 56)
- Thèmes abordés : type unit ; expressions conditionnelles ; fonctions
; type fonctionnel ; applications partielles ; concept de fonction
curryfiée ; fonctions anonymes ; calcul du type d’une fonction.
Séance 5
- Mardi 1er octobre 2024, 13 h 30 à 16 h 30, Salle SH-3620.
- Cours 5 (dernière modification :
2024-10-01, 16 h 48)
- Thèmes abordés : retardateurs ; entrées/sorties ; séquences ;
écriture de projets avec
dune
; types produit cartésien et
nommés ; types sommes (exemples des listes d’entiers, arbres binaires
d’entiers, arbres unaires binaires d’entiers).
Séance 6
- Mardi 8 octobre 2024, 13 h 30 à 16 h 30, Salle SH-3620.
- Cours 6 (dernière modification :
2024-10-08, 16 h 53)
- Thèmes abordés : types paramétrés ; version fonctionnelle des mots
et des images ; fonctions récursives ; récursivité terminale ; filtrage
de motifs.
Séance 7
- Mardi 15 octobre 2024, 13 h 30 à 16 h 30, Salle SH-3620.
- Cours 7 (dernière modification :
2024-10-15, 16 h 51)
- Thèmes abordés : filtrage de motifs et récursion ; type
'a option
; fonctions d’ordre supérieur ; approfondissement
des mots et images fonctionnels.
Séance 8 – Examen
intra
Mardi 22 octobre 2024, 13 h 30 à 16 h 30, Salle SH-3620.
Séance 9
- Mardi 29 octobre 2024, 13 h 30 à 16 h 30, Salle SH-3620.
- Cours 8 (dernière modification :
2024-10-29, 16 h 52)
- Correction de l’examen 1.
- Thèmes abordés : polymorphisme ; listes.
Séance 10
- Mardi 5 novembre 2024, 13 h 30 à 16 h 30, Salle SH-3620.
- Cours 9 (dernière modification :
2024-11-05, 16 h 32)
- Thèmes abordés : listes ; fonctions d’ordre supérieur sur les listes
(
init
, map
, filter
,
for_all
, exists
, fold_left
,
fold_right
) ; universalité des fonctions de plis.
Séance 11
- Mardi 12 novembre 2024, 13 h 30 à 16 h 30, Salle SH-3620.
- Cours 10 (dernière modification :
2024-11-12, 16 h 59)
- Thèmes abordés : stratégies d’évaluation ; non mutabilité (exemple
des files d’attente) ; tests; preuves de programme ; principe
d’induction structurelle.
- Toutes les pages sont disponibles ici
(dernière modification : 2024-11-12, 17 h 02) avec une
amélioration pour la lisibilité de l’indexation.
Séance 12
- Mardi 19 novembre 2024, 13 h 30 à 16 h 30, Salle SH-3620.
- Cours 11 (dernière modification :
2024-11-19, 17 h 15)
- Thèmes abordés : introduction à la programmation logique ; termes ;
faits et règles ; clauses ; prédicats ; exemples généalogiques ;
systèmes logiques ; exemple de la coloration de carte.
Séance 13
- Mardi 26 novembre 2024, 13 h 30 à 16 h 30, Salle SH-3620.
- Cours 12 (dernière modification :
2024-11-26, 17 h 01)
- Thèmes abordés : nombres de Peano en programmation logique ;
unification ; résolution.
Séance 14
- Mardi 3 décembre 2024, 13 h 30 à 16 h 30, Salle SH-3620.
- Cours 13 (dernière modification :
2024-12-03, 17 h 08)
- Thèmes abordés : négation; listes en Prolog ; programmation par
contraintes sur les entiers.
Séance 15 — Examen
final
Mardi 10 décembre 2024, 13 h 30 à 16 h 30, Salle SH-3620.
Travaux pratiques
TP 1
- Le sujet est disponible ici (dernière
modification : 2024-09-17, 11 h 03) depuis le 17 septembre
2024.
- Nouvelle version ici (dernière
modification : 2024-10-01, 16 h 51). L’exemple de la question 27 a
été corrigé.
- Nouvelle version ici (dernière
modification : 2024-10-07, 09 h 13). Les mentions au type
automaton
ont été corrigées en mentions au type
automata
.
- À rendre sur la zone de dépôt du Moodle avant le lundi 14
octobre 2024, 23 h 59.
TP 2
- Le sujet est disponible ici (dernière
modification : 2024-11-26, 17 h 21) depuis le 21 novembre
2024.
- À rendre sur la zone de dépôt du Moodle avant le
mardi 10
décembre 2024 dimanche 15 décembre 2024, 23 h
59.
Examens
Il est fortement recommandé de bien prendre connaissance des
modalités des examens qui figurent dans le plan du cours.
Examen 1
- Date : mardi 22 octobre 2024, 13 h 30 à 16 h 30.
- Lieu : salle SH-3620.
- Il porte sur toute la matière vue lors des 7 premières séances de
cours.
- Le diaporama complet est disponible ici
(dernière modification : 2024-10-15, 16 h 53).
- Types de questions qui pourront être posées :
- définir une fonction réalisant une tâche décrite ;
- décrire ce que renvoie une fonction donnée ;
- devenir et expliquer le type d’une fonction donnée ;
- écrire une fonction ayant un type donné ;
- expliquer pourquoi une expression donnée est bien/mal typée ;
- définir un type répondant à une spécification particulière ;
- utiliser un type prédéfini pour une tâche particulière ;
- comprendre si une expression est problématique.
Examen 2
- Date : mardi 10 décembre 2024, 13 h 30 à 16 h 30.
- Lieu : salle SH-3620.
- Il porte sur toute la matière vue lors des 14 premières séances de
cours.
- Le diaporama complet est disponible ici (dernière modification : 2024-12-03,
17 h 10).
- Types de questions qui pourront être posées :
- définir une fonction (en OCaml) réalisant une tâche décrite
(principalement sur des listes ou d’autres structures récursives comme
des arbres) ;
- écrire une expression dont la valeur est obtenue en réalisant
plusieurs traitements sur une liste ;
- démontrer par induction structurelle qu’une fonction vérifie une
certaine propriété ;
- définir un prédicat (en Prolog) vérifiant une spécification donnée
(cela peut faire intervenir des listes, d’autres types de données ou
encore des entiers et des contraintes sur ces derniers) ;
- comprendre et expliquer ce qu’un prédicat donné met en relation
;
- donner le résultat de l’unification de termes ;
- expliquer et suivre pas à pas le cheminement de résolution d’une
requête.
Laboratoires
Sujets accessibles ici.