CSE 401 Winter 2013 - Introduction to Compiler Construction


  • Office hours have been posted! See below.
  • Welcome to 2013!
  • Links to previous iterations of this class are available here.

Course Information


Lectures: MWF 12:30-1:20, Electrical Engineering 045
Th 12:30 (AA) Mechanical Engineering Building (MEB) 238
Th 1:30 (AB) Electrical Engineering (EE) 037
Instructor: Michael ("Mike") Ringenburg, CSE 212, miker[at]cs. Office hours Wednesdays 2:30-3:30 in CSE 212; also available by appointment on most Tuesdays.
TAs: Laure Thompson (laurejt[at]cs) and Zach Stein(steinz[at]cs). Office hours: Mondays (except 1/21 and 2/18) 4:00-5:00, office CSE 218 (Laure); Fridays 1:30-2:30, CSE 218 (Zach).
Staff email list: cse401-staff[at]cs (use for all questions about course material/exams/homeworks)


Class discussion list
Class email list archives


Dropbox for assignment and project submission

Compiler Project: You are encouraged to look at this and download the starter files as soon as possible, to familiarize yourself with the project and ensure that the framework builds on your system.



Class Materials

Tentative schedule to be updated as the quarter progresses. Slides will be posted as they become available (typically the day of the class). Readings should be done before the associated class.

1. January 7: Course introduction & administrative. Slides
2. January 9: Intro continued; Introduction to parsing and scanning (intro). Read ch. 1, secs. 2.1-2.4. Slides
S1. January 10: no section
3. January 11: Scanning, continued Slides
4. January 14: Scanning, conclusion Slides
5. January 16: Intro to parsing. Read sec. 3.1-3.2. Slides
S2. January 17: Project, scanners and regular expressions. Slides
6. January 18: LR (bottom-up) parsing start. Read sec. 3.4. Slides
January 21: Holiday - No class.
7. Januray 23: LR parsing Slides
S3. January 24: GNFAs, Ambiguous Grammars, Shift-Reduce Parsing Slides
8. Januray 25: LR table construction. Read Sec. 3.5. Slides
9. January 28: LR conflicts, First/follow sets. Read FIRST/FOLLOW algorithm on pages 104-107 (2nd edition), or section 3.3.4 (1st edition) Slides
10. January 30: Parser generators (CUP), ASTs, and the visitor pattern. Slides
S4. January 31: CUP; Review ASTs and visitor pattern Slides
11. February 1: LL parsing & recursive descent. Slides
12. February 4: Intermediate Representatons (IRs). Read Sections 5.1-5.3. Slides
13. February 6: Semantics and type checking. Read Sections 4.1-4.2. Slides
S5. Febraury 7: No sections, extra office hours in 002
14. February 8: Attribute grammars. Read Section 4.3. Slides
15.February 11: Symbol tables and representation of types Slides
16. February 13: x86 overview Slides
S6. February 14: Midterm review Slides
17. February 15: Midterm in class
February 18: Holiday - No class.
18. February 20: Code shape I - basic constructs Slides
S7. February 21: Project 3 Info, x86 and Code Shape Review Slides
19. February 22: Code shape II - objects and dynamic dispatch Slides
20. February 25: x86-64 and codegen for the project I Slides
21. February 27: x86-64 and codegen for the project II Slides
S8. February 28: Project codegen Slides
22. March 1: Optimization Intro Slides
23. March 4: Optimization cont; Data flow Slides
24. March 6: Data flow cont; SSA form Slides
S9. March 7: gdb and Optimization Review Slides
25. March 8: Class cancelled
26. March 11: SSA form, continued Slides
27. March 13: Guest lecture: David Mizell on parsing in the real world (the uRiKA parser) Slides were emailed to class list
S10. March 14: No section
28. March 15: Guest lecture: Preston Briggs on register allocation Slides

March 21 (Thur): Final exam, 8:30-10:20 am, regular classroom.