Published using Google Docs
CS 410P/510 Top: Programming Language Compilation
Updated automatically every 5 minutes

CS 410P/510 Top: Programming Language Compilation

Credit Hours:

4/3

Course Coordinator:

Andrew Tolmach

Course Description:

This is a course about basic techniques for generating machine code from a high-level language.  We will build complete compilers from high-level abstract syntax down to X86 machine code for a series of languages, each adding new features, including integers, booleans and conditionals, assignment and loops, records and garbage collection, and functions.  The course will be based on the book "Essentials of Compilation: An Incremental Approach in Python" by Jeremy Siek. This book is available for free on-line at https://www.dropbox.com/s/mfxtojk4yif3toj/python-book.pdf?dl=1

This is a programming-intensive course.  Students should expect to spend a significant amount of time reading and writing code each week. Implementation will be in the Python language version 3.10+. Working in teams will be very strongly encouraged.

Further updates may be provided at https://web.cecs.pdx.edu/~apt/510comp_ad.

Prerequisites:

Goals:

Upon the successful completion of this class, students will be able to:

  1. Understand the roles of interpretation and compilation.
  2. Implement a machine code generator and simple register allocator.
  3. Apply dataflow analysis techniques to implement simple code optimizations.
  4. Implement and interface with a simple garbage collector.
  5. Use modern idioms such as pattern matching to manipulate program representations.

Textbooks:

There is no required textbook to purchase.  The Siek text will be available on the web.