CIS 570: Modern Programming Language Implementation (Autumn 2006)

Tues/Thurs 4:30-6:00 Towne 307 (CLASS SCHEDULE)
Email: cis570-001-06c@lists.upenn.edu (archive)

Staff

Instructor: E Christopher Lewis (lewis at cis dot upenn at edu); Office hours: Tues/Thurs 11-12 (605 Levine Hall)

Course Description

CIS 570 is a broad introduction to advanced topics in the implementation of modern programming languages. This course emphasizes program representation, analysis, and transformation. These are not only the principal components of modern optimizing compilers, they are also used to build static bug-detection tools, software-engineering tools, and non-traditional language implementations. Course readings come from recent and classic papers of the research literature. Covered topics include the following: control-flow analysis, data-flow analysis, interprocedural analysis, program representations (control-flow graphs, abstract syntax trees, static single assignment form, superblocks), optimization, alias analysis, register allocation, instruction scheduling, compiling for IA-64, loop transformations for parallelism and locality, optimization of object-oriented languages, just-in-time compilation, and garbage collection.

Readings

We will not be using a textbook. All reading will come from the literature (available via the class schedule). Discussion questions are available for each paper. Please consider the discussion questions while reading the papers.

Several texts have been placed on reserve in the SEAS library for reference.

  • Advanced Compiler Design and Implementation by Steven Muchnick
  • Compilers: Principles, Techniques, and Tools by Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman
  • Engineering a Compiler by Keith Cooper, Linda Torczon
  • Modern Compiler Implementation in Java by Andrew W. Appel, Jens Palsberg

Exams

The final exam time and date are to be determined. There will not be a midterm exam.

Resources

  • None yet

E Christopher Lewis
Last modified: Wed Sep 13 14:34:00 EDT 2006