Spring 2001, CSE 428: Schedule of Lectures

    WEEK 1

  1. Tue 9 Jan. Introduction. Administrativia. Overview of the course. The formal definition of Programming Languages. (Sethi, 1.3) [Lecture Notes 1]
  2. Thu 11 Jan. Syntax of a language. Example: a subset of the English sentences. Formal definition of context-free grammars. Derivations and derivation trees. Ambiguity. (Sethi, 2.1-5) [Lecture Notes 2]
  3. WEEK 2

  4. Tue 16 Jan. Some examples of ambiguities: Precedence, associativity, and dangling-else. How to eliminate ambiguities from a grammar. (Sethi, 2.1-5) [Lecture Notes 3]
    Drop/add deadline (Wed Jan 17)
  5. Thu 18 Jan. Implementation of programming languages: The various phases from the source to the execution. [Lecture Notes 4.1] Example of interpreter. A mini language of expressions. Declarations and scope. An abstract interpreter (operational semantics) for the mini language of expressions. [Lecture Notes 4.2]
    Quiz 1 (in class). Hw 1 distributed.
  6. WEEK 3

  7. Tue 23 Jan. A concrete interpreter for the mini language of expressions. [Lecture Notes 5]
  8. Thu 25 Jan. Basics of Imperative Programming. (Sethi Ch. 3, excluding Sections 3.5 and 3.6) [Lecture Notes 6]

  9. Quiz 2 (in class).

    WEEK 4

  10. Tue 30 Jan. An interpreter for a mini imperative language. [Lecture Notes 7]
  11. Thu 1 Feb. Procedures and functions. Parameter passing. (Sethi, 5.1-3) [Lecture Notes 8]
    Quiz 3 (in class). Hw 1 due, Hw 2 distributed.
  12. WEEK 5

  13. Tue 6 Feb. Basics about compilation. Activation records. Stack-based implementation for imperative languages. Lexical scope and dynamic scope. Lexical scope and nested declarations of functions and procedures: necessity of a static (access) link. (Sethi 5.3-7) [Lecture Notes 9]
  14. Thu 8 Feb. Allocation and deallocation of dynamic variables. (Sethi, 4.7 and 4.8) [Lecture Notes 10 and 13]
    Quiz 4 (in class).
  15. WEEK 6

  16. Tue 13 Feb. In-class discussion of the solution of test for preparation of MT 1.
    Hw 2 due. Note: because of MT 1, we need to publish the solution on Feb 13. Hence, no solutions can be turned in after this date (namely, late assignments will not be accepted this time).
  17. Thu 15 Feb. Class canceled. Midterm 1   Hw 3 distributed.
  18. WEEK 7

  19. Tue 20 Feb. Allocation and deallocation of dynamic variables (Cont'ed). Pointers. Dangling references and memory leaks. (Sethi, 4.7 and 4.8) [Lecture Notes 10 and 13]
  20. Thu 22 Feb. OO in Java. Some differences between Java and C++. Introduction to concurrency. Creation of threads in Java. Life-cycle of a thread. [Lecture Notes 14] (Arnold-Gosling 9.1-2)
    Quiz 5 (in class).
  21. WEEK 8

  22. Tue 27 Feb. Synchronization in Java: locks. [Lecture Notes 15 and 16] (Arnold-Gosling 9.3-6)
  23. Thu 1 Mar. Suspension and resumption of threads via wait() and notify(). [Lecture Notes 15 and 16] (Arnold-Gosling 9.3-6)

  24. Quiz 6 (in class). Hw 3 due, Hw 4 distributed.

    Mar 5 - Mar 9: Spring Break

    WEEK 9

  25. Tue 13 Mar. Applets in Java. Semaphores. Safety and Liveness properties. [Lecture Notes 17]
  26. Thu 15 Mar. Introduction to functional programming and to ML. [Lecture Notes 18 and 19] (Sethi Ch. 8)

  27. Quiz 7 (in class).

    WEEK 10

  28. Tue 20 Mar. Definition of function via pattern matching. Lists and pairs in ML. [Lecture Notes 18 and 19] (Sethi 9.1-2)
  29. Thu 22 Mar. Concrete, recursive and polymorphic types in ML. [Lecture Notes 20] [Additional Lecture Notes] [Code of some examples] (Sethi 9.4-5)

  30. Quiz 8 (in class). Hw 4 due, Hw 5 distributed.

    WEEK 11

  31. Tue 27 Mar. Higher Order in ML. [Lecture Notes 21] (Sethi 9.3)
  32. Thu 29 Mar. ML: polymorphic data types and polymorphic functions, local declarations, option type. Most of the material presented in this class is on Lecture Notes 20 and 21. Some additional material is here.
    Quiz 9 (in class).

    WEEK 12

  33. Tue 3 Apr. In-class discussion of the solution of test for preparation of MT 2. Hw 5 due.
  34. Note: because of MT 2, we need to publish the solution on Apr 3. Hence, no solutions can be turned in after this date (namely, late assignments will not be accepted this time).
  35. Thu 5 Apr. Class canceled. Midterm 2
    Late drop deadline: Friday Apr 6
  36. WEEK 13

  37. Tue 10 Apr. Introduction to Logic Programming and Prolog. Distinctive features: Unification and backtracking. Applications: AI, fast prototyping, databases. Syntax of Programs: facts and rules. Querying a program. Example: a database representing the matherhood relation. Deriving new relations: grand_mother and ancestor [code]. Lists in Prolog. Functions defined by predicates. Example: Definition of append. Invertibility. Use of append for splitting a list. Definition of permutation, ordered, and slow-sort [code]. (Sethi 11-11.3)
  38. Thu 12 Apr. LP. Builtins and arithmetic in Prolog. Some examples (Fibonacci, balancement check). Difference lists. Example: Frontier of a tree. [code]. (Sethi 11.3-11.4)
    Quiz 10 (in class). Hw 6 distributed.
  39. WEEK 14

  40. Tue 17 Apr. Prolog: Unification. Data structures. Programming techniques. (Sethi 11.3-11.4)
  41. Thu 19 Apr. Negation as failure. Control in Prolog (Sethi 11.5)
    Quiz 11 (in class).
  42. WEEK 15

  43. Tue 24 Apr. Cut in Prolog [code] (Sethi 11.6). ML-style type checking as a Prolog program [code].
  44. Thu 26 Apr. Wrap-up and preparation for the final. Hw 6 due.
    Withdrowal deadline (Fri Apr 27)
  45. Note: The above schedule is subject to change.