CS 471 - Compiler Construction
University of Virginia
Computer Science Department
Course Time: Mon/Wed 11:30-12:45 PM
Course Location: MEC 216

Instructor: Kim Hazelwood
Email: hazelwood AT virginia
Office hours: Mon 1:00-2:00 PM
Office location: Olsson 209
CS 471 HOME
INSTRUCTOR
SYLLABUS
LECTURES
ASSIGNMENTS
COMPILER WARS

As scientists and engineers, we use compilers almost every day. Have you ever wondered what happens behind the scenes when you compile your code? Ever wondered about the exact meaning of a parse error? In this course, you will undertake the rewarding challenge of implementing a compiler! The skill set acquired during the semester will include several compiler-related tools and an understanding of the theory behind compilation. A significant part of the course consists of writing a compiler using the C programming language and software tools such as lex and yacc.

Course Announcements.

Course Topics.

Below is a rough course outline.

  • Structure of Compilers
  • Lexical Analysis (Scanning)
  • Syntactic Analysis (Parsing)
  • Parse Trees, and Abstract Syntax Trees
  • Semantic Analysis
  • Scoping
  • Symbol Tables
  • Type Checking
  • Activation Records
  • Intermediate Code
  • Instruction Selection
  • Dataflow Analysis
  • Register Allocation
  • Optimizations

Prereqs.

C or better in CS 333 and CS 340 (or consent of the instructor).

Required Text.

Modern Compiler Implementation in C, by Andrew Appel, ISBN 0-521-60765-5
IMPORTANT: When you get your book, be sure to apply the corrections listed on the book's website.