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. The last
part of the course focuses on automatic program verification
undergraduate compiler course or permission of instructor.
Programming experience in the context of a larger system is helpful.
Coursework: There will be
written assignments as well as programming assignments. Written
assignments will test understanding of concepts while programming
projects will provide experience with implementation issues. There
will also be paper presentations and a final project.