## Fall 2000, CSE 520: Lectures

The following is the summary of lectures given so far, and the plan for future lectures. For each past lecture you find the list of topics covered, and the reference material.

1. Tue, Aug 29: Overview of the Syllabus. Contents of the course. The Lambda Calculus: a brief history. Syntax of the Lambda Calculus. [Barendregt84, 1.1 (Introduction). Lecture Notes 1]
2. Thu, Aug 31: The Lambda Calculus: syntax and alpha-beta conversion. The Recursive functions as the class of functions obtained from the initial functions, composition, primitive recursion and minimalization. [Barendregt84, 2.1, 6.1-3 or Barendregt92, 2.1-2. Lecture Notes 2]
3. Tue, Sep 5: The theorem of Kleene: all recursive functions are lambda-definable. The concept of lambda definability. Lambda definability of the initial functions, of the composition, and of the primitive recursion. The fixpoint operator. [Barendregt84, 6.1-3 or Barendregt92, 2.2. Lecture Notes 3 and 4]
4. Thu, Sep 7: Proof of the theorem of Kleene (continued). Lambda definability of the "ingredients" necessary to define primitive recursion: booleans, if_then_else, test is_zero, pairs and predecessor. [Barendregt84, 6.1-3 or Barendregt92, 2.2. Lecture Notes 3 and 4] Assignment 1 distributed. Due Sep 19 in class.
5. Tue, Sep 12: Proof of the theorem of Kleene (continued). Lambda definability of minimalization. Further explanation about the fixpoint operator and its use. [Barendregt84, 6.1-3 or Barendregt92, 2.2. Lecture Notes 5]
6. Thu, Sep 14: Further explanation about the fixpoint operator and its use. Considerations about partiality: the encoding considered so far is not faithful on the cases of divergency. Alternative encoding which simulates also the cases of divergency. [Barendregt84, 8.4 Lecture Notes 6]
7. Tue, Sep 19: The notion of beta reduction. The Church-Rosser theorem. Consistency of the lambda calculus. Inductive definitions and the principle of general induction. On the existence of normal forms. Weak and strong normalization. [Barendregt84, 3.1-2 or Barendregt92, 2.3. Lecture Notes 7]
8. Thu, Sep 21 The simply typed lambda calculus. The system of Curry. Type checking and type inference. [Barendregt92, 3.1. Lecture Notes 8, 9, 10, 11, and 12] Assignment 2 distributed. Due Oct 5 in class.
Tue, Sep 26 No class
Thu, Sep 28 No class
9. Tue, Oct 3 Examples of typeable and untypeable terms. Type inference in the system of Curry: how to construct the most general type. The notion of most general unifier. [Barendregt92, 3.1-2. Lecture Notes 8, 9, 10, 11, and 12]
10. Thu, Oct 5 First-Order Unification. The Martelli-Montanari unification algorithm [Apt_Pellegrini, Section 2. Lecture Notes 8, 9, 10, 11, and 12] Assignment 3 distributed. Due Oct 19 in class.
Tue, Oct 10 Fall break
Tue, Oct 12 Class canceled
11. Tue, Oct 17 Types inhabited and not inhabited. The subject reduction theorem. [Barendregt92, 3.1-2. Lecture Notes 8, 9, 10, 11, and 12]
12. Thu, Oct 19 Theorem: Typeability implies strong normalization. The type system of Church. Relation between the system of Church and the system of Curry. [Barendregt92, 3.1-2. Lecture Notes 8, 9, 10, 11, and 12]
13. Tue, Oct 24 Midterm exam (in class).
14. Thu, Oct 26 The Curry-Howard isomorphism. Types as formulas, programs as proofs, reduction as proof-normalization. Extending the isomorphism. Sum and product types (aka disjoint union and cartesian product). [Gallier95, Lecture Notes 14.]
15. Tue, Oct 31 Presentation of projects
16. Thu, Nov 2 PCF (Programming Computable Functions): an extension of the Lambda Calculus with integers, booleans, and some primitives. The type system of PCF. [Lecture Notes 16 and 17][Further (optional) reading: Winskell93, Ch 11, and Mitchell96, Ch 2]
17. Tue, Nov 7 The operational semantics of PCF based on eager evaluation. The operational semantics of PCF based on lazy evaluation. [Lecture Notes 16 and 17] [Further (optional) reading: Winskell93, Ch 11, and Mitchell96, Ch 2]
18. Thu, Nov 9 Lazy functional programming on streams (lazy lists). Examples: stream of all natural numbers, stream of all factorial numbers. Definition of the Eratosthenes' sieve as a lazy function on streams. [Lecture Notes 16 and 17] An environment-based semantics for PCF. [Lecture Notes 18 and 19] Assignment 4 distributed. Due Nov 21 in class.
19. Tue, Nov 14 An environment-based semantics for PCF (cont'ed). Closures and recursive closures. Lazy and eager application rules. An ML interpreter for eager PCF designed following the environment-based semantics. [Lecture Notes 18 and 19]
20. Thu, Nov 16 An ML interpreter for eager PCF (cont'ed). [Lecture Notes 18 and 19]
21. Tue, Nov 21 A Calculus for Communicating Systems. Syntax. Operational semantics based on a labeled transition system. [Lecture Notes 21 and 22] [Milner89, Introduction, Ch. 2]. Assignment 5 distributed. Due Dec 5 in class.
Thu, Nov 23 No class (Thanksgiving break)
22. Tue, Nov 28 Examples of specifications of concurrent systems using CCS. Strong bisimulation. The algebraic theory of CCS. [Lecture Notes 21 and 22] [Milner89, Ch. 3, 4, and 5].
23. Thu, Nov 30 Bisimulation as a co-inductive definition. How to show that two terms are / are not bisimilar. Examples. Weak bisimulation. [Lecture Notes 21 and 22] [Milner89, Ch. 3, 4, and 5].
24. Tue, Dec 5 The algebraic theory of CCS. Example: A scheduler. Specification and intermediate implementation. [Milner89, Ch. 5]. Implementation in Java of the choice-free subset of CCS.
Thu, Dec 7 No class
Tue, Dec 12 Project due.