15-812 Semantics of Programming Languages (12 units) Spring 2006

John C. Reynolds

University Units: 12 (starred course)

Tuesdays and Thursdays, 1:30-2:50 PM Wean Hall 5409


The final examination, which will be an open-book take-home exam, was handed out on April 27 and will be due at the beginning of class on May 4.

CORRECTIONS: In Problem 3a on the final examination, you should use callcc and throw (not catch and throw).

In Problem 4, =_{eq} should be =_{ref}.

In Problem 5, you should not use type variables or polymorphism (since these topics were not covered in class before I passed out the exam).

Course Description

We survey the theory behind the design, description, and implementation of programming languages, and of methods for specifying and verifying program behavior. Both imperative and functional programming languages are covered, as well as ways of integrating these paradigms into more general languages. Coverage will include: In exploring these topics, we will use a variety of fundamental concepts and techniques, such as compositional semantics, binding structure, domains, transition systems, and inference rules.

PREREQUISITES: There are no specific prerequisites, but the course requires some background in programming languages and basic mathematics. To get a feel for what is needed look at Appendix A of the text and skim over the first couple of chapters. If these seem unduely difficult, meet with the instructor.

TEXTBOOK: J. C. Reynolds, "Theories of Programming Languages", Cambridge University Press 1998. (errata in postscript) (errata in PDF)


ADDITIONAL READING: Each chapter of the textbook gives bibliographic notes listing journal articles and reserved books. This material is not required reading; it is there in case you have difficulty in understanding the text or want to pursue a topic further for your own interest.

HOMEWORK: There will be homework assignments, at most once a week. No late homework will be accepted. However, the two lowest grades will be dropped before averaging the grades. Collaboration is permitted on homework, but each person must write up his own answers and must be able to demonstrate that he understands them.

EXAMINATIONS: There will be midterm and final examinations. Both will be open-book exams. No collaboration is permitted.

GRADING: Your grade will be computed in two ways: as an equally weighted average of the homework, the midterm, and the final, and as an equally weighted average of just the midterm and the final. Your actual course grade will be the higher of the two.

COVERAGE: The goal is to teach as much as can be taught clearly, not to cover all of a fixed syllabus. You will not be examined on topics that are not covered in class, unless it is specifically announced otherwise.

ASKING QUESTIONS: It is vital that you ask questions if an explanation seems unclear. There may also be bugs in the textbook: If you find one you should bring it up in class if it is likely to mislead anyone, or report it to the instructor privately if it is minor.


CLASS WEBPAGE: /www.cs.cmu.edu/afs/cs.cmu.edu/project/fox-19/member/jcr/www15812As2006/cs812-06.html
There is a link to this page from the instructor's home page at /www.cs.cmu.edu/~jcr.
Check this page frequently - important or unexpected notices will be posted prominently.

Last updated: April 28, 2006