CSC 255/455 Advanced Programming Systems, Spring 2009
What's New
- The exam times are posted in the course schedule below. The final exam from last year (and answers) are available here.
- homework 2 is out (Due: April. 24th 6:00pm).
- homework 1 is out (Due: April. 15th in class).
- Project group competition result has been posted.
- Project group competition introduction has been posted.
- Project Part 4 is out (Due: Mar. 18)
- To assist preparation for the midterm on Feb. 25, last year's exam is available here
- Project Part 3 is out (Due: Feb. 23 for GCC Track; Feb. 25 for URCC Track)
- Interactive Ruby interpreter ( irb) is installed on all csug machines, thanks to Jim (Feb. 16)
- Ruby Track is ready for project 2 (Feb.11)
- URCC (Ruby-based C compiler) is ready for preview and demo (Feb. 9)
- Project Part 2 is released (Due: Feb. 16th)
- Project Part 1 is released (Due: Feb. 4th, different from the time on the schedule.)
- Course project homepage posted (1/27)
- TA's office hour posted
- Prof. Ding's office hour changed to 10-11am Fridays (1/22)
Schedule and Handouts (useful for taking notes during class)
- Lecture 1 notes
- Lectures 2&3 notes:local and super local value numbering
- Lectures 4&5: AVAIL analysis and LIVE analysis
- Lecture 6: Data flow properties, URCC compiler
- Lectures 7&8: def-use chains, dce, ssa
- Lecture 9: abstract interpretation (optional material, not required)
- Midterm take-home exam in Spring 2008
- Lecture 10: local, trace, and vector scheduling, software pipelining (slides from Cooper's 412 and Kennedy's 515 at Rice)
- Lecture 11: lazy code motion, register allocation and introduction to programming for high performance computers
- Lecture 12: dependence theory, reordering transformation, direction and distance vectors
- Lecture on March 18: Allen-Kennedy vectorization algorithm, overview of dependence testing
- Mini-symposium on March 23
- Lectures on March 25, 30: Enhancing fine-grained parallelism
- Lecture on April 1: Control dependence
- Lecture on April 6: Improving locality and interprocedural analysis
- Lectures April 8 through April 15: Lambda calculus and programming language semantics (email your program to the instructor if you complete this 66% complete evaluator before class on April 15)
- Lecture on April 20: parallel programming
- Lecture on April 22 (guest lecture by Bin Bao): analysis of message-passing code
- April 27: project presentation
- April 29: summary and class evaluation
- May 5: final exam for 255 students, 4pm to 7pm, CSB 601. Do not disclose exam questions to others since some of the questions are used on the next day in the 455 exam.
- May 6: final exam for 455 students (part of the systems comprehensive).
Class plan as of January 2, 2009
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.
This year a module will be added on languages and techniques for designing and analyzing parallel programs.
Instructor, office hours, and grading
Instructor: Chen Ding, Prof.
Teaching assistant: Bin Bao
Lectures: Mondays and Wednesdays, 2pm-3:15pm, CSB 601
Office hours: Ding, Fridays, 10am to 11am or by appointment, CSB Rm 710, x51373.
Bao, Mondays 10am to 11am, Thursdays 3pm to 4pm, or by appointment, CSB 631, x50469.
Grading (total 100%)
* midterm and final exams are 25% each
* the projects total to 40%
* written assignments are 10%
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 will be available in the university book store. On-line
ErrataEngineering 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 will be available in the university book store. On-line
ErrataThe Little Schemer, Daniel Friedman and Matthias Felleisen, MIT Press. Auxiliary reading.
To play with lambda calculus, use the
<nop>DrScheme environment.