This course introduces the fundamental principles behind modern programming language design, semantics, and implementation. Ultimately, you should come away with the ability to apply foundational programming language ideas and techniques to your own projects.

The course has two broad topics:

  • Introduction to Semantics and Type Systems: How do we describe programming languages? And which programs “make sense”?
  • Research Applications: Students will have the opportunity to consider other related topics of interest in the form of a course project, most often in the form of a survey of recent research on a topic of interest.