CSCE 531 (Spring 2024): Lecture Log

January 9 (Tue), 2024 Administrative information including: textbooks, syllabus, grading policy. A simple compiler for expressions in Haskell and proof of its correctness, through the presentation of the Expr recursive data type.

January 11 (Thu), 2024 HW1 assigned, due on 2024-01-23 in the departmental dropbox (details of submission to be announced later): Exercises 1-0, 1-1, 1-2 [R]. A simple compiler for expressions in Haskell and proof of its correctness, through the presentation of all of the code and the beginning of the correctness proof. The Panopto recording has no sound because of a technical issue; the Blackboard Collaborate Ultra recording has sound.

January 16 (Tue), 2024 A simple compiler for expressions in Haskell and proof of its correctness, completed, including the (more efficient) accumulator variant. Extensions: adding doubling of (sub-)expressions; adding multiplication of (sub-)expressions described, with code.

January 18 (Thu), 2024 Details of HW1 submission explained. Ch.1 [R] completed.

January 23 (Tue), 2024 HW2 assigned, due on 2024-01-30. This assignment is on extending the simple compiler (written in Haskell) shown in class in previous lectures. Details in the departmental dropbox. Language processors and bootstrapping (using slides "Lecture Notes for Chapter 2 [W]" linked to main course website) almost completed.

January 25 (Thu), 2024 HW3 assigned, due 2024-02-01: Exercises 13.1 and 13.2 [M10] due 2023-02-02. (See syllabus for link to [M10].) Bootstrapping completed. Conceptual overview of lexical and syntactic analysis; tokens. Regular expressions from Ch.1 [M], with examples, started.

January 30 (Tue), 2024 Regular expressions from Ch.1 [M], with examples.

February 2 (Thu), 2024 Lexer generators, with a detailed example of use of Alex.

February 6 (Tue), 2024 HW4 assigned, due 2024-02-15: Exercises 1.4, 1.6, 1.8, 1.9 [M]. Details (as usual) in the departmental dropbox. Regular expressions from Ch.1 [M], with examples. Construction of NFAs from regular expressions. DFAs: definition, intuition behind conversion of NFAs to DFAs. Epsilon-closure.

February 8 (Thu), 2024 NFA to DFA conversion. Set equations. Minimization. Ch.1 [M] almost completed.

February 13 (Tue), 2024 Exercise 1.3 done in class, in detail. Ch.1 [M] almost completed.

February 15 (Thu), 2024 Ch.1 [M] completed. Ch.2 [M] (Syntax Analysis) started.

February 20 (Tue), 2024 HW5 assigned: exercises 2.6 and 2.7 [M] due 2024-02-27. Details (as usual) in the departmental dropbox. The midterm exam will be on Thursday, 2024-02-29, as indicated in the syllabus. Ch.2 [M] continued. Context-free grammars, derivation, ambiguous grammars.

February 22 (Thu), 2024 Further discussion of how to build NFAs and, in particular, on dead states. Exercise 2.3 [M] done and discussed in class. More on ambiguous grammars. The if-then-else ambiguity. Brief treatment of precedence and associativity and how to represent them in context-free grammars.

February 27 (Tue), 2024 There will be no penalty for HW5 submissions turned in before class time today; the dropbox had an incorrect due time (2:50 am instead of 14:50. Brief discussion of Midterm exam content. The exam will take place on Thursday. The exam will be open book and notes; use of computers for accessing book and personal note only is permitted. Examples of ambiguous grammars and of how to replace them with unambiguaous grammars recognizing the same language. Ch.2 [M] through section 2.4 ("Other Sources of Ambiguity") completed. The Chomsky hierachy of grammars. Exam for the J56 (online section) will take place at the same time as for the in-class section. The exam will be placed in drobpox at approximately the start of class time.

February 29 (Thu), 2024 Midterm exam.

March 12 (Tue), 2024 (First class after spring break.) Review of Midterm Exam. Review of grammars and BNF, ambiguous grammars, precedence, associativity, the CLite grammar as an example. Top-down vs. bottom-up parsing: the Micro-English example.

March 14 (Thu), 2024 HW6 assigned, due on March 21, 2024. Top-down parsing, almost completed. NULLABLE, FIRST, and FOLLOW.

March 19 (Tue), 2024 Due date for HW6 assigned changed to March 26, 2024. Top-down parsing completed. Recursive descent and table driven LL(1) parsers, including ones that construct trees.

March 21 (Thu), 2024 HW7 assigned: exercise 2.19 [M], due on 2024-04-02. (Note: Date change!) Bottom up parsing. SLR parser construction. Ch.2 [M] almost completed.

March 26 (Tue), 2024 Due date for HW7 changed to 2024-04-02. Ch.2 [M] completed.

March 28 (Thu), 2024 Review of construction of SLR parser tables, with a detailed example form Jost Berthold's slides for [M]. Scope and Symbol Tables (Ch.3 [M]) up to the beginning of the first persistent (functional) implementation.

April 2 (Tue), 2024 Rubric (Basic Requirements) for graduate student presentations added to course website. Scope and Symbol Tables (Ch.3 [M]) completed. Interpretation (Ch.4 [M]) started. Ch.4 [M] presentation almost completed. (I expect to present iterative interpretation using other materials next time.)

April 4 (Thu), 2024 Iterative interpretation completed. Type chacking started, using the modern notation of Ch.4 [R].

April 9 (Tue), 2024 HW8 assigned: exercises 4.0 through 4.4 [R], due 0n 2024-04-16. Type checking (as explained in Ch.4 [R]) completed.

April 11 (Thu), 2024 The final exam will be a take-home exam; it will be due at the end of the scheduled final exam time. BNFC, with the Haskell example from ch.2 [R], with a brief demonstration. Intermediate Code Generation, through section 6.4 [M].

April 16 (Tue), 2024 HW9 assigned: exercises 6.1 and 6.2 [L] due at 23:55 on Monday, April 22. Ch.6 [M] completed. Ch.7 [M] (Machine Code Generation) completed.

April 18 (Thu), 2024 The take-home final exam is in the departmetal dropbox. Ch.8 [M]: Register Allocation (and Liveness Analysis) completed. Very brief discussion on how to handle functions in compilation, using the method of activations records on a stack, with return points in code memory, dynamic links to the previous AR, and static links to the AR of the closest statically enclosing AR. End of course.