August 24 (Thu), 2006 Syllabus, grading policy handouts (also on the web site). Presentation of course objectives. Questionnaire, with partial discussion. (Ghezzi and Jazayeri, parts of Ch.1)
August 29 (Tue), 2006 Why study principles of PLs? (Ghezzi and Jazayeri, parts of Ch.1) Influences on PL design.
August 31 (Thu), 2006 HW1 assigned, due on Thursday, September 7. Programming methodologies: waterfall, spiral, RUDE. Programming environments. Influences on PL design. Data and control abstraction.
September 5 (Tue), 2006 Quiz 1. The von Neumann computer organization ("architecture") and its effect on PLs. Other architectures. Symbolics, Japanese fifth generation. Language translation: compilation, interpretation, hybrid. Genealogy of PLs. Features of three main families of PLs: imperative (or procedural or assignment-based), functional or applicative, logic or declarative. Some examples.
September 7 (Thu), 2006 Q2. HW1 collected. Ariane handout given. Syntax and Semantics: Introduction. Lexical analysis and syntactic analysis. BNF. Definitions and examples: sentence, sentential form, derivation, ambiguous grammar, with examples.
September 12 (Tue), 2006 HW2 assigned, due Thursday: Find out how your favorite programming language addresses and solves the dangling else problem described in class today. Q3. Lexical and syntactic analysis in the miniTriangle language. Dangling else problem.
September 14 (Thu), 2006 Q4. HW2 collected. HW3 assigned, due Thursday, September 21.
September 19 (Tue), 2006 Q5, with discussion. HW1 returned. HW4 assigned: exercises 1.9.3 (p.32), 2.9.1, 2.9.2 (p.107) [G&J]. EBNF, syntax graphs, Pascal-S syntax graphs (in German).
September 21 (Thu), 2006 No quiz. HW2 returned. HW3 collected. Midterm will be on Tuesday, September 26. Discussion of sample midterm, posted on web site. Scope rules. Attribute grammars, with example.
September 26 (Tue), 2006 MT1. HW4 collected.
September 28 (Thu), 2006 MT1 returned. Correction of MT1. Binding times. Variables. Intro to denotational semantics (beginning).
October 3 (Tue), 2006 Q6. HW5 assigned. Denotational semantics of a simple imperative language: handout. Handout: example of use of denotational semantics: a simple program with a while loop: computing the factorial.
October 5 (Thu), 2006 Q7. HW6 assigned. Axiomatic semantics. Example of use of axiomatic semantics: a program with a while loop to compute the sum of consecutive integers.
October 10 (Tue), 2006 Q8 (done together as an exercise in class). HW5 assigned. HW6 due date changed to October 17. Q&A on axiomatic semantics. Introduction to operational semantics: simplesem.
October 12 (Thu), 2006 Q9. Introduction to operational semantics. Introduction to Simplesem. Categorization of PLs by data memory use: static, stack-based, dynamic. C1, started.
October 17 (Tue), 2006 Q10. HW6 collected. PR1 assigned, due October 26. C1 language, with Euclid's algorithm example. C2 language, with example. Brief discussion of C2'.
October 24 (Tue), 2006 Q11. C2'. Old Fortran program example for C2. Introduction to C3. Example of direct recursion: comb (in ML). Example of indirect (mutual) recursion: take and skip (in ML).
October 26 (Thu), 2006 Q12. PR1 collected. C3.
October 31 (Tue), 2006 Q13. More C3. Introduction to C4. C4'. Overlays.
November 2 (Thu), 2006 Q14. C4''. Example of memory management for C4''.
November 9 (Thu), 2006 Second midterm will be on Tuesday. No Quiz. C5': Semidynamic arrays. C5'': Dynamic typing, non-automatic variables, pointers. The heap. Heap management, coalescing, compaction. Explicit storage deallocation. Garbace collection. The mark and sweep algorithm. Parameter passing methods.
November 14 (Tue), 2006 Second midterm.
November 16 (Thu), 2006 No quiz. Introduction to the ML language.
November 21 (Tue), 2006 HW7 assigned: exercises 2.1.2, 2.2.2, 2.4.1, 2.4.3, 2.4.4, 2.4.5, 2.4.6 [U], due Tuesday, November 28. PR2 assigned: exercises 2.1.1, 3.1.1, 3.1.2, 3.2.1 [U], due Tuesday, November 28. Q15. MT2 returned. The ML type system. Tuples, lists. Simple functions in ML. Patterns. Simple recursive functions: factorial and list membership, with and without patterns.
November 28 (Tue), 2006 HW7 and PR2 collected. PR3 assigned: 3.3.1, 3.3.2, 3.3.3, 3.3.8, 3.3.11 [U], due Tuesday, December 5. Q16. Naive reverse. Recursive factorial, iterative factorial, tail recursive factorial, accumulators. Complexity of list append. Complexity of naive reverse. Fast reverse with an accumulator. Eager (strict) and lazy evaluation: the cond example.
November 30 (Thu), 2006 PR4 (fp) and PR5 (Prolog) assigned, due Thursday, December 7. Q17. Reverse and fast reverse with an accumulator (a.k.a. "difference list" reverse). Naive exponentiation. Decrease and conquer exponentiation. Local declarations: the let form. Powerset programs with and without let. Simulation of imperative programs by their denotational semantics: the goto program example. Tail recursive (iterative, with accumulator) and non-tail recursive factorial program, with discussion of memory use. Eager (strict) and lazy evaluation: the cond example. Insertion sort. Insertion sort with comparison operator as a parameter. Backus videotape on the FP language and the FL programming system (first 30 minutes).
December 5 (Tue), 2006 PR3 collected. Q18. Final exam will be two hours long, with one hour taken up by presentations. Backus tape completed. FP examples. Prolog: introduction using SWI-Prolog and the notes on the web.
December 7 (Tue), 2006 PR4 collected from students who did not use the dropbox (no penalty). Prolog: completion of presentation using notes on the web, with examples. First team presentation. Other teams will present as part of the final exam. End of course.