January 13 (Tue), 2004 Questionnaire, with discussion; syllabus, reasons for studying Concepts of PLs. Programming methodologies: waterfall, RUDE, spiral. (Ghezzi and Jazayeri, parts of Ch.1)
January 15 (Thu), 2004 Quiz 1. HW1 assigned, due Thursday, January 22. Programming languages as a component of the software development process. Influence of program development process on PL design. Example: Separation of concerns, information hiding, divide and conquer, abstraction, OOP. Influence of hardware on PL design: the von Neumann architecture: destructive assignment and loss of referential transparency, sequential execution, iteration as the preferred means of repetition (over recursion).
January 20 (Tue), 2004 More on architecture, e.g.: Lambda machines and the Symbolics; Mago's machine; FGCS project and the PIM. Pure compilation.
January 22 (Thu), 2004 Quiz 2. HW2 assigned, due Thursday, January 29. Interpretation, hybrid translation, intermediate code, with examples. Genealogy of PLs. Syntax and semantics: introduction.
January 27 (Tue), 2004 BNF, with examples. Derivation, parse (syntax) trees, ambiguous grammars.
January 29 (Thu), 2004 Quiz 3. More on BNF, EBNF, Syntax diagrams, with examples from ML and Pascal.
February 3 (Tue), 2004 Static semantics (type and scope checking), attribute grammars, with an example. Semantic distinction between command (statement) and expression. Denotational semantics: basics.
February 5 (Thu), 2004 Quiz 4. Denotational semantics.
February 10 (Tue), 2004 Quiz 5. HW3 assigned: exercises 2.9.1 and 2.9.2 due Thursday, February 14. Denotational semantics: conclusion and example, in detail.
February 12 (Thu), 2004 Quiz 6. HW3 collected. HW1 returned. Midterm will be on Tuesday, February 17. Sample midterm posted on the web site. Axiomatic semantics, with an example: a program to sum the integers from 0 to n-1. Various issues from ch.2: the concept of binding, static and dynamic scope, variables, aliasing, overloading, declaration and definition of routines.
February 17 (Tue), 2004 MT1.
February 19 (Thu), 2004 MT1 post-mortem. Introduction to operational semantics and the Simplesem abstract processor.
February 24 (Tue), 2004 Q7. HW2 and HW3 returned. More on Simplesem. The first static language: C1. Example: Euclid's algorithm.
February 26 (Thu), 2004 More on C1, C2 (routines), C2' (separate compilation). Fortran (Pre-Fortran IV) example.
March 2 (Tue), 2004 PR1 assigned (Simplesem). Dynamic languages: C3. Stack-based memory management; dynamic links.
March 4 (Thu), 2004 More on C3, with example (factorial program).
March 16 (Tue), 2004 PR1 collected. Block structure: introduction. C4': compound statements. Overlays. Introduction to C4''.
March 18 (Thu), 2004 C4'': nested routines. Static links.
March 23 (Tue), 2004 Towards dynamic behavior: dynamic arrays. Pointers. The heap. Fragmentation. Coalescing. Compacting. Garbage collection: the mark and sweep algorithm.
March 25 (Thu), 2004 Parameter passing: value, value-result, reference (all with memory models), and name. Introduction to ML. Laptop used, with examples in SML-NJ.
March 30 (Tue), 2004 HW4 assigned (due Tuesday, April 6): Ullman exercises 2.1.2, 2.2.2, 2.4.1, 2.4.3, 2.4.4, 2.4.5. PR2 assigned (due Thursday, April 8): Ullman exercises 2.1.1, 3.1.1, 3.1.2, 3.2.1. More ML, ending chapter 2. Laptop used, with examples in SML-NJ.
April 1 (Thu), 2004 Quiz 9. (Note: Quiz 8 was never assigned.) More ML.
April 6 (Tue), 2004 HW4 collected. More ML.
April 8 (Thu), 2004 PR2 collected. PR3 assigned (due Thursday, April 15): Ullman exercises 3.3.1, 3.3.2, 3.3.3, 3.3.7, 3.3.11, 3,4,1, 3.4.3. More ML. MT2 will be on Thursday, April 15. Sample questions for MT2 posted on course web site.
April 13 (Tue), 2004 More ML. Discussion of MT2 sample questions.
April 15 (Thu), 2004 MT2
April 20 (Tue), 2004 Prolog
April 22 (Thu), 2004 Review of MT2. More Prolog
April 27 (Tue), 2004 Presentations and Take-Home Final (exercise 5.2.4 [U] and Prolog assignment), due at the time of the final exam (Monday, May 3, 2pm). More Prolog.