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

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:
alphabeta conversion.
[Barendregt84,
1.1 (Introduction), 2.1, 6.13 or
Barendregt92,
2.12.
Lecture Notes 1]

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.13
or Barendregt92, 2.2.
Lecture Notes 2]

Thu, Sep 6:
The theorem of Kleene: all recursive functions are lambdadefinable.
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.13
or Barendregt92, 2.2.
Lecture Notes 3]
Assignment 1 distributed. Due Tue Sep 18 in class.

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.13
or Barendregt92, 2.2.
Lecture Notes 4]

Thu, Sep 13:
Some examples of lambdadefinability: The functions plus and log_{2}.
Further explanation about the fixpoint operator and its use.
[Lecture Notes 5]

Tue, Sep 18:
The notion of beta reduction.
The ChurchRosser theorem.
Consistency of the lambda calculus. On the existence of normal forms.
Weak and strong normalization.
[Barendregt84, 3.12
or Barendregt92, 2.3.
Lecture Notes 6]
Assignment 1 due.
Assignment 2 distributed. Due Tue Oct 2 in class.

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]

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.12.
Lecture Notes 8 and 9]

Thu, Sep 27
Type inference in the system of Curry: how to construct the
principal type. The notion of most general unifier.
FirstOrder Unification.
The MartelliMontanari unification algorithm
[Apt_Pellegrini, Section 2.
Lecture Notes 8 and 9]
Assignment 3 distributed. Due Tue Oct 11 in class.

Tue, Oct 2
The unification algorithm (cont'ed).
The subject reduction theorem.
[Barendregt92, 3.12.
Lecture Notes 10 and 11]
Assignment 2 due.

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.12.
Lecture Notes 10 and 11]
Tue, Oct 9 Fall break

Tue, Oct 11
The CurryHoward isomorphism. Types as formulas, programs as proofs,
reduction as proofnormalization.
[Gallier95,
Lecture Notes 12 and 15]
Assignment 3 due.

Tue, Oct 16
Presentation of
projects.
Assignment 4 distributed. Due Thu Nov 8 in class.

Thu, Oct 18
Midterm exam (in class).

Tue, Oct 23
The CurryHoward isomorphism (cont'ed).
Extending the isomorphism. Sum and product types
(aka disjoint union and cartesian product).
[Gallier95,
Lecture Notes 12 and 15]

Tue, Nov 6
Introduction to the Theory of Concurrency and to CCS
[Milner89, Introduction
Lecture Notes 16, 17 and 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.

Tue, Nov 13
Bisimulation as a coinductive 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.

Thu, Nov 15
Example: Proving the weak bisimilarity of the two definitions
(specification and implementation)
of a twopositions buffer.
Messagepassing in CCS.
Properties of bisimulation.
[Milner89, Ch. 3, 4 and 5.
Lecture Notes 19].

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.
Thu, Nov 22
No class (Thanksgiving break)

Tue, Nov 27
Example: Specification and implementation of a counter.
[Milner89, Ch. 6.].
Assignment 5 due.

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 picalculus.
[Milner99]

Tue, Dec 4
The asynchronous picalculus.
Implementation in Java of the asynchronous picalculus.
Project due.
Assignment 6 due.
Note: late turnins are not allowed this time

Thu, Dec 6
Class canceled