## Fall 2001, CSE 520: Lectures

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

#### Note: the schedule and topics of future lectures are subject to change

1. Tue, Aug 30: Overview of the Syllabus. Contents of the course. The Lambda Calculus: a brief history. Syntax of the Lambda Calculus. Semantics of the lambda Calculus: alpha-beta conversion. [Barendregt84, 1.1 (Introduction), 2.1, 6.1-3 or Barendregt92, 2.1-2. Lecture Notes 1]
2. Tue, Sep 4: Some examples of lambda conversion. The Recursive functions as the class of functions obtained from the initial functions by composition, primitive recursion and minimalization. [Barendregt84, 6.1-3 or Barendregt92, 2.2. Lecture Notes 2]
3. Thu, Sep 6: The theorem of Kleene: all recursive functions are lambda-definable. The concept of lambda definability. Proof of the theorem of Kleene. Lambda definability of the initial functions, of the composition, and of the primitive recursion. [Barendregt84, 6.1-3 or Barendregt92, 2.2. Lecture Notes 3] Assignment 1 distributed. Due Tue Sep 18 in class.
4. Tue, Sep 11: Proof of the theorem of Kleene (continued). The fixpoint operator. Lambda definability of the "ingredients" necessary to define primitive recursion: booleans, if_then_else, test is_zero, pairs and predecessor.Lambda definability of minimalization. Further explanation about the fixpoint operator and its use. [Barendregt84, 6.1-3 or Barendregt92, 2.2. Lecture Notes 4]
5. Thu, Sep 13: Some examples of lambda-definability: The functions plus and log2. Further explanation about the fixpoint operator and its use. [Lecture Notes 5]
6. Tue, Sep 18: The notion of beta reduction. The Church-Rosser theorem. Consistency of the lambda calculus. On the existence of normal forms. Weak and strong normalization. [Barendregt84, 3.1-2 or Barendregt92, 2.3. Lecture Notes 6] Assignment 1 due. Assignment 2 distributed. Due Tue Oct 2 in class.
7. Thu, Sep 20 Weak and strong normalization (cont'ed). The simply typed lambda calculus. The system of Curry. Type checking. [Barendregt92, 3.1. Lecture Notes 7]
8. Tue, Sep 25 Examples of typeable and untypeable terms: \x.x has type A->A; \xy.xy has type (A->B)->A->B; \x.xx has no type. Open terms are not typable (without assumptions about the type of the free variables). Typeable terms have infinitely many types. Polymorphism in lambda calculus and in programming languages. The notion of principal type. [Barendregt92, 3.1-2. Lecture Notes 8 and 9]
9. Thu, Sep 27 Type inference in the system of Curry: how to construct the principal type. The notion of most general unifier. First-Order Unification. The Martelli-Montanari unification algorithm [Apt_Pellegrini, Section 2. Lecture Notes 8 and 9] Assignment 3 distributed. Due Tue Oct 11 in class.
10. Tue, Oct 2 The unification algorithm (cont'ed). The subject reduction theorem. [Barendregt92, 3.1-2. Lecture Notes 10 and 11] Assignment 2 due.
11. Thu, Oct 4 Types inhabited and not inhabited. 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 10 and 11]

12. Tue, Oct 9 Fall break

13. Tue, Oct 11 The Curry-Howard isomorphism. Types as formulas, programs as proofs, reduction as proof-normalization. [Gallier95, Lecture Notes 12 and 15] Assignment 3 due.
14. Tue, Oct 16 Presentation of projects. Assignment 4 distributed. Due Thu Nov 8 in class.
15. Thu, Oct 18 Midterm exam (in class).
16. Tue, Oct 23 The Curry-Howard isomorphism (cont'ed). Extending the isomorphism. Sum and product types (aka disjoint union and cartesian product). [Gallier95, Lecture Notes 12 and 15]
17. Tue, Nov 6 Introduction to the Theory of Concurrency and to CCS [Milner89, Introduction Lecture Notes 16, 17 and 18]
18. Thu, Nov 8 CCS: A Calculus for Communicating Systems. Syntax. Operational semantics based on a labeled transition system. [Milner89, Ch. 2. Lecture Notes 16, 17 and 18] Assignment 4 due.
19. Tue, Nov 13 Bisimulation as a co-inductive definition. How to show that two terms are / are not bisimilar. Examples. Weak bisimulation. [Milner89, Ch. 3, 4, and 5. Lecture Notes 16, 17 and 18]. Assignment 5 distributed. Due Tue Nov 20 in class.
20. Thu, Nov 15 Example: Proving the weak bisimilarity of the two definitions (specification and implementation) of a two-positions buffer. Message-passing in CCS. Properties of bisimulation. [Milner89, Ch. 3, 4 and 5. Lecture Notes 19].
21. Tue, Nov 20 Example: The equivalence theory of CCS. [Milner89, Ch. 3, 4 and 5. Lecture Notes 20]. Assignment 6 distributed. Due Thu Dec 4 in class.

22. Thu, Nov 22 No class (Thanksgiving break)

23. Tue, Nov 27 Example: Specification and implementation of a counter. [Milner89, Ch. 6.]. Assignment 5 due.
24. Thu, Nov 29 Example: Specification and implementation of a stack. Discussion about how to modify the example so to obtain a queue (homework). [Milner89, Ch. 6.]. The asynchronous pi-calculus. [Milner99]
25. Tue, Dec 4 The asynchronous pi-calculus. Implementation in Java of the asynchronous pi-calculus. Project due. Assignment 6 due. Note: late turn-ins are not allowed this time
26. Thu, Dec 6 Class canceled