In CS 553 students will investigate the importance of compiler optimization for translating programs written in languages such as C/C++, Fortran, and Java into implementations that run efficiently on current computer architectures with complex memory hierarchies and multiple levels of parallelism. Science and engineering applications such as modeling the earth's climate and combustion in engines will motivate the investigation of data-flow optimizations and loop transformations including auto-parallelization. Topics will include the following: scanning, parsing, abstract syntax trees, 3-address code, register allocation, instruction scheduling, control-flow analysis, data-flow analysis, static single assignment, loop transformations for parallelism and locality, interprocedural analysis, and alias/pointer analysis.

This course will cover programming language implementation using the LLVM compiler infrastructure. LLVM is open source, industry supported, and used heavily in industry and in compiler research.

This is all done through 4 programming assignments, a midterm, and a term project.

Michelle Mills Strout
Office: 244 CS Building
Office Hours in 342: TBD or by appointment
Lecture Time and Place:
3:00-3:50pm, Monday, Wednesday, and Friday, Room Comp Sci 325


Experience programming in C++ is required (for example CS 253 here at CSU). Some background in parsing and compiler intermediate representations would be helpful but is not necessary (for example, a course like CS 453 here at CSU). A math background in discrete math and linear algebra is needed for the data-flow analysis and loop transformation material in this course. If you are interested, but unsure of your background, I would be happy to discuss it with you.


There is no required textbook for this course. All of the required reading material will be provided online.


Here are the formally graded elements of the course and associated weighting:

Activity Weight
Programming Assignments 40 %
Midterm 20 %
Project Proposal 10 %
Project Demo 5 %
Project Writeup 20 %
Project Presentation 5 %

Semester grades are determined by the weighted sum of points earned in each of the above areas. A compression curve is used for the midterm ONLY. All other grades in the course are NOT curved. The grading scale is as follows: >= 90 is an A, >= 88 is an A-, >=86 is a B+, >=80 is a B, >=70 is a C, >=60 is a D, and <60 is an F.

To pass this course, you must obtain at least a 70% on each of the following grading categories: programming assignments, midterm, and project.

The midterm, programming assignments, and project will be done individually and grades assigned on an individual basis.

Late and Makeup Policy

Midterm: The midterm is an in-class test that must be done individually. If you have a family or medical emergency, let me know as soon as possible and be able to provide documentation to reschedule your midterm.

Programming assignments and the Project: Unless otherwise specified, assignments are to be submitted electronically using RamCT. Specifics will be included in each assignment. Always check the assignment page for due dates. Late assignments submitted within 48 hours of the time required will receive a 10% late penalty. Electronic submission is closed 48 hours after assignments are due.

Class Participation

Students are also expected to keep up with the assigned reading that is posted on the progress page.

All students taking this course are expected to participate actively in class.

Students are also expected to read the announcements/news on the main course web page, the RamCT discussion board, and the progress page every day for any updates.

Professional Conduct

All students are expected to conduct themselves professionally. We assume you are familiar with the policies in the student information sheet for the department. The course will adhere to the Academic Integrity Policy of the Colorado State University General Catalog and the Student Conduct Code, which states that "As a student at Colorado State University, I recognize my active role in building a Campus of Character. This includes my commitment to honesty, integrity, and responsibility within the campus community. As such, I will refrain from acts of academic misconduct." In CS 553, you can talk with other students about the assignments, but you cannot copy answers from each other. One good rule of thumb is to not take notes while talking with other students in the class. Just discuss the issues and then go work on your own assignment.

Additionally, we consider you to be computing professionals. You should be familiar with the code of conduct for the primary professional society, ACM. You can read the ACM Code of Conduct. There is also a code of conduct for the Computer Science Department.