Enseignants

  • Ryan Kavanagh. PK-4330

Ressources

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:

  1. définir de façon rigoureuse un langage de programmation;
  2. raisonner au sujet d’un langage de programmation et démontrer ses propriétés de sûreté; et
  3. 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:

  1. 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.
  2. 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.).
  3. 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.
  4. 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:

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 icone 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

Revues scientifiques

Autres listes

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
  • Sémantique des expressions: PFPL (§§5.1, 5.2), N&N (§1.3)
3 18 septembre Expressions: variables liées, portée, système de typage, propriétés de sûreté.
  • Exemples de preuves par induction
  • variables, α-équivalence, substitution: PFPL (chapitre 1)
  • jugements hypothétiques: PFPL (§§3.1, 3.2)
  • système de typage pour expressions: PFPL (chapitre 4)
  • propriétés de sûreté (progrès, préservation): PFPL (chapitre 6)
  • sémantique des expressions avec let: PFPL (§§5.2, 7.1)
À 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
  • Sémantiques à grosses et à petites étapes: N&N (chapitre 2)
  • Sémantique axiomatique: Tennent (§3.6), Gordon (§2)
  • Approche plus sémantique à la sémantique axiomatique (la sémantique axiomatique « extrinsique ») : N&N (§6.2) et Reynolds (chapitre 3)
  • Symboles vs variables (PFPL pp. 6, 10)
5 2 octobre Fonctions d'ordre supérieur. Produits et sommes
  • PFPL (§8)
  • PFPL (§§10, 11)
À remettre avant le 6 octobre 2024 23h59:
6 9 octobre Types inductifs et coinductifs
  • PFPL (§15)
7 16 octobre Polymorphisme: le système F et les types abstraits.
  • PFPL (§§16, 17)
TP3
8 23 octobre Possibilté d'annulation de la séance
9 30 octobre La paramétricité et l'abstraction.
  • PFPL (§48)
  • Mitchell
TP4, choix d'article
10 6 novembre La récursivité: les systèmes PCF et FPC.
  • PFPL (§§19, 20)
  • Mitchell
11 13 novembre Les structures de contrôle: les exceptions et les continuations.
  • PFPL (§§28, 29, 30)
TP5
12 20 novembre L'intégration de la programmation fonctionnelle et impérative: Algol.
  • PFPL (§34)
  • Tennent (§6)
Plan détaillé de présentation
13 27 novembre Le parallélisme et la sémantique de coût
  • PFPL (§§28, 29, 30)
TP6
14 4 décembre Les systèmes concurrents: les algèbres de processus et les types de session.
  • PFPL (§37)
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:

Les manuels suivants peuvent complémenter les présentations des manuels ci-haut: