CSCI B522 --- Programming Language Foundations

Amr Sabry, LH230C, 5-3668, sabry@cs

Office hours:
Just drop by.

Textbooks and References:
Robert Harper, Programming Languages: Theory and Practice, Classpak.

You will probably need some references on ML. Pick something from the SML/NJ page or the Objective Caml page. The book uses SML/NJ but I want to experiment with the Objective Caml dialect. For most of the course the differences between the two dialects should be minor. We might also use Haskell and Java. You all know about Java. For Haskell, look at the Haskell page.

If time permits (and there is interest) I will also use some chapters from a draft book by Benjamin C. Pierce called Type Systems for Programming Languages.

I will also most likely hand out some papers.

There will be a mixture of programming assignments and written exercises.

Grading Policy:
Your grade will be calculated as follows:

Tentative Schedule

Date Topic
1/9 Introduction; ML; Induction (Ch. 1)
1/11 Concrete and Abstract Syntax (Ch. 2)
1/16 No class
1/18 No class
1/23 MiniML Syntax (Ch. 3)
1/25 MiniML Types (Ch. 4)
1/30 MiniML Dynamic Semantics (Ch. 5)
2/1 MiniML Type Safety (Ch. 6)
2/6 Products, Sums, and Recursive Types (Ch. 7)
2/8 Products, Sums, and Recursive Types (Ch. 7)
2/13 Evaluation Semantics and Dynamic Typing (Ch. 8)
2/15 Java Type Safety; Security
2/20 Computational Effects (Ch. 10)
2/22 Computational Effects (Ch. 10)
2/27 Monads (Introduction)
3/1 Monads (Theory)
3/6 Monads (Haskell and lazy evaluation)
3/8 Monads (Haskell and type classes; encapsulation)
3/13 Spring break
3/15 Spring break
3/20 Type Reconstruction (Ch. 13)
3/22 Type Reconstruction (Ch. 13)
3/27 Expression Equivalence (Ch. 14)
3/29 Expression Equivalence (Ch. 14)
4/3 Polymorphism (Ch. 15)
4/5 Polymorphism (Ch. 15)
4/10 Data Abstraction (Ch. 16)
4/12 Data Abstraction (Ch. 16)
4/17 Inheritance and Subtyping (Ch. 17)
4/19 Inheritance and Subtyping (Ch. 17)
4/24 Featherweight Java (Ch. 18)
4/26 Featherweight Java (Ch. 18)
5/1 Final exam from 8:00 to 10:00