- Lecture 1

Course overview, Project 1 discussion - Lecture 2

Compilation example, from scanner to code generator

Symbol tables and scoping, block structure, Scanning - Lecture 3

Regular expressions and regular sets, examples

Finite automata - Lecture 4

Lex/Flex/Jlex

Jlex details, examples - Lecture 5

Other scanner issues

Lexical errors, error tokens

Translating regular expressions to finite automata - Lecture 6

Optimizing finite automata

Properties of regular expressions and finite automata

Context-free grammars - Lecture 7

Java CUP, examples

CFG analysis tools

Parsers vs recognizers

Top-down and bottom-up parsers - Lecture 8

Simple top-down parsing, LL(1) parsers

Recursive descent parse tables - Lecture 9

Making a grammar LL(1)

LL & LALR grammars

Grammar engineering

LL and LALR properties - Lecture 10

Type checking, symbol tables in CSX, forward references

Classes, structs and records

Overloading

Type and kind information - Lecture 11

CSX type checking examples - Lecture 12

Virtual memory and run-time memory organization

Stacks and frames

Static and dynamic links

Classes and objects

Displays

Heap management - Lecture 13

CSX code generation, JVM, Jasmin - Lecture 14

Jump code, short-circuit evaluation

for loops

CS 536 is a 3 credit course, which meets for one 150 minute lecture each week. In addition to this time spent in lecture, it is expected that students spend a minimum of 6 hours per week outside of class reading, completing programming assignments, and reviewing course topics and materials.