1998 Programming Language Prelim Syllabus

This syllabus is not a current syllabus for a prelim exam, but is only preserved for historical purposes. The current syllabus (as of 2013) is available here.

This syllabus gives an overview of the background expected for students planning to do PhD research in Programming Languages. One of the reasons for using a web page is to allow for easy updates as new topics arise in the area of programming languages and compilers. Comments on the syllabus are welcome. Please send mail to Professors Aiken, Graham, Hilfinger, and Yelick. In particular, please let us know if you find online copies of the papers, so we can add the appropriate links.

The prelim syllabus is divided into the following general topics:

Although much too extensive to be considered part of the syllabus, students should also be aware of the page of links to specific languages, critiques, and other programming language research topics. To get some help in navigating through the literature, including a short history of some of the languages and their relationships, see Introduction to the Literature in Programming Language Design, by Gary Leavens.


Programming Skills

Students should have familiarity with the following languages, i.e., they should know the major features and what most of the language constructs are and be able to write small programs.

Semantics


Language Design


Types


Implementation

Many of the implementation topics are covered in Advanced Compiler Design and Implementation., Steven S. Muchnick, Morgan Kaufmann, 1997. Some additional papers are noted below for topics that are not adequately covered in this book.

Program Analysis


Optimization

Many of the topics on optimization are covered Advanced Compiler Design and Implementation., Steven S. Muchnick, Morgan Kaufmann, 1997. Some additional papers are noted below for topics that are not adequately covered in this book.

Software Engineering

Students in the programming language area are expected to be familiar with basic software engineering concepts, and to have some experience with a large software project. Since this section is missing references, no specific topics on software engineering will be covered on the upcoming (F98) prelim.