Program Optimization


With the emergence of many new computing platforms such as multi-core, GPUs etc. automatic program optimization has taken on a renewed importance. In this course, students will analyze programs and find and leverage opportunities to improve performance, memory footprint, locality etc. The course will cover optimizations such as redundancy elimination, code scheduling, vectorization, data layout and parallelization. A course project using state-of-the-art tools will give students hands-on experience in this area.

Post Condition (on student capability after successfully completing the course):

students will be able to apply program analysis techniques to leverage optimization opportunities
students will learn several forms of existing code optimizations
students will be able to evaluate the impact of optimizations on performance, memory footprint etc.
students will be able to formulate algorithms for new code optimizations


Course Offering