An introduction to compiler analyses and techniques used in the automatic parallelization of programs. Topics include: data dependence, dependence testers, loop-level parallelization, loop transformations, loop scheduling, locality management, data distribution, computation partitioning, task-level parallelization, case studies. Students carry out a significant literature survey or a programming project in one of the course topics.