Programming Languages


Stanford School of Engineering



There is tremendous diversity in computer programming languages, and new languages are often created to solve new problems and fix old problems.

This course covers the basic concepts and design tradeoffs of programming languages. Examine different languages and compare their properties as well as the cost-benefits of different implementations. 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.


CS107, or experience with Lisp, C, and an object-oriented language.

Topics include

  • Language design trade-offs
  • Implementation considerations
  • Functional, imperative and object-oriented paradigms
  • Formal semantic methods and program analysis
  • Higher order functions and closures
  • Runtime support for language features
  • Security issues

Course Availability

The course schedule is displayed for planning purposes – courses can be modified, changed, or cancelled. Course availability will be considered finalized on the first day of open enrollment. For quarterly enrollment dates, please refer to our graduate education section.

Thank you for your interest. The course you have selected is not open for enrollment. Please click the button below to receive an email when the course becomes available again.

Request Information