| CARVIEW |
CS502
Compiling And Programming Systems
Fall 2025, 3 credits. Instructor: Prof. Tiark Rompf
Announcements will be posted on Piazza. Homework submission and grading will be done through Brightspace.
Monday, Wednesday and Friday, 9:30-10:20am in WALC 3154.
Teaching assistants are:
- Songlin Jia, jia137 at purdue.edu
Office hours will be held at 5-5:40pm in DSAI B022 on Tue and Wed.
About the Course
In a nutshell: The theory and practice of programming language translation, compilation, and run-time systems, organized around a significant programming project to build a compiler for a simple but non-trivial programming language.
Parts of the class are based on the Advanced Compiler Construction class taught by Michel Schinz at EPFL. The corresponding class materials (lecture slides, programming assignments, etc) are used with permission.
Grades: Final grades will be based on results for the programming assignments (30%), midterm (30%), and final exam (40%). Achieving a minimum of 20% in each of the three components is necessary (but not sufficient!) for a passing grade.
Late Work Policy: No late submission will be accepted. Any travel, including interview trips, load from work or other classes, or simply not being able to get your program to run will not be grounds for extensions or exceptions.
Academic integrity: For general policies about academic integrity etc. Please see here. You are expected to read that page and will be held accountable according to its contents.
Recommended Books
- Modern compiler implementation in Java, Second Edition, Andrew W. Appel, Cambridge University Press, 1998.
- An Incremental Approach to Compiler Construction, Abdulaziz Ghuloum, 2006.
- Engineering a Compiler, Second Edition, Keith D. Cooper, Linda Torczon, 2007.
- Compilers: Principles, Techniques, and Tools, Aho, Lam, Sethi, Ullman, Addison-Wesley, 2007.
Supplementary Resources
Lecture Notes
A set of lecture notes is available here:
Slides
Download credentials available in Piazza
Week 1
Week 2
Week 3
Week 4-5
- Intermediate Representations (pdf)
Week 6-8
Week 9
- Optimizations (pdf)
Week 10
- Dataflow Analysis (pdf)
Week 11-12
- Register Allocation (pdf)
Week 13 (Reading Only)
Week 14-15
Week 16
- Object-Oriented Languages (pdf)
Projects and Schedule
- Project 1: Arithmetic (due 11:59pm Sunday Aug 31)
- Project 2: Branches, Loops, and Error Handling (due 11:59pm Sunday Sep 7)
- Project 3: Type Checking - Functions - Heap Allocation (due 11:59pm Sunday Sep 21)
- Project 4: CMScala to CPS Translation (due 11:59pm Sunday Oct 5)
- Midterm: Wed Oct 8th in class
- Project 5: Value Representation (due 11:59pm Sunday Oct 26)
- Project 6: Optimization (due 11:59pm Sunday Nov 9)
- Project 7: Garbage Collection (due 11:59pm Sunday Dec 7)
Upcoming schedules are tentative.
- Final: Mon Dec 15th, 8-10am, HAAS G066