Course Description
This course will focus on advanced
techniques for program optimization and verification, with a focus
on multicore processors and concurrency. We will begin with
classical topics such as interprocedural and intraprocedural
dataflow analysis, abstract interpretation, and optimization
techniques for modern uniprocessors. Then we will discuss multicore
processors, and study techniques such as dependence analysis, loop
transformations, points-to analysis, and shape analysis for
optimizing the execution of regular and irregular programs on
multicore processors.
Prerequisites
An undergraduate compiler course
or permission of instructor. Programming experience in the context
of a larger system is helpful because some of the programming
assignments require the use of the LLVM infrastructure.
Coursework
In the first half of the course,
students will do both written and programming assignments. There
will be one mid-semester exam. In the second half of the course,
students will present papers and do a final project.
Lecture slides
Assignments
Projects