Programming Languages: Principles and Paradigms

CSE 130

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 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


This course is based on material from Stanford’s, UCSD’s, and Tufts’ programming languages courses. Thanks to these fantastic instructors for all their hard work: Kathleen Fisher, Ranjit Jhala, Sorin Lerner, John C. Mitchell, Norman Ramsey, and Edward Z. Yang. Some of the organizational/administrative things are thanks to David Mazières and Hovav Shacham.