15-150: Principles of Functional Programming

Lecture 24: A Glimpse of the Theory Underlying 150

In this course, we have stressed the importance of pure functional programming as an enabler of local reasoning. Pure functional programming allows us to prove our code correct with regard to a specification and allows us to determine the asymptotic complexity of our code. In today's class, we have taken a glimpse under hood, exploring the machinery that is needed to enable such proofs. In particular, we have acquainted ourselves with the notion of a language definition, which gives a precise, mathematical account of the semantics of a programming language. Using a definition, we can then prove general properties about any program that we write in a particular language. The most fundamental property that ought to hold true for any programming language is type safety, asserting that "well-typed programs do not go wrong".

Key Concepts

Lecture Slides

Lecture Slides with every build, use "slideshow" option in your pdf viewer. Lecture Slides compact.