Couvre le calcul lambda simplement typé, en se concentrant sur sa syntaxe, sa sémantique et ses propriétés de système de type telles que le progrès et la préservation.
Explore l'analyse automatisée de terminaison à l'aide de paires de dépendances, couvrant les techniques classiques et modernes, les concours annuels et des outils comme AProVE.
Couvre la définition d'un langage de programmation simple et sa sémantique à grande échelle, y compris les expressions arithmétiques et les commandes impératives.
Introduit Iris, un cadre logique pour raisonner sur la sécurité et l'exactitude des programmes impératifs d'ordre supérieur simultanés, en mettant l'accent sur ses caractéristiques et applications uniques.
Couvre les bases de la programmation C, y compris les variables, les opérateurs et la programmation orientée système, en mettant l'accent sur les différences avec Java.
Couvre la sémantique opérationnelle et les stratégies d'évaluation dans le calcul lambda, y compris redex, les stratégies d'évaluation alternatives et les booléens de l'Église.
Introduit les bases des variables et des types dans la programmation C, couvrant la déclaration, l'initialisation et les différences par rapport à Java.
Couvre les concepts et la mise en œuvre de la programmation fonctionnelle dans Scala, mettant l'accent sur les fonctions, les données immuables et l'abstraction des données.
Explore l'application pratique de la théorie du langage, y compris le tri rapide, le typage progressif et la gestion efficace de la mémoire, ainsi que les défis de la synthèse des programmes de réduction.
Introduit des enregistrements, des variantes, des règles d'évaluation, des règles de dactylographie, des défis d'aliasing et des avantages dans les langages de programmation.