January 11 (Tue), 2022 Administrative information including: textbooks, syllabus, grading policy. Course plan. Introduction, through imperative and functional languages.
January 13 (Thu), 2022 A simple compiler for expressions in Haskell and proof of its correctness, through the presentation of all of the code.
January 18 (Tue), 2022 A simple compiler for expressions in Haskell and proof of its correctness, completed; accumulator variant started.
January 20 (Thu), 2022 A simple compiler for expressions in Haskell and proof of its correctness, completed; accumulator variant completed.
January 25 (Tue), 2022 HW1 assigned, due 2022-02-01: 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).
January 27 (Thu), 2022 Language processors and bootstrapping (using slides "Lecture Notes for Chapter 2 [W]" linked to main course website) completed. Ch.1 [R]: Compilation Phases.
February 1 (Tue), 2022 HW2 assigned: exercises 1.0, 1.1, 1.2 [R] due 2022-02-08. 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.
February 3 (Thu), 2022 Discussion of HW1 solution. Additional presentation on the phases of compilation, using the mini-Triangle programming language as an example. Some issues: statically vs. dynamically scoped languages. (Slides from ch.3 [W] available on course website.)
February 8 (Tue), 2022 PR1 assigned, due 2022-02-22. Use of BNFC from Ch.2 [R], through section 2.5.
February 10 (Thu), 2022 Use of BNFC from Ch.2 [R], through section 2.9.
February 15 (Tue), 2022 Use of BNFC from Ch.2 [R], completed. Regular expressions from Ch.1 [M], started.
February 17 (Thu), 2022 HW3 assigned: Exercise 1.4 [M], due 2022-03-01. Regular expressions with examples. Definition of NFAs. Construction of NFAs from regular expressions.
February 22 (Tue), 2022 HW3 due date changed. Set equations: Monotonicity and distributivity of set functions; fixpoints. Epsilon-closure. Conversion of NFAs to DFAs (the subset construction algorithm).
February 24 (Thu), 2022 HW4 assigned: exercises 1.6, 1.8, 1.9 [M], due on 2022-03-03 (Thursday, one week from today); read the comments in dropbox before starting. Conversion of NFAs to DFAs (the subset construction algorithm). Minimization of DFAs. Lexers. Properties of regular languages.
March 1 (Tue), 2022 Example of development of a simple scanner (lexical analyzer) using Alex. Top=down vs. bottom-up parsing: example using the micro-English grammar, using slides 23-28 of the set covering ch.4 [W]. Parsing, from ch.2 [M], started.
March 3 (Thu), 2022 HW5 assigned: exercises 2.6, 2.7, 2.14 [M], due on 2022-03-15 (Tuesday). (Due date was later changed to Thursday, 2022-03-17). Note: you will have to do some studying and learning on your own to complete exercises 2.7 and 2.14. The midterm exam (MT1) will be on 2022-03-22 (Tuesday). Review of exercise 1.4 [M], with example of minimization. Parsing, through section 2.7 [M].
March 15 (Tue), 2022 First meeting after spring break. Midterm date confirmed (see above). Examples of ambiguous grammars. NULLABLE, FIRST, and FOLLOW. Predictive (LL(1)) parsing, almost completed.
March 17 (Thu), 2022 Midterm date confirmed (see above). Review of the three exercises in HW5. On an exceptional basis, there will be no 10% penalty for submissions through next Tuesday before class. Predictive (LL(1)) parsing, completed.
March 22 (Tue), 2022 Midterm Exam.
March 24 (Thu), 2022 Correction of MT, with special emphasis on the third question. SLR (bottom-up, shift-reduce) parsing, started.
March 29 (Tue), 2022 SLR (bottom-up, shift-reduce) parsing, through p.80 (just before conflicts), with an additional detailed example of DFA construction.
March 31 (Thu), 2022 HW6 assigned: Ex. 2.19 [M], due 2022-04-07. SLR parsing completed. Ch.2 [M] completed.
April 5 (Tue), 2022 A brief example of use of the Happy parser generator. Scopes and Symbol Tables (ch.3 [M]). Interpretation (ch.4 [M]), started.
April 7 (Thu), 2022 Discussion of HW6, in detail; several questions were answered. Interpretation (ch.4 [M]), continued.
April 12 (Tue), 2022 HW7 assigned: Exercises 4.0, 4.1, 4.2, 4.3, 4.4 [R]. Interpretation (ch.4 [M]) completed, with some additional examples of interpreters in the slides. More information on the work for graduate student is available in dropbox. The choice of extra work needs to be submitted on dropbox by Friday, April 15, at midnight.
April 14 (Tue), 2022 The final exam will be a take home exam. This email message was sent to all students after class: "As announced in today's class, the final exam will be a take-home exam. The exam will be posted in the departmental dropbox, and you will submit your answer there, in the same way as for homework. Further details will be announced in later classes and/or via email at a later date." Type checking completed, using both Ch.5 [M] and Ch.4 [R].
April 19 (Tue), 2022 Review of type checking with more examples related to HW7.
April 21 (Tue), 2022 Reminder: The final exam will be a take-home exam. The exam will be posted in the departmental dropbox, and you will submit your answer there, in the same way as for homework. The exam will be comprehesive, open book and notes. It will likely be posted on Saturday, April 23, and due on Friday, April 29. Intermediate-Code Generation (Ch.6 [J]). Machine-Code Generation (Ch.7 [J]). Those topics were covered using slides modified from ones by Cosmin Oancea, and available on the course website. End of course.