Computer Science Department

Compilers

CS 431 - Fall 2009

grades

Tentative schedule


Date Topic Handouts
1. 9/9/09 Overview of the compilation process slides 1-11
syllabus
Linux basics
vnc.pdf
Assignment 1
2. 9/11/09 Discussion of the first assignment: Building an interpreter in Java slides 12-22
3. 9/14/09 Lexical analysis: DFA's slides 23-26
Bantam Java home page
Manual for the extended language (V1.3)
Compiler API
4. 9/15/09 Lexical analysis: regular expressions slides 27-33
5. 9/16/09 Lexer generator: JavaCC slides 34-45
Assignment 2
Javacc project home page
6. 9/21/09 Context-free grammars; recursive-descent parsing slides 46-59
7. 9/22/09 Table-based predictive parsing; left-factoring; eliminating left-recursion slides 60-69
8. 9/23/09 Computing FIRST sets slides 70-74
9. 9/28/09 Computing FOLLOW sets; building the parsing table slides 75-82
10. 9/29/09 LL(k) grammars; Parser generator: JavaCC slides 83-94
Assignment 3
11. 9/30/09 Introduction to bottom-up parsing slides 95-101
12. 10/5/09 LR parsing algorithm; ACTION and GOTO tables; LALR(1) parser generator: yacc slides 102-113
Nice overview of lex and yacc
13. 10/6/09 Syntax-directed translation; Parse trees Slides 114-117
14. 10/7/09 Building abstract syntax trees using syntax-directed translation; The Visitor pattern Slides 118-132
15. 10/12/09 Doing syntax-directed translation with JavaCC Slides 133-143
16. 10/13/09 Syntax versus semantics; Static semantic analysis; scoping rules Slides 144-156
17. 10/14/09 Scoping rules; Symbol table implementations Slides 157-173
18. 10/19/09 Managing environments for Bantam Java Slides 174-184
Assignment 4
19. 10/20/09 Type checking Bantam Java Slides 185-200
20. 10/21/09 Overview of Java's architecture and of the JVM Slides 201-205
21. 10/26/09 The JVM: the execution engine and runtime data areas Slides 206-213
The JavaTM Virtual Machine Specification, Second Edition
artima.com
22. 10/27/09 Midterm exam
23. 10/28/09 Discussion of midterm exam
24. 11/2/09 The JVM: instruction set JVMViewer
Slides 214-221
25. 11/3/09 The JVM: Scoping rules, stack frame size, and optimizations Slides 222-230
26. 11/4/09 The JVM: Manipulating objects and fields Slides 231-235
Assignment 5
27. 11/9/09 The JVM: Casting examples Slides 236-237
28. 11/10/09 The JVM: Type descriptors; branching; method invocation and return Slides 238-249
29. 11/11/09 The JVM: Constructors; dynamic versus static binding Slides 250-254
30. 11/16/09 The JVM: Super calls; Array manipulations Slides 255-263
31. 11/17/09 Generating bytecodes for Bantam Java programs; Jasmin Slides 264-275
Jasmin home page
32. 11/18/09 Overview of optimization techniques Slides 276-2??
33. 11/23/09 A few more structural optimizations
Control-flow graph and motivation for liveness analysis

34. 11/24/09 Iterative solution to the dataflow equations
Thanksgiving
35.
Static versus dynamic liveness
36.
Interference graphs; Graph coloring
37.
The SIMPLIFY-SPILL-SELECT algorithm for register allocation
38.
Discussion and wrap-up of the code-generation assignment
39.
Optimal register allocation for tree expressions
40.
Wrap-up of the Sethi-Ullman register allocation algorithm
41.
Final exam