Schedule

This schedule is tentative and subject to change.

Acronyms for course references:

  • Dragon: Aho, Lam, Ullman, Sethi, Compilers: Principles, techniques and tools, 2nd ed. (2hr reserve)
  • CT: Cooper and Turczon, Engineering a compiler, 2nd ed (electronic copy available through library)
  • AK: Optimizing Compilers for Modern Architectures, Allen and Kennedy (2hr reserve)
  • Muchnick: Advanced Compiler Design and Implementation (2hr reserve)

The book Rival and Yi referenced below was not available when this course started. Its full reference is Rival and Yi, Introduction to Static Analysis: An Abstract Interpretation Perspective, MIT Press, 2020. I highly recommend this book.

NOTE: These slides are not meant to substitute for lectures.

Date Topic Notes References
Wed Jan 15, 2020

Introduction

Mon Jan 20, 2020

Martin Luther King Day (no classes)

Wed Jan 22, 2020

Intermediate Representations

CT: Chapter 5: Upto, but not including 5.4

(Optional) Muchnick: Chapter 4

Mon Jan 27, 2020

Local Value Numbering

CT: Chapter 8: Upto, but not including 8.4.2

Wed Jan 29, 2020

Liveness

CT: Chapter 8: Section 8.6.1

Dragon: Section 9.2.5

Mon Feb 03, 2020

Available Expressions, Reaching Definitions, Very Busy Expressions

CT: Chapter 9: Section 9.2.4

Dragon: Section 9.2.6 (recommended for a more leisurely treatment)

Wed Feb 05, 2020

Dominators, SSA form

CT: Chapter 9: Sections 9.2.1, 9.3

Mon Feb 10, 2020

Dominators, SSA form - II

CT: Chapter 9: Sections 9.2.1, 9.3

Wed Feb 12, 2020

Foundations of Data-Flow Analysis - I

Dragon: Chapter 9: Section 9.3

Mon Feb 17, 2020

Foundations of Data-Flow Analysis - II

Dragon: Chapter 9: Section 9.3 and 9.4

Wed Feb 19, 2020

Overflow: Lecture 9 followed by
Optimization: Dead Code Elimination

Cooper and Turczon: Chapter 10

Mon Feb 24, 2020

Optimization: Partial Redundancy Elimination

Dragon Book: Chapter 9, Section 9.5

Wed Feb 26, 2020

Instruction Scheduling/Register Allocation

CT: Chapters 12 and 13

Mon Mar 02, 2020

Review

Wed Mar 04, 2020

Midterm exam (in class)

Mon Mar 09, 2020

Spring Recess (no class)

Wed Mar 11, 2020

Spring Recess (no class)

Mon Mar 16, 2020

Class cancelled due to extended Spring Recess

Wed Mar 18, 2020

Type Inference (Cancelled, as Spring Recess is extended to Mar 23, but see Blackboard, Video on Blackboard)

Dragon: Chapter 6, Section 6.5.2

Mon Mar 23, 2020

Points-to/Interprocedural Analysis - I

Dragon: Chapter 12

Wed Mar 25, 2020

Points-to/Interprocedural Analysis - II

Dragon: Chapter 12

Mon Mar 30, 2020

Program Analysis/Abstract Interpretation

Rival and Yi: Chapter 2

Wed Apr 01, 2020

Abstract Interpretation II

Rival and Yi: Chapter 3

Mon Apr 06, 2020

Abstract Interpretation III

Rival and Yi: Chapter 3

GitHub source code

Wed Apr 08, 2020

Dataflow Analysis and Datalog (Lecture by Avi Saven)

Soufflé website

Mon Apr 13, 2020

Introduction to SAT/SMT Solvers

Wed Apr 15, 2020

Model Checking

Mon Apr 20, 2020

Symbolic Execution

Wed Apr 22, 2020

Proving Programs Correct

Mon Apr 27, 2020

Introduction to Hoare Logic

Wed Apr 29, 2020

Last day of class

May 6, 2020, 12:30PM

Final exam in LeChase 141