CS410P/510 Programming Language Compilation Winter 2024

Instructor: Andrew Tolmach

Please fill out this form as soon as possible.

Course Information

Exams

Textbook

Homework

Schedule

Highly subject to change!
Reading chapter references are to "Essentials of Compilation." Initial reading of each chapter should be done before the specified date.
Date Reading HW Due Topics Recording Resources
Jan 9 Introduction (recording) Rough lecture notes CS320 Lecture on compiler Structure
Jan 11 Ch. 1 Preliminaries; Integers; Python idioms (recording)
Jan 16 Ch. 2 week1 Code Review; Variables (recording) code review samples
Jan 18 Implementing Variables (recording)
Jan 23 Ch. 4 week2 Code Review; Register Allocation (recording) code review samples
Jan 25 Register Allocation (recording)
Jan 30 Ch. 5 week3 Code Review; Booleans and Control Flow (recording) code review samples
Feb 1 Implementing Booleans and Control Flow (recording)
Feb 6 Ch. 6 week4 Code Review; Loops and Dataflow Analysis (recording) code review samples
Feb 8 Dataflow Analysis (recording) data flow analysis
Feb 13 (none) Midterm (in class)
Feb 15 week5 Optimization (recording) Optimization lecture notes Optimization Assignment instructions
Feb 20 Ch. 7 week6 Code review; Tuples and Garbage Collection (recording) Book Ch. 7 Local Version (updated 2/20/24 3:40pm)
Feb 22 Implementing GC (recording) Garbage Collection lecture notes
Feb 27 Ch. 8 week7 Code review; More Garbage Collection (recording) code review samples
Feb 29 Functions; Implementing Functions (recording) Book Ch. 8 Local Version [updated 2/29/24 4:05pm]
Mar 5 (none) Compiler Verification (recording) lecture notes Coq sources: (raw) (html)
Mar 7 Java Virtual Machine and Interpretation (recording) lecture notes
Mar 12 Nystrom Ch.2 week8 Bytecode and efficient interpretation (recording)
Mar 14 Execution Architectures (recording) Comparison of different IRs (.zip file)
Mar 19 Final exam (5:30-7:20pm)

Resources

  • We will be using the Python (v3.10+) language, linux or MacOS operating system, and X86-64 computer architecture for the homework in this course.
  • You may choose to work (remotely) on the CS department linux machines. New students can obtain access to the CS linux machines via their MCECS account, which can be activated using CRAM.

  • Github Resources
  • Python Resources

  • Machine Code Resources

  • General Books on Compilers