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.

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]

Thu, Aug 31:
The Lambda Calculus: syntax and alphabeta conversion.
The Recursive functions as the class of functions obtained from the initial functions,
composition, primitive recursion and minimalization.
[Barendregt84, 2.1, 6.13
or Barendregt92, 2.12.
Lecture Notes 2]

Tue, Sep 5:
The theorem of Kleene: all recursive functions are lambdadefinable.
The concept of lambda definability.
Lambda definability of the initial functions, of the composition, and of the
primitive recursion. The fixpoint operator.
[Barendregt84, 6.13
or Barendregt92, 2.2.
Lecture Notes 3 and 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.13
or Barendregt92, 2.2.
Lecture Notes 3 and 4]
Assignment 1 distributed. Due Sep 19 in class.

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

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]

Tue, Sep 19:
The notion of beta reduction.
The ChurchRosser 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.12
or Barendregt92, 2.3.
Lecture Notes 7]

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
 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.12.
Lecture Notes 8, 9, 10, 11, and 12]
 Thu, Oct 5
FirstOrder Unification.
The MartelliMontanari 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
 Tue, Oct 17
Types inhabited and not inhabited.
The subject reduction theorem.
[Barendregt92, 3.12.
Lecture Notes 8, 9, 10, 11, and 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.12.
Lecture Notes 8, 9, 10, 11, and 12]
 Tue, Oct 24
Midterm exam (in class).
 Thu, Oct 26
The CurryHoward isomorphism. Types as formulas, programs as proofs,
reduction as proofnormalization.
Extending the isomorphism. Sum and product types
(aka disjoint union and cartesian product).
[Gallier95,
Lecture Notes 14.]
 Tue, Oct 31
Presentation of
projects
 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]
 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]

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 environmentbased semantics for PCF.
[Lecture Notes 18 and 19]
Assignment 4 distributed. Due Nov 21 in class.

Tue, Nov 14
An environmentbased semantics for PCF (cont'ed).
Closures and recursive closures.
Lazy and eager application rules.
An ML interpreter for eager PCF designed following the environmentbased semantics.
[Lecture Notes 18 and 19]

Thu, Nov 16
An ML interpreter for eager PCF (cont'ed).
[Lecture Notes 18 and 19]

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)

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].

Thu, Nov 30
Bisimulation as a coinductive 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].

Tue, Dec 5
The algebraic theory of CCS.
Example: A scheduler. Specification and intermediate implementation.
[Milner89, Ch. 5].
Implementation in Java of the choicefree subset of CCS.
Thu, Dec 7 No class
Tue, Dec 12
Project due.