August 27 (Mon), 2001 Introduction to the Course: Goals and Topics to Be Covered. Questionnaire. Prerequisites form (Ghezzi and Jazayeri, parts of Ch.1)
August 30 (Wed), 2001 Influences on PL design: computer architecture; programming methodologies. Families of programming languages. Historical overview. (G&J, Ch.1)
September 5 (Wed), 2001 Program design methods: waterfall (sequential), RUDE (Run Understand Debug Edit), spiral (prototypes). Interpretation, Compilation, Hybrid Compilation. Syntax and Semantics (ch.2): form vs. function. Alphabets, terminal and non-terminal symbols (V_T, V_N), lexical vs. syntactic analysis for PLs.
September 10 (Mon), 2001 Quiz 2. HW1 collected. HW2 assigned. Syntax, semantics, and contextual constraints (a.k.a. static semantics). Chomsky's language hierarchy (type 0 to type 3), grammars, and machines (automata, as recognizers). BNF as a formalism for context-free grammars. Derivations, sentential forms, sentences. Examples. Parse trees (a.k.a. syntax trees). Examples. Ambiguous grammars. Example.
September 12 (Wed), 2001 Quiz 3. HW3 assigned. (Note: HW2 and HW3 are both due on Monday, September 17.) More (E)BNF examples: the grammar of Figure 2.1 in textbook. That grammar is ambiguous. (Example of two parse trees for the same expression.) Instructions may be: commands, expressions, declarations. Denotational semantics (handout based on the second edition of the textbook).
September 17 (Mon), 2001 Quiz 4. HW2 and HW3 collected. Axiomatic semantics. Example of definition and use of a loop invariant.
September 19 (Wed), 2001 More on loop invariants. Introduction to Simplesem.
September 24 (Mon), 2001 PR1 assigned: run simplesem on the Suns. Variables: name, scope, type, lifetime, l-value, r-value. Binding occurrences (declarations) and applied occurrences. Blocks: flat (Fortran, C, C++, Java) and arbitrarily nested (Algol 60, Pascal). Intro to run-time organization of FORTRAN (using Simplesem). Static scope.
September 26 (Wed), 2001 HW2 and HW3 returned. PR1 amended: new statement handed out. Introduction to run-time structure of static languages, stack-based languages, dynamic languages. Simplesem implementation models of static languages: C1 and C2. (Text, up to section 2.7.2, except the discussion on C2'.) Brief presentation of FORTRAN IV example.
October 1 (Mon), 2001 MT1
October 3 (Wed), 2001 Correction of MT1. Review of C2; C2'.
October 8 (Mon), 2001 HW4 assigned: exercises 19, 22, and 24 in Ch.2 of GJ. C3.
October 10 (Wed), 2001 C3 examples, intro to C4, C4'
October 19 (Wed), 2001 C4', C4''. HW4 us now due on Monday, October 22.
October 22 (Mon), 2001 HW4 collected. Simplesem examples, with projectors. Good interaction. C4'' completed.
October 26 (Wed), 2001 HW5 assigned: due Monday, October 29. PR2 assigned: due Wednesday, October 31. C5: C5', C5''. Simplesem semantics of procedure call: value-result and reference.
October 29 (Mon), 2001 HW5 amended handed out. It will be collected on Wednesday. Midterm will be on Wednesday, November 7. Chapter 2 completed. Review of characteristics of imperative languages: variables as abstractions of memory cells, destructive assignment, iteration. Introduction to functional programming: data (atoms and lists or sequences), primitive functions, functional forms or higher-order functions, with some examples from LISP, ML, and FP. FP summary sheet from Dr. Carter Bays handed out.
October 31 (Wed), 2001 HW5 collected. PR2 was also due today. PR3 assigned: two fp functions. Review of HW4 (as requested). Good Q&A. Backus tape: first 20 minutes.
November 5 (Mon), 2001 PR3 was due today. Brief review of topics for midterm 2, which will be "closed book," except for the FP summary sheet. Backus tape completed.
November 7 (Wed), 2001 Midterm 2.
November 12 (Mon), 2001 Midterm 2 returned. Correction in class. HW6 collected. Intro to ML. (Some demostrations with SML-NJ using laptop and fixed projector.)
November 14 (Wed), 2001 Quiz 5. PR4 assigned (exercises 2.1.1, 3.1.1, 3.1.2, 3.2.1(a), 3.2.1(d), due Monday, November 26. HW7 assigned: exercises 2.1.2, 2.2.2, 2.4.1, 2.4.3, 2.4.4, 2.4.5, due Monday, November 26. Ch.2 [Ullman] completed: getting started in ML.
November 19 (Mon), 2001 HW8 assigned: read paper by Paul Graham and answer a few questions about it. Ch.3 [Ullman] completed: basics of functions.
November 26 (Mon), 2001 Quiz 6. HW7 and HW8 collected. PR4 collected. Several examples of ML functions. Patterns. Naive (list) reverse. Implementation of append using cons. Complexity of naive reverse.
November 28 (Wed), 2001 Quiz 7. McCarthy's eval.
December 3 (Mon), 2001 Quiz 8. PR 6 (Prolog). Ariane paper handed out. eval concluded. Accumulators, difference lists, fast reverse.