Mailing List

Course Mailing List

Sign up for the course mailing list. We will use it make all course announcements and for online discussions.

Course Description

Programming languages are fundamental to computer science and everyday programming. This course is an in-depth introduction to the formal, logical foundations of programming languages. The class will teach you how to precisely formulate questions about programs and programming languages, such as Does this program behave as expected?, What errors does this type-checker catch?, Is this compiler optimization correct?, Is this program secure?, Is this language more expressive than some other language?, and many others. To answer these questions, the course will introduce topics such as dynamic semantics, type systems, program logics, and abstract machines.

The course will have regular homework assignments. Most assignments will require you to prove properties of simple programming languages and programs. There may be a few light programming assignments will be several intense programming/theorem proving assignments. The course will conclude with a project that has you explore some area of programming languages research in greater depth.