This course explores foundation of Compiler design, principles, techniques & tools. Topics include Compilation Phases, Run-time environments, Machine-Independent Optimization, Instruction-Level Parallelism, Optimizing for Parallelism as Locality, Inter-procedural analysis.