This course will cover basic concepts and design trade-offs related to programming languages. The first half of the course focuses on functions, types, scope, storage management, exceptions, and continuations. The second half covers object-oriented features and concurrency. We will conclude with a few special-topics in programming languages. The class also has a number of small labs where students get to implement some of the language features discussed in class.


We will occasionally be following John Mitchell's Concepts In Programming Languages textbook and assigning reading from this book and various other online resources and papers. Some of the book chapters have been revised, we will be handing out PDFs of these chapters. Cheaper renting options for the book seem to be available online (e.g., on Amazon).

If you are serious about programming languages Benjamin Pierce's Types and Programming Languages is a must.

Course Staff

  • Instructor: Deian Stefan
  • TAs: Abdulrahman Alkhelaifi, Nadah Feteih, Purag Moumdjian, Kaiser Pister, and Sanjeev T Reddy