This course is an overview of program analysis including static analysis which involves reasoning about program source, dynamic analysis which involves reasoning about program execution traces, and formal methods which involve mathematical foundations of