CGO

Code Generation and Optimization

Syllabus

Code Generation and Optimization (CAETE Fall 2007)

Course: ECEN 5013 - Code Generation and Optimization
Professor: Dan Connors
Office: ECOT 342
Phone: 303-735-7199
E-mail: dconnors@colorado.edu
http://ece.colorado.edu/~dconnors
Office Hours: Monday and Wednesday 10:00am - 12:00 noon, or by appointment
Class Information: Main page: http://ece.colorado.edu/~dconnors/courses/CGO
Description: An in-depth study of compiler backend design for high-performance architectures. Topics include control-flow and data-flow analysis, classical optimization, instruction scheduling, and register allocation. Advanced topics include memory hierarchy management, optimization for instruction-level parallelism, modulo scheduling, predicated and speculative execution. The class focus is processor-specific compilation techniques, thus familiarity with both computer architecture and compilers is recommended.
Prerequisites: The following courses: machine language programming, high-level language programming (C,C++,Java), computer organization and design. No compiler background is necessary
Grading: 40%: Compiler Checkpoints
40%: Midterm and Final Exam

20%: Semester-End Project
Students taking this class for graduate credit will be assigned more work in each checkpoint.

Lecture: Lecture material (slides,notes) will be made available on the web prior to class. However, in some cases, material may be posted late. Students should not view lecture notes as necessary for understanding the material and following lectures.

Announcements: Special announcements may be made in the lectures and at the website. Changes to the regulations/syllabus may occur at anytime. Students should visit the web site frequently. These announcements may overwrite the dates and rules specified in previous handouts and announcements. Students are responsible for material made in announcements.

A newsgroup will be established for the course to post announcements and to allow students to post questions or discussion. Students MUST sign up for a news account to receive emails either in batch mode or individual.

Compiler Checkpoints: There will be several programming assignments completed throughout the semester. Each will focus on one particular aspect of the compiler. Students are allowed to pair with one other student to form a group for the entire semester. The expected assignment topics are control flow analysis, IR visualization, register allocation, classical optimization, and instruction scheduling. Each assignment will consist of implementing a particular technique within the compiler system and showing its operation on several test programs. Very often the complete set of test programs will not be given for testing, thus requiring the student groups to perform intensive validation.
  • All checkpoints are due before the lecture begins.
  • No late checkpoints will be accepted.
  • Arrangements for late checkpoints can be made by request of the professor.

Semester Project: There will be a project assigned throughout the semester. The project will count as 40% of the classgrade, and will be a significant amount of work. The project is to be performed by the student groups selected for the compiler checkpoints. The assignment provides solid training in designing modern compilers. The project is based on the completion of the checkpoints as well as new work based on experimental evaluation. Generally, the project will involve investigating the best method for optimizing different applications. The grade is partially based on a student competition in comparing program performance measures: code size, execution time, and compilation time. Details about the project and schedule will be announced later in the semester.
Participation: Participation is also awarded in the form of points. Participation includes asking questions and helping the class into interesting discussions. Points may also be subtracted from a student for detracting from lectures. Reading assignments and discussion are part of the participation category. General rules: attend lecture, come on time, and participate. 
Policies: Coming in late is disruptive and discourteous. In order to maintain an environment for effective learning, disruptive behavior in lecture will result in students being asked to leave class.

Cheating policy:  Please see the University of Colorado Honor Code and policies regarding cheating. Students are encouraged to discuss the course assignments and projects. However, the solutions to assignments should be individual original work and no sharing of code, answers, or work is allowed.

The professor will make efforts to know every student's name, but will not use scare tactics such as calling on an unwilling student.  When emailing please use CGO somewhere in the subject line.

Appointments: You are encouraged to make at least one appointment with the professor during the semester. Appointments can be made by email. Introducing yourself to me, exploring research opportunities, expressing concerns, offering suggestions, and seeking advice are among the welcome topics.