CS453: Introduction to Compiler Construction

csu-logo
red-line
[Syllabus] [Grading] [Topics] [Assignments] [Home]

Syllabus

Spring 2020
CS453 Introduction to Compiler Construction teaches how to build a full compiler from scratch, for (a large subset of) the Java language down to MIPS assembly. Topics covered include grammars, parsers, intermediate representation construction, type checking/analysis, AST translation and lowering, register allocation, instruction scheduling, and ASM code generation.
CS453 is geared towards senior undergraduate students and also first-year graduate students who have not taken such an introductory course.

Course Objectives
By the end of the course, students should be able to

  1. Know the base concepts to build an entire compiler, including front-end, middle-end and back-end design
  2. Develop a full compiler from an object-oriented language (Java) down to ASM code generation (MIPS)
  3. Be autonomous in finding algorithms and tools to assist with the development of a compiler


Prerequisites
To understand the material in this course, you will need to have a good working knowledge of data structures such as linked lists, trees, dictionaries, and dynamically allocated structures. You will need to know how to implement these data structures in Java, C, and C++. To successfully complete this course, you should be familiar with material related to the above topics, which are covered in CS200 (Algorithms and Data Structures), CS253 (Problem Solving with C++), and CS314 (Software Development Methods). You will also need to have a good understanding of the memory model and the concept of calling conventions, which is covered in CS70 (Computer Organization) at CSU.


Instructor Lecture Coordinates
 

Louis-Noel Pouchet
Office: CSB 346, Computer Science Building
Office Hours:
TBD
E-mail: pouchet {AT} colostate.edu


Graduate Teaching Assistant Alexandre Dubois
Office Hours in CSB 120:
TBD
E-mail: Alexandre.Dubois {AT} colostate.edu

 

Lectures: 1:00-2:15pm Mondays and Wednesdays in CSB 425
Recitation: 11:00-11:50 am Wednesdays

 

Assignments

Compiler project
The main assignment for this class is to build a full compiler from Java to MIPS. It is split into 4 sub-assignments, each of which graded independently:
  1. Parsing and type checking
  2. Translation from Java AST to a lower-level intermediate representation
  3. Register allocation
  4. Translaton to MIPS

This compiler project must be developed in Java. We provide help and reminders about object-oriented programming and Java during the lectures and recitation as needed.


Late and Makeup Policy
Midterm and Finals: Make-up exams are only given for extraordinary circumstances (e.g., illness, family emergency). Students must consult with the instructor as soon as possible, preferably before the start of the exam. Course examination dates are listed on the schedule page; be aware of them and plan accordingly.

All assignments are due at 11:59 PM on the due date. Assignments will be posted at least two weeks in advance, the compiler project will be posted more than two months in advance. The deadlines are strictly enforced, no late submission will be accepted. If for exceptional circumstances as above you are unable to meet an assignment deadline, you must contact the instructor at least 24h before the deadline to discuss your specific situation.



Conduct
All students are expected to be familiar with the policies in the department's student information sheet available here.

This course will adhere to the CSU Academic Integrity Policy as found in the General Catalog and the Student Conduct Code. At a minimum, violations will result in a grading penalty in this course and a report to the Office of Conflict Resolution and Student Conduct Services.



 


Department of Computer Science, Colorado State University,
Fort Collins, CO 80523 USA
© 2019 Colorado State University