What's New
- Assignment 2 is released
- Competition Rules is released
- Assignment 1 is released
- Results for open and hidden benchmarks is built up
- Group competition part of the project, released 3/18
- A Gcc tools page has been created, 3/13
- A pre-built Gcc documentation (by Doxygen) is available locally. See Gcc resources. Added 3/13
- If you frequently want the string name of a gimple node type during debugging, read the recently augmented Q&A, added 3/13
- A note from 3/7 on building Gcc outside the cluster, and a list of public use machines, added 3/12
- Paper reading about the memory bandwidth problem, added 3/5
- Part 4 of the project, due 3/17, released 2/25
- How to debug your compiler
- Mid-term for fall 2006
- A number of Q&As posted on the discussion page about Proj. 2, added 2/16
- New Gcc code documentation link/tool (Doxygen), added 2/14
- Update to the Gcc base version, required for Proj. 2 and later projects, added 2/13
- Reading for Feb. 11 lecture, added 2/6
CSC 255/455 Advanced Programming Systems, Spring 2008
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 based on Gcc for compiling 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: Xiaoming Gu
Lectures: Mondays and Wednesdays, 2pm-3:15pm, CSB 632
Office hours: Ding, Fridays, 11am to 12pm or by appointment, in CSB 710, x51373. Gu, Wednesdays, 10am to 11am or by appointment, in CSB 726, x55414.
Grading (total 100%)
- midterm and final exams are 25% each
- the project is 40%
- written assignments are 10% total
Schedule
Updated April 9, 2008
Textbooks and other resources
Optimizing Compilers for Modern Architectures (UR access through books24x7), Randy Allen and Ken Kennedy, Morgan Kaufmann Publishers, 2001. Chapters 1, 2, 3, 7, 8, 9, 10, 11.
lecture notes from Ken Kennedy. The book is available in the university book store. On-line
Errata
Engineering a Compiler, Keith D. Cooper and Linda Torczon, Morgan Kaufmann Publishers. Chapters 1, 8, 9, 10 and 13.
lecture notes and
additional reading from Keith Cooper. The book is available in the university book store. On-line
Errata
The Little Schemer, Daniel Friedman and Matthias Felleisen, MIT Press. Auxiliary reading.
To play with lambda calculus, use the
DrScheme environment.
Copies of the above three books are on reserve at Calson Library
Improving Effective Bandwidth through Compiler Enhancement of Global Cache Reuse, Chen Ding and Ken Kennedy, Journal of Parallel and Distributed Computing, Volume 64, Issue 1, January 2004, Elsevier Press, pages 108--134.
reading for March 5th lecture
Blended analysis for performance understanding of framework-based applications, Dufour, Ryder, and Devitsky, Proceedings of the 2007 international symposium on Software testing and analysis.
reading for Barbara Ryder talk on Feb. 11