Covers polymorphism in object-oriented programming, focusing on inclusion polymorphism and its implementation through class hierarchies and virtual methods.
Explores the core features of object-oriented programming, including dynamic dispatch, encapsulation, inheritance, and subtyping, using Java examples and practical insights.
Focuses on implementing a type checker for Amy, covering name and type analysis, typing constraints generation, and the importance of type checking in compilation.