CS 453: Introduction to Compilers (Spring 2008)

Syllabus for CS 453 (http://www.cs.colostate.edu/~cs453)

(Detailed class schedule at http://www.cs.colostate.edu/~cs453/schedule.html)

Check out some setup notes, if you are interested in learning about some of the software tools we will be using in this class.

Date and Time

Lecture: MWF 2:00-2:50, Engineering B4
Recitation: F 9:00-9:50, USC 310A


Dr. Michelle Strout (mstrout@cs.colostate.edu), Office hours: Monday 3-4pm, Lab hours: Wed 3-4pm

Teaching Assistant

Alan LaMielle () Lab hours: Mon 8-10pm, Thursday 10:45-noon.

Class Communication

Email: cs453-spring-2008@googlegroups.com, URL: http://groups.google.com/group/cs453-spring-2008

Course Description

This course is an introduction to compiler construction. Topics will include the following: scanning, parsing (top-down and bottom-up), abstract syntax trees, semantic analysis, and code generation.

Prerequisites for this course include an undergraduate automata theory class and an undergraduate compilers course or extensive Java programming experience.


Compilers: Principles, Techniques, & Tools, Second Edition by Aho, Lam, Sethi, and Ullman, Pearson Education, 2007.

Programming Assignments

In this course students get to implement an SVG interpreter for a small subset of SVG (scalable vector graphics) and a compiler for a subset of Java called MiniJava. All the programming in this class will be done with a partner and in Java. During the course of these significant programming assignments, we will work with many common data structures, implement algorithms, and practice the visitor design pattern. We will also learn about lexing, parsing, and semantic analysis and show how they bring automata theory to life.

There will be six programming assignments to be completed in pairs. The first programming assignment is a renderer for a small subset of SVG (scalable vector graphics) where you will be writing the lexer and parser by hand. The later assignments result in a compiler that compiles a subset of Java called MiniJava to MIPS assembly. For the MiniJava compiler we will be using the lexer-generator tool JLex and the parser-generator tool JavaCUP. The percentage breakdown for the programming assignments is 10%, 2%, 3%, 10%, 5%, and 10%.


The midterm exam is in class on March 12th. The final exam time is 11:20am-1:20pm on May 12th.

Students should study for the exams by fully understanding and practicing the suggested exercises and submitting small weekly homeworks. Feel free to email possible answers to the class mailing list to get feedback from other students, the TA, and the instructor.

Grades (will be posted at RamCT)

Programming Assignments: 40%, Final exam: 30%, Midterm exam: 20%, Homework assignments: 10%

Honesty Policy

Read and know the Computer Science Department Student Information Sheet at http://www.cs.colostate.edu/~info/student-info.html.
Michelle Strout
Last modified: February 7, 2008