Skip to main content

Programming Languages

Concepts in programming languages.

This course will cover basic concepts and design tradeoffs 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.


CS107 Computer Organization and Systems or equivalent (knowledge of the C programming language).

JavaScript knowledge for the labs (or a willingness to learn!) Prior familiarity with Haskell, C/C++, and Java is also helpful.

Location and time

Skilling Auditourium, MW 4:30-5:50PM

Staff email list

Course Staff

Edward Z. Yang

I am a fifth year PhD student at Stanford advised by David Mazières and John Mitchell. I am a proud member of the Secure Computer Systems group. I'm interested in applying operating system mechanisms (hardware isolation, dynamic resource limits) to the design and construction programming languages, and vice versa (type systems, formal verification, information flow control). Recently I've been working on Backpack, a new module system for Haskell.

  1. Course Number

  2. Classes Start

  3. Classes End

  4. Estimated Effort