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 TimeLecture: MWF 2:00-2:50, Engineering B4
Recitation: F 9:00-9:50, USC 310A
InstructorDr. Michelle Strout (email@example.com), Office hours: Monday 3-4pm, Lab hours: Wed 3-4pm
Teaching AssistantAlan LaMielle () Lab hours: Mon 8-10pm, Thursday 10:45-noon.
Class CommunicationEmail: firstname.lastname@example.org, URL: http://groups.google.com/group/cs453-spring-2008
Course DescriptionThis 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.
TextbookCompilers: Principles, Techniques, & Tools, Second Edition by Aho, Lam, Sethi, and Ullman, Pearson Education, 2007.
Programming AssignmentsIn 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%.
ExamsThe 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 PolicyRead and know the Computer Science Department Student Information Sheet at http://www.cs.colostate.edu/~info/student-info.html.