January 14 (Tue), 2020 Administrative information: textbook, syllabus, grading policy. Beginning of course questionnaire, with discussion. Preliminaries: families of languages (imperative, functional, logic); PLs as algorithm description languages.
January 16 (Thu), 2013 Example of using a loop invariant to prove the correctness of a program fragment. Ch.1 [W]: levels of programming languages. Command, expression, declaration. Context-free grammars and BNF notation. Derivation. Sentence. Sentential form.
January 21 (Tue), 2020 Facilities that are present in HLLs but not (or barely) in machine or assembly languages: expressions, data types, control structures, declarations, abstraction, encapsulation (or data abstraction). Context-free grammars and Backus Normal Form (BNF, also called Backus-Naur Form). BNF grammar for the language mini-Triangle. Syntax trees (also called parse trees). Slides based on Ch.2 [W] (Language processors, including tombstone diagrams, bootstrapping, etc.). Note that Ch.13 of the 2010 edition of Mogesen's textbook is on bootstrapping; this older edition of [M] is available from the author at http://hjemmesider.diku.dk/~torbenm/Basics/basics_lulu2.pdf
January 23 (Thu), 2020 HW1 assigned: exercise 1.4 [M], due on Thursday, January 30. This is also exercise 2.3 in the free version of Torben Mogensen's textbook, which we refer to as [M10] and is linked to the Time Allocation Framework of the course website. Static and dynamic scope: slides 40-46 Ch.3[W]. Phases of the compilation process: slides 4-9 Ch.3[W] and section 1.4[R]. An example of compilation through the three main phases: slides 23-30 Ch.3[W]. Lexical analysis input and output: slides 7-8 Ch.4[W]. Lexical analysis details: regular expressions with examples: slides 1-11 CB13-1-Lexing.pdf; section 1.1 [M].
January 28 (Tue), 2020 Non-deterministic Finite-state Automata (NFAs). Definition and examples. Converting a regular expression to an NFA. Deterministic Finite-state Automata (DFAs). Converting an NFA to a DFA. (Sections 1.2-1.5 [M].)
January 30 (Thu), 2020 HW2 assigned: exercises 1.6, 1.8, 1.9 [M] (2.5, 2.7, 2.8 [M10]), due on Thursday, February 6. Note: you are not required to go through the NFA-to-DFA construction when solving exercises 1.8 and 1.9; please try to construct the DFAs directly. Exploiting the distributive property in the solution of set equations: using a worklist. Minimization of DFAs. Lexers. Properties of regular languages. CB13-1-Lexing.pdf slides completed; Ch.1 [M] completed.
February 4 (Tue), 2020 Project 1a (PR1a) assigned. HW1 solution discussed. Several examples of use of DFA minimization using algorithm 1.4 [M], including: the DFA resulting from exercise 1.4, the DFA of figure 1.9 [M], and exercise 1.7 [M]. Syntax analysis (Ch.2 [M]) started, using slides 16-18 from Cosmin Oancea's set "An Intutitive View of Lexical and Syntax Analysis."
February 6 (Thu), 2020 Syntax analysis (Ch.2 [M]): slides from Cosmin Oancea's set completed. Ambiguous grammars, precedence, associativity, and the complete CF (in EBNF) grammar of the simple programming language CLite (described in: Allen Tucker and Robert Noonan. _Programming Languages: Principles and Paradigms_, 2nd ed. McGraw-Hill, 2007.), using the slides in 330Syntax.pptx.
February 11 (Tue), 2020 HW3 assigned: exercises 2.6 and 2.7 [M], due on Tuesday, February 18. Top-down and bottom-up parsers: the micro-English example from ch.4 [W]. Constructing a top-down recursive descent parser for mini-Triangle, from ch.4 [W]. Slides by Jost Berthold to accompany ch. 2 [M] through the computation of NULLABLE sets using set equations.
February 13 (Thu), 2020 Project 1b (PR1c) assigned, due on Thursday, February 20. LL(1) parsing: an (almost) full example based on Grammars 2.4 and 2.9. Recursive descent and table-driven LL(1) parsers.
February 18 (Tue), 2020 The midterm exam will be on either March 3 or March 5. SLR grammars: Sections 2.13 and 2.14 (partly) [M] with examples.
February 20 (Thu), 2020 Project 1c (PR1c) assigned, due on Thursday, February 27. HW4 assigned: Exercises 2.14 and 2.19 [M], due on Thursday, February 27. For exercise 2.19 part (c), show all steps and, in partocular, draw the NFA for all productions, the NFA with epsilon-transitions, and the DFA obtained by converting the NFA with epsilon-transitions.` Correction of HW3. bnfc with Haskell and the grammar of section 2.10.
February 25 (Tue), 2020 Discussion of updates of PR1c. Exercise 2.14 parts (a) and (b). Please use the grammar shown in class in parts (c) and (d) when completing HW4. Type checking: slides from [W] (chapter 5: slides 1-22), with an emphasis on attribute grammars. Slides 9-11 from Cosmin Oancea's set to support Chapter 5 ("Type Checking") [M].
February 27 (Thu), 2020 The midterm exam will be on Tuesday, March 3. It will cover the material presented through the lecture of February 20. Both textbooks ([M], [R]) are allowed. If students do not have the books, they can bring photocopies of the first two chapters "Lexical Analysis" and "Syntax Analysis" of [M], Appendix A ("Set Notations and Concepts") of [M], and the first two chapters ("Compilation Phases" and "Grammars") of [R]. Type checking: presentation based on ch.4 [R], up to the middle of Section 4.9.
March 3 (Tue), 2020 MIdterm.
March 3 (Tue), 2020 Correction of midterm.
March 24 (Tue), 2020 First class meeting after extended spring break. Classes will be conducted online using Blackboard Collaborated Ultra from today. PR2a assigned, due 2020-03-31. Symbol tables (ch.3 [M]). Items 1-7, 10-11 in the agenda were covered.
March 26 (Thu), 2020 HW5 assigned: Exercises 4.0-4.4 [R], due 2020-04-02. Type checking as presented in Ch.4 [R] through section 4.8, with a detailed example of a proof tree. Starting next Monday, the instructor will have virtual office hours on Blackboard Collaborate Ultra at the usual time for office hours. Items 1-7, 8 through section 4.8 [R], 9, 10, and 12 in the agenda were covered.
March 31 (Tue), 2020 HW6 assigned: Exercise 5.0 [R], due 2020-04-09. PR2b assigned, due 2020-04-14. Starting tomorrow (Wednesday), the instructor will have virtual office hours on Blackboard Collaborate Ultra at the usual time for office hours. Ch.4 [R] was completed. Here is the agenda for the day; we did not do items 9 and 10.
April 2 (Thu), 2020 Ch.4 [M] (Interpretation) in full. Some comments on iterative interpretation. Ch.5 [R] (Interpreters) through section 5.2. Q&A on HW5. Here is the agenda for the day.
April 7 (Tue), 2020 HW7 will consist of exercises 6.1, 6.2, and 6.3 [M]. It is likely to be due in one week. Ch.5 [R] (Interpreters) through section 5.2. Solution for HW5 after the end of class, on recorded lecture. Here is the agenda for the day; we did not do items 10 and 12.
April 9 (Thu), 2020 HW7 assigned: exercises 6.1, 6.2, and 6.3 [M], due on April 16, 2020. Ch.6 [M] (Intermediate Code Generation) in full. Here is the agenda for the day; we did not do item 10.
April 14 (Tue), 2020 PR2b due date moved to April 21, 2020. Update of 2020-04-20: moved to April 23, 2020. Discussion of changes to the syllabus. Ch.7 [M] (Machine Code Generation) in full. Ch.8 [M] (Register Allocation (and Liveness Analysis)) started. Here is the agenda for the day.
April 16 (Thu), 2020 Ch.8 [M] (Register Allocation (and Liveness Analysis)) completed. Here is the agenda for the day. Please note item 10 in the agenda.
April 21 (Tue), 2020 PR2b due date moved to April 23, 2020. Functions (Ch. 9 [M]). Presentation based on Sections 6.2-6.5 [W] and on figures from: Ghezzi, Carlo and Mehdi Jazayeri. _Programming Language Concepts_, 3rd ed. Wiley, 1998. Examples of function execution in machine-like language using the Simplesem simulator. Here is the agenda for the day, with some slight edits.
April 23 (Thu), 2020 Discussion of preliminary version of the final exam. This version may be modified by adding some questions; a new question on functions is likely. The questions already on the preliminary version are almost certainly going to remain. Q&A on PR2b submission. Review of liveness analysis and graph coloring algorithm from [M], Ch.8. Overview of Ch.6 [R] on Code Generation, using the author's slides. Students are reminded of the importance of course evaluations, which are done online using a survey tool in Blackboard. End of course. Here is the agenda for the day, with some edits.