Lectures


I have not ordered a book for this class.  The reason is that my lecture notes are now almost complete enough to constitute a book.  I have received feedback from prior classes that indicated that the book was of little extra help, so I thought I would save you the money.  If you would like extra learning resources, there are many options available.  I have put some books on reserve in the library.  You can also often find relevant information on the Internet.  If you feel more comfortable with a book in hand, you can even order one online (I think that the Fischer/LeBlanc book is probably the best for this class, although it may now be out of print).  The textbooks on reserve are listed on our resources page.

The lectures below are indicative of the way the class will proceed.  They will be updated as we move along.

Wednesday, January 15.  Introduction to CS 450 and the compiling process
Friday, January 16. Overview of compiling
Monday, January 19.  Martin Luther King Holiday
Wednesday, January 21.  The stages and organization of a compiler.
Friday, January 23:  Tokens, scanning, and initial scanner design
Monday, January 26.  Implementing the scanner in a programming language
Wednesday, January 28.  Odds and ends of scanning
Friday, January 30.  More odds and ends of scanning
Monday, February 2.  Error handling and automatic scanner generation
Wednesday, February 4.  A first look at parsing.
Friday, February 6.  EBNF, CFGs, and grammars for parsing
Monday, February 9.  Top down, deterministic parsing and LL(k) grammars
Wednesday, February 11.  A second example of LL(1) parsing and a first look at an LL(1) table.
Friday, February 13.  Parsing without the entire tree.
Monday, February 16.  Presidents Day Holiday
Wednesday, February 18 Catch Up
Friday, February 20 Exam 1
Monday, February 23.  Follow and Predict Sets
Wednesday, February 25.  Alternative parsing strategies and resolving LL table conflicts
Friday, February 27.  Dealing with conflicts in the LL(1) table
Monday, March 1.  Introduction to symbol tables
Wednesday, March 3.  Symbol table construction overview
Friday, March 5.  Actions for creating symbol tables and an alternative for symbol table construction
Monday, March 8.  Modifying the parser to include actions for constructing a symbol table
Wednesday, March 10.  Parser error handling and recovery
Friday, March 12. Run time storage
Monday, March 22.  Run time storage revisited
Wednesday, March 24.  Translating assignment statements
Friday, March 26. Translating expressions
Monday, March 29. Translating if statements
Wednesday, March 31. Translating if and case statements
Friday, April 2.  Translating case and for statements
Monday, April 5. Translating procedures and functions
Wednesday, April 7. Translating procedures and functions
Friday, April 9.  University Day Holiday
Monday, April 12.  Example translations from a production compiler
Wednesday, April 14.  Translating procedures and functions
Friday, April 16.  Translating functions
Monday, April 19.  Parameters and arrays
Wednesday, April 21.  Arrays, and loop optimizations
Friday, April 23.  optimization
Monday, April 26  compiling new features
Wednesday, April 28 LR parsing