August 21 (Thu), 2003 Questionnaire, with discussion; syllabus, reasons for studying Concepts of PLs.
August 26 (Tue), 2003 Influences on PL design: computer architecture; programming methodologies. Programming methodologies: waterfall, RUDE, spiral. (Ghezzi and Jazayeri, parts of Ch.1)
August 28 (Thu), 2003 Quiz 1. HW1 assigned, due Tuesday, September 2. Criteria for the evaluation of PLs. A bit of history. Lack of referential transparency in imperative languages. Chapter 1 completed.
September 2 (Tue), 2003 HW1 collected. Syntax vs. Semantics Lexical analysis vs. parsing (mini-Triangle example). EBNF, with examples. Derivation, with examples.
September 4 (Thu), 2003 Quiz 2 (mislabeled as 3). Ariane disaster handout. EBNF, with examples. Parse trees. Ambiguous grammars (two parse trees for the same sentential form). Static semantics and attribute grammars.
September 9 (Tue), 2003 Quiz 3. HW2 assigned, due Tuesday, September 16. Introduction to semantics: denotational, axiomatic, operational. Declarations vs. expressions, vs. commands. Handout on denotational semantics handed out. Denotational semantics: state, memory, input stream, output stream, arithmetic expressions, assignments, read, write, statement list.
September 11 (Thu), 2003 Denotational semantics: statement list, Boolean expression, conditional statement, while statement, program. Example (on handout) of denotational semantics of a program with a while loop (factorial computation).
September 16 (Tue), 2003 HW2 returned. Q5. Conclusion of denotational semantics example. Axiomatic semantics: Basics.
September 18 (Thu), 2003 Q6. Axiomatic semantics: loop invariants, with a detailed example.
September 23 (Tue), 2003 Q7. Test will be on Thursday, September 25. Two more detailed examples of loop invariants.
September 25 (Thu), 2003 MT1 (Midterm).
September 30 (Tue), 2003 MT1 returned. Correction of MT1. Discussion of ambiguous grammars in ALGOL 60. DIscussion of compound statements, and variations on them in then branches, else branches, and loop bodies in various languages. Variables and binding times.
October 2 (Thu), 2003 Q8. HW3 and HW4 assigned. Both are due on Thursday, October 9. Operational semantics: Introduction to Simplesem. Simplesem code and data memories, instruction pointer, assignment, I/O, conditional and unconditional jumps, indirect addressing. Classification of languages based on memory use: static, stack-based, and dynamic. Example of a program in the static language C1: Euclid's algorithm to compute the Greatest Common Divisor (GCD).
October 7 (Tue), 2003 Q8. More on Euclid's algorithm. The GCD program in Simplesem. C2 programs. A C2 program example. A FORTRAN example of static programs in Simplesem, with COMMON and a subroutine.
October 9 (Thu), 2003 No Quiz. HW3 and HW4 collected. PR1 assigned. Review of C2. C2'. Introduction to stack-based languages and C3. Demo of Simplesem on an MS-Windows laptop. Assignment of languages to (some) teams. Many students were absent.
October 16 (Thu), 2003 Q9? Q10? More on C3.
October 21 (Tue), 2003 Q11. PR1 collected. More on C3.
October 23 (Thu), 2003 Q12. C4, C4', C4'': block structure: compound statements (as in C, C++, and Java), and nested routines (as in Pascal and Modula-2). Note that Ada supports both. Overlays versus stack memory management for 4': space vs. time. Static nesting trees. Potential call graph defined. Static links. Examples.
October 28 (Tue), 2003 Q13. A puzzle. Review of static links. C5: semi-dynamic languages: dynamic arrays (as in Algol 68 and Ada).
October 30 (Thu), 2003 No Quiz. Program 2 assigned (FP). Dynamic variables (pointers). The heap. Garbage collection. Parameter passing by value, value-return, reference, and name. Functional programming: Backus's FP language. Some primitive functions and some functional forms (a.k.a. higher-order functions a.k.a. combining forms): composition, construction, and insert.
November 4(Tue), 2003 Quiz 14. Backus's 1987 tape on FP and FL, with commentary.
November 6(Thu), 2003 Quiz 15. HW5 assigned: 2.1.2, 2.2.2, 2.4.1, 2.4.3, 2.4.4, 2.4.5, due November 13. PR3 assigned: 2.1.1, 3.1.1, 3.1.2, 3.2.1(a), 3.2.1(d), due November 20. Midterm 2 will be on Tuesday, November 11.
November 11 (Tue), 2003 MT2
November 13 (Thu), 2003 Guest lecture by Xinliang Zheng on McCarthy's LISP interpreter, following Paul Graham's reconstruction.
November 18 (Tue), 2003 PR3 delayed: due Nov 25 More on McCarthy's LISP interpreter.
November 20 (Thu), 2003 McCarthy's interpreter, completed. Papers all assigned; to be presented 12/2.
November 25 (Tue), 2003 PR4 assigned, due 12/04 (Thu, at midnight): 3.3.1, 3.3.2, 3.3.3, 3.3.8, 3.3.11, 3.4.1 [Ullman] ML: Chapter 3 completed.
December 2 (Tue), 2003 PR5 assigned, due 12/05 (Fri, at midnight): Family Relations in Prolog. Prolog. First student presentations: Logo. (See "student presentation information" on course web site for details and copy of the slides used.)
December 4 (Thu), 2003 Last lecture of course. Student presentations.