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.