Foundations of SoftwareCovers the basics of induction, syntax, abstract vs. concrete syntax, and operational semantics for Booleans.
Subtyping and Type CalculusExplores subtyping, type calculus, and type bounds calculation in a system with subtyping, guiding through exercises and proofs step by step.
Types in Lambda CalculusCovers types in lambda calculus, including defining types, specifying rules, and proving soundness.
Records and VariantsIntroduces records, variants, evaluation rules, typing rules, aliasing challenges, and benefits in programming languages.
Syntax and Typing RulesCovers syntax and typing rules in programming languages, discussing aliasing, mutability, and store locations.
Subtyping and PolymorphismExplores subtyping rules, challenges, and its connection to various forms of polymorphism in programming languages.