CSc 553 Principles of Compilation - Schedule
Introduction
Week 1
Lecture #1, Thu, Jan 13:
Administrivia, Introduction
- Grading policy
- Course content
- Lecture notes #0 (Administrivia) are now available.
- Compilers
- Lecture notes #1 (Compiler Overview) are now available.
- Lecture notes #2 (Interpreters) are now available.
- Lecture notes #3 (The Java VM) are now available.
- Read Aho, Lam, Sethi, Ullman, Compilers: Principles, Techniques, & Tools: Chapter 1, Chapter 2, Appendix A
- Office hours: Tuesday 9:00-10:00
Week 2
Lecture #2, Tue, Jan 18:
Interpreters
- Interpreters
- Java Virtual Machine
- Read Stack Caching for Interpreters
- Assignment 1 (Interpretation) handed out.
- First student presentations are now scheduled for Jan 27.
- The Luca Compiler has been upgraded to version 1.1: (a) better printing of tree code, (b) added the "-v" option to lucac, (c) fixed makefile problems. Check your version by typing "lucac -v"; it should say "1.1". Download lucadist.zip from here.
Lecture #3, Thu, Jan 20:
Intermediate Code, Procedures
- Read Aho, Lam, Sethi, Ullman, Compilers: Principles, Techniques, & Tools: Section 7.1-7.3
- Read Aho, Lam, Sethi, Ullman, Compilers: Principles, Techniques, & Tools: Section 6.1-7.2
- Lecture notes #4 (Intermediate Code) are now available.
- Lecture notes #5 (Procedure Calls) are now available.
- Lecture notes #6 (Malloc Algorithms) are now available.
Week 3
Lecture #4, Tue, Jan 25:
Introduction to code generation
- Lecture notes #7 (Code Generation I) are now available.
- Collberg away, class taught by Kevin Coogan.
- Assignment 2 (Object-Oriented programming and garbage collection) handed out.
- Assignment 2 is already handed out, although it's not due until March 8.
- The Luca Compiler has been upgraded to version 2.0: (a) ENUM now works, (b) Object-Oriented features are now implemented, (c) Added SPECIAL functions. It's not necessary to use version 2.0 for assignment 1, but you may as well upgrade now rather than waiting for assignment 2. Download lucadist2.zip from here.
Lecture #5, Thu, Jan 27:
Student Presentations: Interpreters
Week 4
Lecture #6, Tue, Feb 1:
OO
Lecture #7, Thu, Feb 3:
Garbage Collection
Week 5
Lecture #8, Tue, Feb 8:
GC
Lecture #9, Thu, Feb 10:
GC
Week 6
Lecture #10, Tue, Feb 15:
Exceptions
- We're finishing up the GC section.
- Access to non-local names (from the lecture on procedures)
- Lecture notes #18 (Exceptions) are now available.
- Exception handling
- Read Implementing Zero Overhead Exception Handling
- This pretty much covers the first section of this class, namely runtime support for programming languages
- The Luca Compiler has been upgraded to version 2.4. Download lucadist2.4.zip from here.
Lecture #11, Thu, Feb 17:
Student Presentations: Garbage Collection
Week 7
Lecture #12, Tue, Feb 22:
Student Presentations: Garbage Collection
Lecture #13, Thu, Feb 24:
Exception Handling
Week 8
Lecture #14, Tue, Mar 1:
TBA
- The Luca Compiler has been upgraded to version 2.5. Download lucadist2.5.zip from here.
- The new student presentation papers can be found below. Email me when you've decided which one to present. First come first serve!
Lecture #15, Thu, Mar 3:
TBA
- The Luca Compiler has been upgraded to version 2.6. GetFieldSize() now returns something > 0... Download lucadist2.6.zip from here.
- The Luca Compiler has been upgraded to version 2.7. NarrowVal/NarrowVar hopefully work right now... Download lucadist2.7.zip from here.
Week 9
Lecture #16, Tue, Mar 8:
Code-generation from trees.
Lecture #17, Thu, Mar 10:
Instruction-Selection by Dynamic Programming
Week 10
Lecture #18, Tue, Mar 15:
Spring Break
Lecture #19, Thu, Mar 17:
Spring Break
Week 11
Lecture #20, Tue, Mar 22:
Code generation by Tree Pattern-Matching
Lecture #21, Thu, Mar 24:
Graph-coloring register allocation
Week 12
Lecture #22, Tue, Mar 29:
Instruction-scheduling
Lecture #23, Thu, Mar 31:
Optimization
- The Luca Compiler has been upgraded to version 2.8. No more duplicate labels! Thanks Pankhuri! Download lucadist2.8.zip from here.
- Lecture notes #26 (Optimization I) are now available.
- Lecture notes #27 (Optimization II) are now available.
Week 13
Lecture #24, Tue, Apr 5:
Data-Flow Analysis
Lecture #25, Thu, Apr 7:
Iterative Data-Flow Analysis
Week 14
Lecture #26, Tue, Apr 12:
TBA
Lecture #27, Thu, Apr 14:
Student presentations
Week 15
Lecture #28, Tue, Apr 19:
Finding loops
Lecture #29, Thu, Apr 21:
Parallelizing compilers
Week 16
Lecture #30, Tue, Apr 26:
Parallelizing compilers
Lecture #31, Thu, Apr 28:
Parallelizing compilers, watermarking
Week 17
Lecture #32, Tue, May 3:
Student Presentations, similarity analysis, obfuscation