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.


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

Location and time

Skilling Auditorium, MW 2:15-3:30PM

Staff email list

Course Staff

Deian Stefan

I am a fourth 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 language- and library-based approaches to decentralized information flow control (DIFC) and secure computation (primarily in Javascript and Haskell).

Edward Z. Yang

I am a second 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.