Équipe enseignante — Hiver 2026
- Enseignant: André-Pierre Lamarche. lamarche.andre-pierre@uqam.ca, bureau : PK-5722. Heures de disponibilité : le mardi de 14h à 17h.
- Coordonnateur: Quentin Stiévenart. stievenart.quentin@uqam.ca, bureau : PK-4735.
- Chargé de laboratoires: Louis-Félix Berthiaume.
Ressources
- Plan de cours
- Description officielle et horaires
- Support académique pour les travaux et autres.
- Un canal de discussion en ligne est disponible pour interagir avec les enseignants, démonstrateurs et les autres étudiants. Pour les questions d’ordre général, utilisez ce canal Mattermost et attendez un délai de quelques jours avant de relancer.
Évaluation et échéancier des rendus
| Description | Pondération | Échéance |
|---|---|---|
| Quiz 1* | 5% | Semaine 4 |
| TP0 | 10% | Semaine 6 |
| Quiz 2* | 5% | Semaine 7 |
| Examen intra | 30% | Semaine 8 |
| TP1 | 10% | Semaine 10 |
| Quiz 3* | 5% | Semaine 13 |
| Examen final | 30% | Semaine 15 |
| TP2 | 10% | Semaine 15 |
Conditions de réussite:
La réussite du cours requiert une note cumulative minimale de 50 % ainsi qu’une moyenne d’au moins 50 % aux examens (intra et final). Si l’une de ces conditions n’est pas remplie, le cours est considéré comme non réussi, indépendamment de la note cumulative.
Notes de cours
- Chapitre 0 : Introduction
- Chapitre 1 : Concepts de base
- Chapitre 2 : Fonctions et récursivité
- Chapitre 3 : Types fonctionnels
- Chapitre 4 : Fonctions d’ordre supérieur
- Chapitre 5 : Encapsulation et modules
- Chapitre 6 : Tests et preuves
- Chapitre 7 : Programmation logique
- Chapitre 11 : Programmation par contraintes
- Chapitre 8 : Interprétation d’un langage fonctionnel
- Chapitre 9 : Unification et typage
Chapitre 10 : Interprétation d’un langage logique(matière non couverte)
Le code source des exemples donnés dans le cours est disponible dans le dépôt correspondant.
Semainier des séances
| # | Semaine | Diapositives | Laboratoires |
|---|---|---|---|
| 1 | 12-18 Janvier | Chapitre 0 : Introduction - pdf 🖼
Chapitre 1 : Bases de la programmation fonctionnelle - pdf 🖼 | Laboratoire 1
(solution) |
| 2 | 19-25 Janvier | Chapitre 2 : Fonctions et récursivité - pdf 🖼
Exercice pour le prochain cours: Résoudre les deux exercices de λ-calcul à la fin du chapitre 2 (pages 94 et 95) | Laboratoire 2
(solution) |
| 3 | 26 Janvier - 1 Février | Chapitre 3 : Types fonctionnels - pdf 🖼
Énoncé du TP0 | Laboratoire 3
(solution) |
| 4 | 2-8 février | Chapitre 3 : Types fonctionnels (suite) - pdf 🖼
Chapitre 4 : Fonctions d'ordre supérieur - pdf 🖼 Exemple avec les types records Exercice pour le prochain cours: implémentation de la fonction filter_map (page 46 du chapitre 4) Quiz 1 (sur Moodle) | Laboratoire 3 (suite)
(solution) |
| 5 | 9-15 Février | Retour sur le quiz 1
Chapitre 4 : Fonctions d'ordre supérieur (suite) Exemples faits dans le cours | Laboratoire 4
(solution) |
| 6 | 16-20 Février | Chapitre 5 : Encapsulation et modules - pdf 🖼
Remise du TP0 (sur Gitlab) Énoncé du TP1 | Laboratoire 5 |
| 7 | 23 Février - 1 Mars | Chapitre 6 : Preuves de programmes - pdf 🖼
Quiz 2 (sur Moodle) | Laboratoire 6 |
| 2-8 Mars | SEMAINE DE RELÂCHE | Pas de labo | |
| 8 | 9-15 Mars | Examen intra - 9 Mars de 18:00 à 21:00 (Local à venir) | Pas de labo |
| 9 | 16-22 Mars | Correction de l'intra
Chapitre 7 : Programmation logique - pdf 🖼 | Laboratoire 7 |
| 10 | 23-29 Mars | Chapitre 7 : Programmation logique (suite)
Remise du TP1 (sur Gitlab) Énoncé du TP2 | Laboratoire 8 |
| 11 | 30 Mars - 5 Avril | Chapitre 11 : Programmation par contraintes - pdf 🖼 | Laboratoire 9 |
| 12 | 6-12 Avril | CONGÉ DE PÂQUES | Laboratoire 10 |
| 13 | 13-19 Avril | Chapitre 8 : Interprétation d'un langage fonctionnel - pdf 🖼
Quiz 3 (sur Moodle) | Laboratoire 10 |
| 14 | 20-26 Avril | Chapitre 9 : Typage - pdf 🖼 | Laboratoire 11 |
| 15 | 27 Avril - 3 Mai | Examen final - 27 avril de 18:00 à 21:00 (Local à venir)
Remise du TP2 (sur Gitlab) | Pas de labo |
Guide de style
Pour les évaluations, la qualité de votre code sera évaluée en fonction du guide de style du cours.
Référence
Pour la partie en OCaml :
- OCaml Programming: Correct + Efficient + Beautiful, Clarkson, M. (version PDF)
- Développement d’applications avec Objective Caml, Chailloux, E., Manoury, P., Pagano, B.
- A Tour of OCaml
- Manuel du langage
Pour la partie en Prolog :
- Flach, P. Simply Logical (Chapitres 1 à 4)
- Pour aller plus loin que le cours : Triska, M. The Power of Prolog
- Exercices P-99
Pour dessiner des arbres de résolutions, voir sldnfdraw-dot.