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:
alpha-beta conversion.
[Barendregt84,
1.1 (Introduction), 2.1, 6.1-3 or
Barendregt92,
2.1-2.
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.1-3
or Barendregt92, 2.2.
Lecture Notes 2]
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.
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]
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]
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.
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.1-2.
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.
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.
Tue, Oct 2
The unification algorithm (cont'ed).
The subject reduction theorem.
[Barendregt92, 3.1-2.
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.1-2.
Lecture Notes 10 and 11]
Tue, Oct 9 Fall break
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.
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 Curry-Howard 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 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.
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].
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 pi-calculus.
[Milner99]
-
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
-
Thu, Dec 6
Class canceled