É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(matière non couverte)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 🖼
Exemples supplémentaires sur la création de modules Remise du TP0 (sur Gitlab) Énoncé du TP1 | Laboratoire 5
(solution) |
| 7 | 23 Février - 1 Mars | Chapitre 6 : Preuves de programmes - pdf 🖼
Quiz 2 (sur Moodle) Exercice | Laboratoire 6
(solution) |
| 2-8 Mars | SEMAINE DE RELÂCHE | Pas de labo | |
| 8 | 9-15 Mars | Examen intra - 9 Mars de 18:00 à 21:00 (Les salles d'examen sont disponibles sur Moodle)
Notions à savoir pour l'examen Pour un exemple d'ancien examen, référez-vous au Laboratoire 6 (solution). | Pas de labo |
| 9 | 16-22 Mars | Correction de l'intra
Chapitre 7 : Programmation logique - pdf 🖼 (version annotée sur Moodle) | Laboratoire 7
(solution) |
| 10 | 23-29 Mars | Chapitre 7 : Programmation logique (suite)
Remise du TP1 (sur Gitlab) | Laboratoire 8
(solution) |
| 11 | 30 Mars - 5 Avril | Chapitre 11 : Programmation par contraintes - pdf 🖼 (version annotée sur Moodle)
Énoncé du TP2 | Laboratoire 9
(solution) |
| 12 | 6-12 Avril | CONGÉ DE PÂQUES | Laboratoire 11
(solution) |
| 13 | 13-19 Avril | Chapitre 8 : Interprétation d'un langage fonctionnel - pdf 🖼
Voici un lien vers l'interpréteur utilisé dans le cours. Quiz 3 (sur Moodle) | Laboratoire 10
(solution) |
| 14 | 20-26 Avril | Séance de révision. Notions à savoir pour l'examen Les exemples effectués en classe lors de la séance de révision sont disponibles sur Moodle. | Laboratoire 10
(solution) |
| 15 | 27 Avril - 3 Mai | Examen final - 27 avril de 18:00 à 21:00 (L'examen aura lieu au pavillon Hubert Aquin au campus central (Berri-UQAM). Le local exact sera annoncé sur Moodle le jour de l'examen.)
Notions à savoir pour l'examen Pour un exemple d'ancien examen, référez-vous au Laboratoire 11 (solution). Pour d'autres exemples, les diapos du cours du 20 avril sont sur Moodle. Remise du TP2 (sur Gitlab) au plus tard le dimanche 3 mai (aucun retard accepté) | 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.