Home – Research – Teaching
Divers
- Cours : INF6120, Programmation fonctionnelle et
logique
- Session : automne 2025
- 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
Le cours intégral est ici (dernière
modification le 2025-09-23).
Séance 1
- Mardi 2 septembre 2025, 13 h 30 à 16 h 30.
- 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 9 septembre 2025, 13 h 30 à 16 h 30.
- 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) ; attribution des types
(explicite et implicite) ; portée d’un identificateur.
Séance 3
- Mardi 16 septembre 2025, 13 h 30 à 16 h 30.
- Thèmes abordés : interpréteur OCaml ; liaisons (globales et locales)
; types de base ; expressions conditionnelles.
Séance 4
- Mardi 23 septembre 2025, 13 h 30 à 16 h 30.
- Thèmes abordés : fonctions ; type fonctionnel ; applications
partielles ; concept de fonction curryfiée ; fonctions anonymes ; calcul
du type d’une fonction.
Examens
Il est fortement recommandé de bien prendre connaissance des
modalités (dates, durées, éléments autorisés/interdits) des examens qui
figurent dans le plan du cours et l’entente d’évaluation.
Types (non exhaustifs) de questions qui pourront être posées :
- définir (en OCaml) 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.
- définir une fonction 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.
Voici quelques exemples d’examens passés :
Attention : étant donné que le découpage séances de
cours/examens n’est pas le même, les thèmes abordés diffèrent assez
fortement.
Devoirs d’entraînement
Deux devoir d’entraînement sont proposés :
- Devoir 1, principalement sur la
programmation fonctionnelle ;
- Devoir 2, principalement sur la
programmation logique.
Ces devoirs ne sont pas notés mais il est fortement recommandé de les
faire au complet.
Ateliers
- Les jeudis de 13 h 30 à 15 h 30.
- Sujets accessibles ici.
- Auxiliaires : Félix Larose-Gervais et Sublime Tshimanga
Tshimpangila.