January 12 (Tue), 1999 Introduction to the Course: Goals and Topics to Be Covered. Reasons for Studying Principles of Programming Languages (PLs). (Application) Domains. (Sebesta, parts of Ch.1.)
January 14 (Thu), 1999 Quiz 1 assigned and collected. Homework 1 (HW1) assigned: Exercises 1, 8, 10, 17, pp.34-35 [S] Introduction to the Course: Criteria for the Evaluation of Programming Languages, with Historical Examples from Chapter 2.
January 19 (Tue), 1999 Quiz 2 assigned and collected. HW1 collected. Imperative, Functional, and Logic Programming Paradigms. The von Neumann computer. Introduction to Functional Languages. Introduction to the John Backus tape. John Backus tape (up to I/O not included).
January 21 (Thu), 1999 Quiz 3 assigned and collected. More on functional languages. Programming in FP (with examples using the fp interpreter on the trees).
January 26 (Tue), 1999 Quiz 4 assigned and collected. Program 1 (addv and addvs in FP) assigned; due Tuesday, February 2. Evaluation in functional languages: example of factorial in FP. Brief discussion of lazy (by need) vs. eager (by name) evaluation.
January 28 (Thu), 1999 Quiz 5 assigned and collected. Matrix multiplication example in FP. I/O in FL--second half of Backus tape.
February 2 (Tue), 1999 Quiz 6 assigned and collected. Program 1 (addv and addvs in FP) collected. HW2 assigned: exercises 1, 5, 6, 7, 13, 16, 17, 18 on pp. 103-104 of Sebesta's textbook. Conclusion of Backus's tape (including Q&A). Introduction to ML.
February 4 (Thu), 1999 Quiz 7 assigned and collected. HW3 assigned: Essay on INTERLISP; due Tuesday 2/16. Program 2 assigned: Simple ML functions; due Tuesday 2/16. ML basics (Ch. 1 and parts of Ch. 2--Ullman).
February 9 (Tue), 1999 Quiz 8 assigned and collected. HW2 collected. More ML basics and introduction to functions (Ch.2 and Parts of Ch.3--Ullman).
February 11 (Thu), 1999 No quiz today. Functions: simple (linear) induction; tail recursion (iteration), non-linear recursion, mutual recursion, with examples. Most examples are accessible from this web site through the ML link. Ch. 3 Ullman. Midterm test will be one week from today (i.e., on February 18), rather thank on February 16.
February 16 (Tue), 1999 Quiz9 assigned and collected. HW3 and Program 2 collected. Homework 4 (all review questions for Chapter 14 (pp.601-602) and exercises 11 and 12 on p.602-603 of Sebesta) assigned, due Tuesday 99/2/23. Program 3 (exercises 4.1.1, 4.1.2, 4.2.1, 4.2.2, 4.2.3, 4.3.1 Ullman; exercise 1 p.602 Sebesta) assigned, due Thursday 99/2/25. Cons and append. Complexity of naive reverse. Linear-time reverse with accumulators (difference lists). Begin I/O in ML.
February 18 (Thu), 1999 Midterm Exam.
February 23 (Tue), 1999 Correction of midterm exam. HW4 collected. Tracing of recursive functions using mutually recursive functions, with rev as example. I/O in ML: simple printing.
February 25 (Thu), 1999 Program 3 collected. I/O in ML Q&A. Insertion sort and (top-down) mergesort in ML.
March 2 (Tue), 1999 Program 4 assigned: Exercises 5.2.1, 5.2.2, 5.4.1, due Tuesday, March 16. More sorting including quicksort.
March 4 (Thu), 1999 Exceptions: throw and handle. Higher-order functions: map.
March 16 (Tue), 1999 Program 4 collected: Exercises 5.2.1, 5.2.2, 5.4.1. Currying, higher-order functions, abstraction of variables. Graduate student presentation by Liyun Chen and Qian Xue: Pages 31-35 of: Turner, D.A. ``A New Implementation Technique for Applicative Languages.'' {\em Software: Practice and Experience,''} vol. 9 (1979), pp.31--49.
March 18 (Thu), 1999 Context-free grammars, BNF, syntax diagrams (Sebesta, first part of Ch.4), and the ML expression recognizer and evaluator of Section 5.7 (Ullman).
March 23 (Tue), 1999 Second midterm exam (administered by TA, Mr. J. Qu). Program 5: Exercise 5.4.2 [Ullman] (Simpson's Rule) due Tuesday, March 30.
March 25 (Thu), 1999 Correction of second midterm. Introduction to semantics of programming languages. Basics of denotational semantics.
March 30 (Tue), 1999 Program 5 deadline for return extended to Thursday, April 1. More denotational semantics. ML type declarations and (basics of) datatype declarations, including the set example.
April 1 (Thu), 1999 Program 5 (exercise 5.4.2, Simpson's rule) collected. Example of denotational semantics: iterative factorial program (from Ghezzi and Jazayeri's _Programming Language Concepts_, 2nd ed, Wiley). Karel Culik visits.
April 6 (Tue), 1999 Review of Simpson's rule solutions, including an "FP-style" solution using higher-order functions and three recursive solutions. Inductive proof of correctness of one of the recursive solution.
April 8 (Thu), 1999 Operational semantics--the very idea.
April 13 (Tue), 1999 Program 6 assigned: Exercise 6.2.8 (propositional formula evaluator), Ullman, due Thursday, 99/4/22. Program 7 assigned: Exercises 3 and 4 on p.368 of Sebesta's book (family relations), due Tuesday, 99/4/27. Structures in ML, including complex number and mapping example.
April 15 (Thu), 1999 Introduction to Prolog. Extensional and intensional definitions. Knight's moves example. Composer example.
April 20 (Tue), 1999 More Prolog: syntax, logic variables, declarative and procedural readings, goal trees.
April 22 (Thu), 1999 Program 6 collected: Exercise 6.2.8. More Prolog: syntax, terms, matching, computations (vertical, horizontal) using matching.
April 27 (Thu), 1999 Review of Exercise 6.2.8. Program 7 collected, but no-penalty extension to the time of the final given. Brief discussion of final: it will cover Chapters 1-6 and 8 of Ullman, Chapters 1-3, 14, and 15, and Sections 9.1, 9.2, 9.3.1, and 9.3.2 of Sebesta. More Prolog: declarative and procedural semantics, including the "execute" function from Bratko's book. Monkeys and Bananas. Instructor's and course evaluation.