This lecture covers the foundations of Scala, focusing on modelling recursive types, parameterized types, and variance. It explains the use of path-dependent types and abstract types, along with their implementations. The lecture delves into generic functions over abstract types and dependent functions in Scala, leading to a formalization in the DOT calculus. The lecture concludes by discussing subtyping rules and the challenges in the meta theory of the DOT calculus.