Module 12: Type Systems - Part I

[Video] [Slides]


This module will introduce you to the most widely used form of static analysis known as Type Systems. You’ll learn a core language, the Lambda Calculus, and notation for specifying a type system for the language in the form of rules. You will then use the rules to determine whether a program is accepted or rejected by the type system. In the end, you’ll learn about soundness and completeness properties of type systems.


  • Remember the notation for Type Systems and the type rules for the Lambda Calculus language.
  • Derive the type of a given program in the Lambda Calculus by constructing a Type Derivation.
  • Explain the concept of Type Soundness and the guarantee that a sound type system provides for well-typed programs.
  • Understand the relationship between types in a type system and abstract values in other forms of static analysis.