CSC 255/455

Advanced Programming Systems

Fall 2006

Course description

With the increasing diversity and complexity of computers and their applications, the development of efficient, reliable software has become increasingly dependent on automatic support from compilers and other program analysis and translation tools. This course covers principal topics in understanding and transforming programs at the code block, function, program, and behavior levels. Specific techniques for imperative languages include data flow, dependence, inter-procedural, and profiling analyses; resource allocation; and program transformation for locality and parallelism. Necessary parts of programming language theory are also covered, including basic lambda calculus and the correctness of program transformation.

Course projects include a program analyzer and optimizer for a subset of the C programming language. Meets jointly with CSC 255, an undergraduate-level course whose requirement includes a subset of topics and a simpler version of the project.

Instructor, office hours, and grading

Instructor: Chen Ding, Prof.

Teaching assistant: Tongxin Bai

Lectures: Tuesdays and Thursdays, 2pm-3:15pm, CSB 632

Office hours:  Ding, Fridays, 11am to 12pm or by appointment, in CSB 710, x51373.  Bai, TBA.

Grading (total 100%)


Textbooks and a programming tool

Optimizing Compilers for Modern Architectures, Randy Allen and Ken Kennedy, Morgan Kaufmann Publishers, 2001.  Chapters 1, 2, 3, 7, 8, 9, 10, 11.  Available in the university book store.

Engineering a Compiler, Keith D. Cooper and Linda Torczon, Morgan Kaufmann Publishers.  Chapters 1, 8, 9, 10 and 13.  Available in the university book store.

To play with lambda calculus, use the DrScheme environment.