CS 611: Semantics of Programming Languages

Announcements

Final Exam stats
total pts                 91

mean

79.625

std dev

10.12979

median

84.5

Contents:

Description:

Lectures: MWF, 10:10-11:00am, Upson 215

Though CS611 is called ``Advanced Programming Languages'' in the course book, it is better entitled ``Semantics of Programming Languages''. The goal of this course is not to conduct a broad survey of hi-tech programming languages like C++, Java, or SML, nor to directly study implementation mechanisms for these languages (e.g., compressed dispatch tables for multiple inheritance). Rather, the goal of this course is to study the principles of formal notation for describing computations, and tools for analyzing and proving properties of computations. These concerns subsume the study of specific programming languages or implementation mechanisms and hence lead to a deeper understanding of programming, specification, logic, mathematics, and proof theory.

For example, we will study notations for abstractly specifying how programs compute (operational semantics), as well as notations for describing what programs compute (denotational semantics). In turn, the abstract but precise realization of these notations will allow us to study techniques (induction, logical relations) for formally proving interesting and relevant properties of programming languages (e.g., type safety or compiler correctness).

Ideally, a student coming out of this course will have learned something about how to make informal concepts and notation precise, and how to manipulate the notation to demonstrate useful properties.

Textbook:

Other useful books:

Prerequisites:

On the programming side, we assume experience with at least a Pascal- or C-like language. Preferably, students will have some knowledge and experience working with a functional language, such as Scheme, ML, or Haskell.

On the theoretical side, we assume a basic proficiency in undergraduate mathematics, logic, and computer science. A basic knowledge of computability (e.g., turing machines, recursive functions) and logic (e.g., predicate calculus), as well as some mathematical maturity is required.

This course is designed for PhD or MEng students in CS, Math, OR, and EE.  If you are an undergraduate student, you must talk to the instructor to find out if the course is suitable for you.

Contact Information:

Newsgroup: cornell.class.cs611
Instructor: Greg Morrisett, Upson 4133, jgm@cs.cornell.edu, 5-3009
Office Hours: by appointment.
Admin. Assistant: Joan Lockwood, Upson 4147, joan@cs.cornell.edu, 5-5331
TA: Stephanie Weirich, Upson 5139, sweirich@cs.cornell.edu, 5-5578
Office Hours: MF 11:00am-12:00pm, and by appointment

Relevant Web Links: