Intro from course website

The goal of this class is to expose students to advanced programming language ideas, including high-level programming abstractions, expressive type systems and program analyses. We will develop these ideas as follows.

  1. First, we will see how the lambda calculus can be used to distill essence of computation into a few powerful constructs, and we will use it as a launching pad to study expressive type systems, logics and analyses that can make precise predictions about run-time behavior at compile time.

  2. Second, we will study how this calculus yields Haskell, a functional programming language that has been the incubator for many recent PL advances. We will use Haskell to learn about a variety of high-level programming abstractions and techniques.