Enseignants
- Ryan Kavanagh. PK-4330
Ressources
- Plan de cours
- Description officielle et horaires
- Heures de consultation: tous les jeudis de 14h00 à 16h00, PK-4330
- Moodle
Objectifs d’apprentissage du cours INF889J
Ce cours présente les concepts fondamentaux des langages de programmation et cherche à préparer les étudiants pour entamer un projet de recherche dans ce domaine. À la fin de ce cours, les étudiants devraient pouvoir:
- définir de façon rigoureuse un langage de programmation;
- raisonner au sujet d’un langage de programmation et démontrer ses propriétés de sûreté; et
- reconnaître et raisonner au sujet de diverses abstractions fondamentales et de pointe offertes par les langages de programmation courants ou spécialisés.
Évaluations et échéancier des rendus
Description | Pondération | Échéance |
---|---|---|
TP 1 | 8% | Semaine 3 |
TP 2 | 8% | Semaine 5 |
TP 3 | 8% | Semaine 7 |
TP 4 | 8% | Semaine 9 |
TP 5 | 8% | Semaine 11 |
Plan de présentation | 10% | Semaine 12 |
TP 6 | 8% | Semaine 13 |
TP 7 | 8% | Semaine 15 |
Présentation orale | 20% | Semaine 15 |
Participation en classe | 5% | Toute la session |
Rédaction de notes de cours | 9% | Périodique |
Politique du tableau noir
Tous les travaux pratiques sont à faire de façon individuelle. Certains problèmes des travaux pratiques seront marqués comme assujettis à la politique du tableau noir. Cette politique encadre la collaboration sur les travaux pratiques afin de faciliter l’apprentissage tout en évitant le risque d’infraction académique. Elle doit être respectée. Elle stipule que:
- Après avoir essayé de son mieux de résoudre un problème assujetti à la politique du tableau noir de façon individuelle, il est permis d’en discuter à l’oral avec les autres étudiants inscrits au cours.
- Toute trace physique produite au cours de la discussion doit être effacée ou supprimée dès que la discussion se termine. Ne pas discuter des problèmes par moyens électroniques (Mattermost, Discord, courriel, SMS, etc.).
- Vous êtes obligés d’attendre un délai raisonnable (au moins deux heures) avant de rédiger le travail que vous remettrez afin d’assurer que le travail remis est le vôtre et qu’il reflète réellement votre compréhension.
- Vous devez indiquer les personnes avec qui vous avez collaboré ou discuté du problème.
Rédaction de notes de cours
La communication est une compétence fondamentale de tout chercheur. Cependant, la rédaction scientifique est une compétence encore plus spécialisée qui nécessite énormément de pratique. Afin de développer cette compétence, chaque personne étudiante aura à rédiger les notes de cours d’une séance du cours (et pourra se porter bénévole de rédiger les notes pour d’autres séances). Si la personne étudiante le permet, les notes seront publiées sur le site au bénéfice des autres étudiants dans le cours.
Vous êtes invitées à voir les ressources suivantes sur l’écriture mathématique et scientifique:
- How To Write Mathematics, par Paul R. Halmos. L’Enseignement mathématique, t. XVI, fasc. 2, 1970.
- Conseils aux auteurs de textes mathématiques, par Michèle Audin.
- Mathematical Writing, par Donald E. Knuth, Tracy Larrabee et Paul M. Roberts.
- The Science of Scientific Writing, par George D. Gopen et Judith A. Swan.
Un gabarit LaTeX est fourni dans le dépôt
Git pour les notes de
cours. Les notes rédigées peuvent êtres remises par l’entremise d’une
merge request sur le Gitlab du département, ou comme fichier tex
en pièce jointe à un courriel.
Il est important à noter que les notes ne devraient pas tout simplement être une transcription du tableau. Au lieu, elles devraient être formées de phrases complètes, de paragraphes bien structurés, contenir des explications données à l’oral, etc. Après tout, l’objectif de cette tâche est de développer ses compétences en communication!
Les notes de cours seront évaluées selon cette grille d’évaluation.
Simulation de conférence
Il y aura une simulation de conférence la 15e semaine où vous présenterez un article qui est paru dans une conférence sur les langages de programmation. Pour vous aider à trouver un article, voici quelques conférences et revues scientifiques qui pourraient vous intéresser. Lorsqu’il y a un lien DBLP, voir les liens “[contents]” pour voir une liste des articles parus à la conférence, et l’icône pour télécharger l’article. Certaines des conférences ou des revues ont des articles sur des sujets qui ne sont pas liés au cours. SVP, veuillez vous assurer que l’article que vous proposerez a un lien avec le contenu du cours.
Conférences
- Principles of Programming Languages (POPL)
- International Conference on Functional Programming (ICFP)
- Programming Language Design and Implementation (PLDI)
- Systems, Programming, Languages, and Applications: Software for Humanity (SPLASH)
- Mathematical Foundations of Programming Semantics (MFPS), DBLP
- Types for Proofs and Programs (TYPES), DBLP
- European Symposium on Programming (ESOP), DBLP
- Workshop on Programming Language Approaches to Concurrency and Communication-cEntric Software (PLACES)
- Principles and Practice of Parallel Programming (PPoPP)
- Conference on Algebra and Coalgebra in Computer Science (CALCO), DBLP
Revues scientifiques
- Journal of Logical and Algebraic Methods in Programming (JLAMP), DBLP
- Journal of Functional Programming (JFP), DBLP
- ACM Transactions on Computational Logic (TOCL)
- Mathematical Structures in Computer Science (MSCS), DBLP
Autres listes
- Classic Papers in Programming Languages and Logic (Crary)
- Great Works in Programming Languages (Pierce)
- Great Works in Programming Languages (Foster et Nigam)
Semainier provisionnel
# | Date | Sujet | Lecture recommandée | À remettre |
---|---|---|---|---|
1 | 4 septembre | Introduction, définitions inductives |
| |
2 | 11 septembre | Langage d'expressions: introduction à la sémantique avec un langages d'expressions |
| |
3 | 18 septembre | Expressions: variables liées, portée, système de typage, propriétés de sûreté. |
| À remettre avant le 20 septembre 2024 17h00: |
4 | 25 septembre | Langage impératif simple: syntaxe, comparaison de ses sémantiques opérationnelles, et la sémantique axiomatique |
| |
5 | 2 octobre | Fonctions d'ordre supérieur. Produits et sommes |
| À remettre avant le 6 octobre 2024 23h59: |
6 | 9 octobre | Types inductifs et coinductifs |
| |
7 | 16 octobre | Polymorphisme: le système F et les types abstraits. |
| TP3 |
8 | 23 octobre | Possibilté d'annulation de la séance | ||
9 | 30 octobre | La paramétricité et l'abstraction. |
| TP4, choix d'article |
10 | 6 novembre | La récursivité: les systèmes PCF et FPC. |
| |
11 | 13 novembre | Les structures de contrôle: les exceptions et les continuations. |
| TP5 |
12 | 20 novembre | L'intégration de la programmation fonctionnelle et impérative: Algol. |
| Plan détaillé de présentation |
13 | 27 novembre | Le parallélisme et la sémantique de coût |
| TP6 |
14 | 4 décembre | Les systèmes concurrents: les algèbres de processus et les types de session. |
| |
15 | 13 décembre | Présentations orales | TP7, présentation orale |
Médiagraphie
Le contenu du cours sera en grande partie une synthèse des trois manuels suivants:
- Practical Foundations for Programming Languages (PFPL), par Robert Harper, 2e édition. Disponible en ligne, seulement en anglais. Errata.
- Semantics of Programming Languages, par Robert D. Tennent. Disponible à la Bibliothèque de l’Université McGill, seulement en anglais. Disponible en ligne sur l’Internet Archive.
- Semantics of programming languages : structures and techniques, par Carl A. Gunter. Disponible en réserve à la Bibliothèque des sciences de l’UQAM, seulement en anglais. Disponible en ligne sur l’Internet Archive.
Les manuels suivants peuvent complémenter les présentations des manuels ci-haut:
- Semantics with Applications: A Formal Introduction (N&N), par Hanne Riis Nielson et Flemming Nielson. Disponible en ligne, seulement en anglais.
- Theories of Programming Languages, par John C. Reynolds. Disponible en ligne, seulement en anglais.
- Foundations for programming languages, par John C. Mitchell. Disponible en réserve à la Bibliothèque des sciences de l’UQAM, seulement en anglais.