January 15 (Tue), 2013 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 17 (Thu), 2013 HW1 assigned, due 1-24 (Tuesday): exercises 1.2, 1.4-1.6 textbook. Ch.1 [W]: levels of programming languages.
January 22 (Tue), 2013 Expressions vs. commands. The example of Heron's formula in (register-memory) assembly language vs. a block structured language such as ML (or Triangle!). 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. Examples of derivations and syntax trees (also called parse trees).
January 24 (Thu), 2013 HW1 collected. HW2 assigned, due 2-2 (Tuesday): exercises 2.2-2.6, 2.8, 2.9 textbook. Please be concise, especially on exercise 2.9, for which I do not expect a long design document. Chapter 2 (Language processors, including tombstone diagrams, bootstrapping, etc.) started; notes on bootstrapping based on Ch.13 of Mogensen's text.
January 29 (Tue), 2013 HW1 returned. Chapter 2 (Language processors, including tombstone diagrams, bootstrapping, etc.) completed. Chapter 3: (Overview of) Compilation started.
January 31 (Thu), 2013 HW2 collected. Chapter 3 completed. Chapter 4 (Syntactic Analysis) started, through section 4.2.2.
February 5 (Tue), 2013 Guest lecture by Dr. Stephen Fenner on lexical analysis: regular expressions, with examples, automata, lex.
February 7 (Thu), 2013 HW3: Exercise 2.3 [Mogensen], due on Thursday, February 14. Lexical analysis: a presentation that builds on Dr. Fenner's guest lecture and is based on Ch.2 of Mogensen's textbook. Coverage through definition 2.2.
February 12 (Tue), 2013 More on lexical analysis, through the subset construction algorithm, with a detailed example of construction of a DFA from an NFA.
February 14 (Thu), 2013 HW2 returned. HW3 collected. PR1 assigned, due on Tuesday, February 19: Find the Token class in the Lexical Analyzer for the Triangle compiler (linked to the course web site: see "Supplementary materials from the author" for Watt and Brown's textbook) and write down the names of the three member variables. Syntactic analysis: Ch.4. Tokens for mini-Triangle and their Java representation (Section 4.1.1). Extended BNF. Starters sets. Conceptual introduction to parsing. Bottom-up and top-down parsing, using micro-English as an example. Recursive descent parsing: micro-English. Recursive descent parsers. Recursive descent parsers: examples with mini-Triangle.
February 19 (Tue), 2013 Midterm (MT1) will be on February 26. HW4 assigned: exercises 4.1-4.4, 4.9, and 4.10, due on Tuesday, February 26. PR1 collected. HW3 returned. Correction of HW3. Minimization of the resulting automaton. More on recursive descent parsing.
February 21 (Thu), 2013 Midterm (MT1) will be on February 26. See web site for some hints. Construction of ASTs. More on lexical analysis. Chapter 4 [Watt] concluded. Axiomatic semantics and the method of loop invariants, with a simple example (not quite concluded).
February 26 (Tue), 2013 HW4 collected. MT1.
February 28 (Thu), 2013 MT1 corrected in class. Ch.5 [Watt] (contextual analysis) started.
March 5 (Tue), 2013 MT1 returned. Ch.5 [Watt] continued, through identification (including standard environment).
March 7 (Thu), 2013 Ch. 5 [Watt] (contextual analysis) completed, including AST traversal using a visitor.
March 19 (Tue), 2013 See web site for a description of the term project (PR2). Ch. 6 [Watt] (run-time organization) started, up to activation frames (activation records) and dynamic links to support flat structure.
March 21 (Thu), 2013 Ch. 6 [Watt] (run-time organization): static links, routine protocols, recursion.
March 26 (Tue), 2013 Video lecture on interpretation.
March 28 (Thu), 2013 Heap storage allocation. Memory management. Garbage collection.
April 2 (Tue), 2013 Some issues concerning the final project. (See web site.) Run-time organization for object-oriented languages.
April 4 (Tue), 2013 Some issues concerning the final project. (See web site.) Run-time organization for object-oriented languages: conclusion. Code generation (Ch.7 [W&B]): Code Selection (section 7.1), almost completed.
April 6 (Thu), 2013 Code generation: Code Selection completed, a Code Generation Algorithm (section 7.2) completed, Constants and Variables (section 7.3) completed, Procedures and Functions (section 7.4) started.
April 11 (Tue), 2013 Discussion of extra work required for graduate credit and for the Honors section of the course. See notes for today on the course website. Code generation completed.
April 16 (Tue), 2013 Project is due on April 24 (Wednesday). A departmental dropbox assignment will be created. Discussion of extra work required for graduate credit and for the Honors section of the course: students need to send me emails with topics, etc. The original LISP interpeter.
April 18 (Thu), 2013 The original LISP interpreter, completed.
April 23 (Tue), 2013 New project due date is Friday, April 26 (Friday) at midnight. A departmental dropbox has been set up. Student presentations (three): see presentation page on course website for details.
April 25 (Tue), 2013 Three student presentations. Brief survey of register allocation, based on Mogensen's Ch.9.