CSC 255/455 Advanced Programming Systems, Spring 2010
What's New
Schedule and Handouts (useful for taking notes during class)
- Final exam
- First-year CS Ph.D. students: the final exam will be a part of the Systems comprehensive exam, 8:30am to 12:30pm, Wednesday May 5, Room CSB 601
- Others: 4 to 6pm, Tuesday May 4, Room CSB 632 ( do not reveal exam questions or answers until noon May 5)
- Compiler parallelization project presentation, April 28.
- Lectures on April 19, 21, and 26: programming language semantics, correctness of program transformation, and lambda calculus
- Lecture on April 14: introduction to parallel programming
- Lecture on April 12: compiling explicitly parallel code slides on compiling message-passing code by Greg Bronevetsky, compiler and run-time support for pipelined computation and communication
- Lectures on March 31, April 5, 7: scheduling, register allocation and PRE, control dep and interprocedural analysis
- Lecture March 29: enhancing locality
- Lecture March 24: enhancing parallelism
- Lecture Feb 24, March 1, 15, 17, 22: data dependence theory and the AK vectorization algorithm
- Lecture Feb 22: programming high-performance systems (Chapter 1 of Allen-Kennedy book)
- Lecture 8,9:def-use and ssa
- Lecture 7: dataflow properties
- Lecture 5,6: dataflow analysis: avail and live
- Lecture 4: superlocal value numbering
- Lecture 3: local value numbering in Ruby
- Lecture 2: local value numbering
- Lecture 1: introduction to program analysis
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: Xiaoya Xiang
Lectures: Mondays and Wednesdays, 2pm-3:15pm, CSB 632
Office hours: Ding, Fridays, 11am to 12am or by appointment, CSB Rm 710, x51373.
Xiang, Tuesdays 3pm to 4pm, Thursdays 3pm to 4pm, or by appointment, CSB 625, x52527. You may contact us using instant messaging through any Jabber IM client such as a gmail address. Connect to
255Spring10ta@gmail.com.
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. 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. On-line
ErrataThe Little Schemer, Daniel Friedman and Matthias Felleisen, MIT Press. Auxiliary reading.
To play with lambda calculus, use the
DrScheme environment.