Skip to main content

Programming Languages

For Fall 2015, please click here.

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.


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

Some knowledge of JavaScript, Haskell, C/C++, and Java.

Location and time

Gates B03, MW 2:15-3:30PM

Staff email list

Course Staff

Deian Stefan

I am a fifth year Ph.D. student in Computer Science, advised by David Mazières and John Mitchell. I work on secure computer systems; my research broadly intersects Programming Languages, Operating Systems, and Security. Currently, I am working on applying PL and OS ideas (primarily using JavaScript and Haskell) to address client- and server-side Web security problems.

Edward Z. Yang

I am a third 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). I'm a big fan of Haskell, a non-strict purely functional language.

  1. Course Number

  2. Classes Start

  3. Classes End

  4. Estimated Effort

  5. Price