August 19 (Thu), 2004 Syllabus, reasons for studying Concepts of PLs. Programming methodologies: waterfall, RUDE, spiral. 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. (Ghezzi and Jazayeri, parts of Ch.1)
August 24 (Tue), 2004 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). More on architecture, e.g.: Lambda machines and the Symbolics; Mago's machine; FGCS project and the PIM. Control abstraction, coroutines, concurrent execution.
August 26 (Thu), 2004 Language translation: pure compilation, interpretation, interpretive compilation. Historical perspective: a list of languages in chronological order of their introduction, with comments. Syntax and semantics: introduction.
August 31 (Tue), 2004 Quiz 1. HW1 assigned, due 2004-09-07 (Tuesday). Lexical analysis and parsing, with mini-Triangle example. BNF, with examples (expressions, etc.). Derivation, parse (syntax) trees, ambiguous grammars: if-then-else in the original Algol.
September 2 (Thu), 2004 Quiz 2. More on BNF, EBNF, Syntax diagrams, with examples from ML and Pascal.
September 7 (Tue), 2004 Quiz 3. HW1 collected. Static semantics (type and scope checking), attribute grammars, with an example.
September 9 (Thu), 2004 Q4. HW2 assigned, due Thursday, September 16, 2004. Semantic distinction between command (statement) and expression. Denotational semantics: basics.
September 14 (Tue), 2004 Q5. Denotational semantics of a simple language with a while loop, completed with examples. Good Q&A.
September 16 (Thu), 2004 Q6. HW2 collected. Axiomatic semantics, with and example emphasizing the discovery of a loop invariant: a program to compute the sum of the integers from 0 to n-1. Good Q&A.
September 21 (Tue), 2004 Q7. More on axiomatic semantics. Intro to operational semantics and Simplesem.
September 23 (Thu), 2004 Q8. Dynamic and static scope rules, with an example. Review of sample test posted on the web site, in preparation of midterm 2, which will be on Tuesday, September 28.
September 28 (Tue), 2004 MT1.
September 30 (Thu), 2004 Q9. PR1 assigned. Review of MT1. Static languages: C1, C2, C2'. Simplesem on laptop used in class.
October 5 (Tue), 2004 Q10. Early Fortran example, as an example of a static (C2) language. Stack-based languages: introduction. Examples of recursion and mutual recursion in ML, from Ullman's book (comb; take and skip). Stack-based languages. Introduction. Semantics of function call and return.
October 7 (Thu), 2004 Q11. PR1 collected. Handout with Fortran example used on Tuesday. Handout with picture describing the operational (Simplesem) semantics of function call and return for C3 (without return values). Detailed example (stepping in the Simplesem emulator): recursive factorial, in C3. C3. Semantics of function call
October 12 (Tue), 2004 Q12. Block structure: compound statements (C4') and overlays; nested routines and static links (C4'').
October 19 (Tue), 2004 Q13. (Note: October 14 was part of fall break. Semidynamic variables. Dynamic variables: the heap. Coalescing, compacting, garbage collection and the mark and sweep algorithm.
October 21 (Thu), 2004 Q14. Rest of class canceled due to power failure. (Class has no windows.)
October 26 (Tue), 2004 No Quiz. PR2 assigned, due November 2 (using the dropbox). Midterm 2 will be on November 4. John Backus tape on the functional language FL (a variation of FP).
October 28 (Thu), 2004 Q15. More on FP, with emphasis on the variation implemented in Carter Bays' interpreter.
November 2 (Tue), 2004 Election Day. No classes.
November 4 (Thu), 2004 MT2.
November 9 (Tue), 2004 Q16. Introduction to ML (with laptop). Chapter 1 and 2 of Ullman's book.
November 11 (Thu), 2004 Q17. HW3 assigned: exercises 2.1.2, 2.2.2, 2.4.1, 2.4.3, 2.4.4, 2.4.5 [U], due Thursday, Nov. 18. Basics of functions in ML. Patterns. Functions on lists. Simply recursive and mutually recursive functions.
November 16 (Tue), 2004 Q18. PR3 assigned: 2.1.1, 3.1.1, 3.1.2, 3.2.1 [U], due Tuesday, November 23. Student presentation handout. Email to me from each team with three language choices due on Monday, November 22. More functions in ML, including comb, tail-recursive factorial with an accumulator.
November 18 (Thu), 2004 No Quiz. HW3 collected. More ML: powerset, naive reverse, reverse with difference lists, insertion sort (generic), two higher-order functions: simpleMap and reduce.
November 23 (Tue), 2004 Q19. P3 collected. PR4 assigned (family relations in Prolog). Presentation guidelines handed out. Presentation teams set up. Make-up meeting will be on Monday, November 29, at 9:30am in the Swearingen Faculty Lounge (1A03). Basics of Prolog.
November 29 (Mon), 2004 Note: There was no class last Thursday, because of Thanksgiving break. Make-up meeting (intended to be on McCarthy's LISP evaluator and replacing the class missed due to a power failure) was canceled, because no students came. One student actually arrived 20 minutes late, and I had a brief meeting with him. Ravi Katpelly (TA) will lead the presentations on Tuesday and Thursday.