CPSC 510:  COMPILER CONSTRUCTION II
(Two semesters: fall 2007 and winter 2008)

Lecturer: Robin Cockett
Meeting: MS 061 - Tues & Thurs 3:30

COURSE OUTLINE:

This is an advanced compiler construction course suitable for final year undergraduate sudents and first year graduate sudents.  Graduates may take the first semester as a separate course.


First semester:
The focus is on the backend of the compiler (parsing and semantic analysis are assumed, recall, this is the subject CPSC411).  We shall look at both abstract optimization techniques and machine level optimizations.  Abtract optimizations are largely machine independent and are performed at the level of an intermediate representation.  Data flow analysis and program reduction techniques will be covered.  These will include register allocation, instruction selection, instruction scheduling for pipeline and parallel architectures.

Exams:
Assignments:


Second semester:
Students must build a significant compiler (or aspect of a compiler) for a language.   During the course of the projects students must provide formal presentations describing the tools, techniques, and technical challenges they are facing in their projects.  These are organized round a series of "milestone" presentations.  They must also develop and keep a website describing their project up to date.
  1. Project Websites (for 2007 are here, 2006 are here)  for 2008 are here (25%).
  2. Milestone presentations (25%).
  3. Project submission: final presentation, website, documentation, code (50%).

Enjoy!


NOTES:
  1. Introductory lecture (here).
  2. Register allocation for expressions (here)

 

SOME TEXTS

  1. (Reference from cpsc411 for the front end) Compiler construction: principles and practice.  K.C. Louden.
  2. (Reference - a useful little book on lexing) Lex & Yacc. J.R. Levine, T. Mason, D. Brown.
  3. (Recommended/reference - the book with a modern approach)  Modern compiler implementation, A. Appel.
  4. (Recommended/reference - a new edition of an old bible) Compilers: principles techniques, and tools.  Aho, Lam, Sethi, Ullman.
  5. (Reference - an encyclodedia of techniques) Advanced Compiler Design Implementation, S. Muchnick


PARSING LINKS: