TENTATIVE daily schedule for CS 434

Date / Lecture topic / Readings and sample problems
Wed, Jan 9 / Introduction, the 6 phases of a compiler / Chapter 1
Fri, Jan 11 / Regular expressions for identifiers, number literals / Section 3.3
Mon, Jan 14 / Regular expressions for comments, string literals
Wed, Jan 16 / Regular expressions over alphabet {0,1} or {a,b,c}
Fri, Jan 18 / Deterministic and nondeterministic finite-state machines / Section 3.6
Mon, Jan 21 / King’s birthday – no class today!
Wed, Jan 23 / DFSM for identifiers, number literals, comments, string literals
Fri, Jan 25 / DFSM for languages over alphabet {0,1} or {a,b,c}
Mon, Jan 28 / Equivalence between regular expressions, DFSM, and NFSM / Section 3.7
Wed, Jan 30 / Exam 1 (regular expressions) / Problem 3.7 - Construct regular expressions. You may omit (g).
Fri, Feb 1 / Scanning, token recognition, attribute values, case sensitivity / Sections 3.1, 3.2
Mon, Feb 4 / Converting a DFSM to a scanner, constructing an ad hoc scanner / Section 3.4
Wed, Feb 6 / Implementing a scanner using the Lex/Flex utilities / Section 3.5
Fri, Feb 8 / Grammars for languages over alphabet {0,1} or {a,b,c}, parse trees, leftmost and rightmost derivations / Sections 4.2, 4.3
Mon, Feb 11 / Grammars for arithmetic expressions, ambiguity, precedence, associativity
Wed, Feb 13 / Exam 2 (finite-state machines) / Problems 3.3, 3.7 - Construct finite-state machines. You may omit (g).
Fri, Feb 15 / Grammars for if-if-else statements, more ambiguity
Mon, Feb 18 / More grammars, meta-notations such as BNF
Wed, Feb 20 / FIRST sets (grammar without -productions) / Sections 4.1, 4.4
Fri, Feb 22 / FIRST sets (grammar with -productions)
Mon, Feb 25 / FOLLOW sets (grammar without -productions)
Wed, Feb 27 / Exam 3 (grammars and parse trees) / Problems 4.1, 4.2, 4.3, 4.4, 4.5
Fri, Mar 1 / FOLLOW sets (grammar with -productions)
Mon, Mar 4 / LL(1) parse tables (grammar without -productions)
Wed, Mar 6 / LL(1) parse tables (grammar with -productions)
Fri, Mar 8 / Recursive descent or top-down parsing, finding a leftmost derivation, complete example using arithmetic expressions
Mon, Mar 11 / Shift-reduce or bottom-up parsing, handles, finding a rightmost derivation, example using arithmetic expressions / Section 4.5
Wed, Mar 13 / Exam 4 (recursive-descent and LL parsing) / Sample problems
Fri, Mar 15 / Augmented grammar, SLR(1) sets of items, closure and goto functions (grammar without -productions) / Section 4.7
Mon, Mar 18 / SLR(1) sets of items, closure and goto functions (grammar with -productions)
Wed, Mar 20 / SLR(1) parse tables (grammar without -productions)
Fri, Mar 22 / SLR(1) parse tables (grammar with -productions)
Mon, Mar 25 – Fri, Mar 29 / Spring break – no classes this week!
Mon, Apr 1 / More SLR(1) examples
Wed, Apr 3 / Exam 5 (shift-reduce and SLR parsing) / Problems 4.23, 4.34, 4.35(a), 4.37(a)
Fri, Apr 5 / Implementing a parser using the Yacc/Bison utilities / Section 4.9
Mon, Apr 8 / Using Yacc/Bison in conjunction with Lex/Flex
Wed, Apr 10 / Items with lookaheads, LR(1) sets of items, closure and goto functions (grammar without -productions) / Section 4.7 continued
Fri, Apr 12 / Honors Day – no class today!
Mon, Apr 15 / LR(1) sets of items, closure and goto functions (grammar with -productions)
Wed, Apr 17 / Exam 6 (implementing a scanner and parser, using the Lex/Flex and Yacc/Bison utilities) / Problems 3.10, 3.11, 4.50, 4.51
Fri, Apr 19 / LR(1) parse tables
Mon, Apr 22 / Converting LR(1) parse table to LALR(1) parse table
Wed, Apr 24 / Relationship between LL(1), SLR(1), LALR(1), and LR(1) grammars
Fri, Apr 26 / Relationship between regular, LL(1), SLR(1), LALR(1), LR(1), and context-free languages, review
Mon, Apr 29 / Project demonstrations – no class today!
Wed, May 1 / Project demonstrations – no class today!
Fri, May 3 / Project demonstrations – no class today!
Thur, May 9 at 8:00am to 10:30am / Final exam / Problems 4.35(b), 4.39, 4.40