January 12 (Tue), 2021 Administrative information including: textbooks, syllabus, grading policy. Course plan. A simple compiler for expressions in Haskell and proof of its correctness. All items in the agenda were covered, except for the last part of the proof of correctness (the distributivity property).
January 14 (Thu), 2021 A simple compiler for expressions in Haskell and proof of its correctness, completed. All items in the agenda were covered, except items 8 and 9. Note that HW1 was not assigned. It will be assigned later.
January 19 (Tue), 2021 HW1 assigned, due 2021-01-26: Exercises 13.1 and 13.2 [M10]. (See syllabus for link to [M10].) Language processors and bootstrapping (using slides "Lecture Notes for Chapter 2 [W] linked to main course website.) Items 1-6, most of item 7, 9-10 in the agenda were covered.
January 21 (Thu), 2021 Bootstrapping, completed. Compilation phases (using slides for Ch.1 [R]), almost completed. All items the agenda were covered, except for part of 9.
January 26 (Tue), 2021 Bootstrapping, completed. Compilation phases (using slides for Ch.1 [R]) completed. Additional presentation on the phases of compilation, using the mini-Triangle programming language as an example. All items the agenda were covered, except for 9.
January 28 (Thu), 2021 Correction of HW1, with discussion. Regular expressions. All items in the agenda were covered.
February 2 (Tue), 2021 HW3 assigned: exercise 1.4 [M], due on Thursday, February 11. Derivation of languages from regular expressions, algebraic properties of regular expressions. Examples of regular expressions: exercises 1.1 and 1.2 [M], done in class. Example of development of a simple scanner (lexical analyzer) using Alex. The items in the agenda were covered; item 8 was covered only in small part.
February 4 (Thu), 2021 The items in the agenda were covered; item 8 was not completed.
February 9 (Tue), 2021 Minimization of DFAs with detailed example. The items in the agenda were covered.
February 11 (Thu), 2021 HW4 assigned: Exercises 1.6, 1.8, and 1.9 [M]; see agenda for details. Dead states and partial move functions in DFAs. Detailed example. Lexers and lexer generators. Ch.1 [M] completed. The items in the agenda were covered.
February 16 (Tue), 2021 Review of HW3. Syntax Analysis started (following Ch.2 [M]). The items in the agenda were covered.
February 18 (Thu), 2021 Syntax analysis continued. The items in the agenda were covered; item 8 only in part.
February 23 (Tue), 2021 HW5 assigned, due on Thursday, 2021-03-04. Syntax analysis, continued. The items in the agenda were covered.
March 2 (Tue), 2021 HW5 due date changed to Tuesday, 2021-03-09. Syntax analysis, continued: FOLLOW sets, LL(1) parsing. The items in the agenda were covered.
March 4 (Thu), 2021 Midterm date changed to Tuesday, March 16. Syntax analysis: a detailed example of computation of Nullable, FIRST, and FOLLOW; SLR parsing, started. The items in the agenda were covered.
March 9 (Tue), 2021 HW6 assigned: Exercise 2.19 [M], due on Thursday, 2021-03-18. The items in the agenda were covered.
March 11 (Thu), 2021 The midterm is confirmed for Tuesday, March 16. The exam will be on dropbox at class time. Students will have 75 minutes to complete it. They will be allowed to turn their work in by 2355 on the same day. Only the textbooks, materials on the main course website, and personal notes can be used. The items in the agenda were covered.
March 16 (Tue), 2021 Midterm exam. Agenda.
March 18 (Thu), 2021 Due date for HW6 changed to 2021-03-19 (Friday) at 23:55. Scopes and Symbol Tables (Ch.3 [M])._ Interpretation (Ch.4 [M]) started. The items in the agenda were covered.
March 23 (Tue), 2021 Interpretation, ctd. Type checking started. The items in the agenda were covered.
March 25 (Tue), 2021 HW7 assigned, due 2021-04-06: Exercises 4.0, 4.1, 4.2, 4.3, 4.4 [R]. For exercise 4.3, replace the beginning of the question with: "Using the pseudocode for this section, write the chec functions for while statements, etc." Type checking, following the presentation in Ch.4 [R], through section 4.11. The items in the agenda were covered.
April 1 (Thu), 2021 Type checking, following the presentation in Ch.4 [R] and notes based on Ch.5 [W] for the visitor pattern in Java. Brief example of use of the parser generator Happy, part of the Haskell platform. The items in the agenda were covered.
April 6 (Tue), 2021 HW8 assigned: exercises 6.1, 6.2, 6.3 [M], due 2021-04-13. Intermediate code generation, through section 6.5 [M]. The items in the agenda were covered.
April 8 (Thu), 2021 PR1 assigned, due 2021-04-15. See main web site under "Homework and Projects." Intermediate code generation completed (Ch.6 [M]). Machine code generation started (Ch.7 [M]). The items in the agenda were covered.
April 13 (Tue), 2021 The extra work for graduate students is due on 2021-04-26. Machine code generation (Ch.7 [M]). Register allocation (Ch.8 [M]) started. The items in the agenda were covered.
April 15 (Thu), 2021 Register allocation (Ch.8 [M]), almost completed. The items in the agenda were covered.
April 20 (Tue), 2021 The final exam will be a take-home exam. Register allocation completed. Functions (Ch.9 [M]) started. The SimpleSem abstract semantic processor described and used for a demonstration of use of activation records (frames) on a stack. The items in the agenda were covered.
April 22 (Thu), 2021 Final exam read and briefly discussed. The exam is in a departmental dropbox entry. It is due on 2021-05-04 at 1830 via dropbox. The extra work for graduate students is due on 2021-04-26, also via dropbox. Functions (Ch.9 [M]); figures from Ch.2 of Ghezzi and Jazayeri's _Programming Language Concepts_, 3rd edition, SimpleSem code (same source, Java code on main course website), parts of Ch.6 [W] also used. Examples of optimization, beyond register allocation (Ch.10 [M]). The items in the agenda were covered. End of course.