Name AnalysisExplains compiler phases, name analysis, symbol tables, and scoping rules in the context of error detection and resolution.
Types and Inductive RelationsDiscusses the importance of types, unsound type systems, and inductively defined relations for a small language's type system.
Type Checking LabFocuses on implementing a type checker for Amy, covering name and type analysis, typing constraints generation, and the importance of type checking in compilation.
Type InferenceExplores type inference in statically typed languages, using algorithms to assign types to program expressions accurately.
Solving Type ConstraintsExplains the process of solving type constraints using the unification algorithm and generalization for flexible type inference.
Compiling ExpressionsCovers the conversion of expressions, evaluation using stack machines, and bytecode generation.
Simple Code Generation for ifCovers the compilation of statement sequences, control structures, boolean representation, and comparisons in WebAssembly code generation.
Code Generation LabCovers generating code for a compiler, translating an Amy program to WebAssembly, including memory management and pattern matching compilation.