Subtyping and Type CalculusExplores subtyping, type calculus, and type bounds calculation in a system with subtyping, guiding through exercises and proofs step by step.
Type InferenceExplores type inference in statically typed languages, using algorithms to assign types to program expressions accurately.
Functions as ObjectsCovers the expansion of function values and calls, and the relationship between functions and methods.
Subtyping and PolymorphismExplores subtyping rules, challenges, and its connection to various forms of polymorphism in programming languages.
Mathematical FunctionsCovers mathematical functions, including logarithmic, exponential, and trigonometric functions, as well as limits and function types.
Polymorphism and ProofsCovers parametric polymorphism, lists construction, tuples, generic methods, merge sort, and proving program properties.
Compiler Extension LabCovers the Compiler Extension Lab, focusing on adding new functionality to a simple functional language compiler.
Object Layout: Single InheritanceCovers object layout challenges in single inheritance scenarios, focusing on Java-like languages and method dispatch using virtual methods tables.