Calendar

The following table gives the topics we will cover in the class and the approximate number of lectures to be spent on each topic.  The "Reading" column lists the reading material for the class. You should do the reading for a class  or lab before you attend it

This schedule is tentative: as the course progresses, I'll revise/refine it as needed.  The entries above the "blank" table row are reasonably polished; the entries below are more tentative and likely to change

 

Dates Topics Readings
8/27 Course overview
  TYPES
8/29 Extended example

What are types? Typed and untyped languages, type safety, type equality, static and dynamic typing, strong and weak typing.

Chapter 1 
8/31 Objects, classes, subclasses, and subtypes 2.1, 2.2, 2.3 and Snyder (OOPSLA 86)
9/5 Covariance and contravariance 2.4
9/7 Overloading versus overriding

Assignment 1 due

2.5
9/10 Type problems in O-O languages Chapter 3
9/12 Adding expressiveness to O-O languages/Java 4.1 and Java Generics tutorial
9/14 Adding expressiveness to O-O languages/Eiffel 4.2
9/17 Adding expressiveness to O-O languages (cont) Chambers
9/19 Subtyping of non-object types Chapter 5
9/21 Subtyping continued

Assignment 2 due

 
9/24 Discuss handout from previous class on explicit and implicit reference conversions in C# and Java  
9/26 Improving C++'s generics Gregor et al. (Sections 1-3)
9/28 Type restrictions on subclasses, Variations in O-O languages Chapter 6
10/1 Variations in O-O languages Chapter 7
10/3 Midterm 1.  You must bring a blue book.  
10/5 Dynamically-typed O-O languages The Smalltalk-80 system (Byte)  
10/8 Guest lecture by Jeremy Siek: Gradual typing Read Jeremy's paper
10/10 Adding expressiveness to O-O languages (Discussion) Growing a language, Guy Steele
10/12 Lambda calculus. Key concepts: lambda, application, currying, typing rules, free variables

Assignment 3 due

8.1 until "substitution" on page 128
10/15 Evaluating lambda calculus expressions.  Key concepts:   substitution, reduction Remainder of 8.1
10/17 Type checking lambda calculus.  Key concepts: typing for record, union, etc. types 8.2
10/19 Continuation of lambda calculus with record, etc.  
10/22 Parametric polymorphism

 

9.1
10/24 Recursive expressions 9.2
10/26 Parametric polymorphism and information hiding

Assignment 4 due

9.3
10/29 Pack and Unpack continued  
10/31 Bounded quantification 9.4
11/2 SML SML tutorial, Harper upto and including page 40
11/5 Polymorphism in SML  
11/7 Midterm 2.  You must bring a blue book.  
11/9 Information hiding in SML Christoph's notes
11/12 SOOL Chapter 10
11/14 SOOL (cont)  
11/16 Assignment 5 due  
11/26 Translating SOOL types 11.1, 11.2
11/28 Modeling SOOL expressions 11.3
11/30 Modeling classes 11.4, 11.5
12/3 Improved modeling for classes 12.1, 12.2
12/5 Summary of translation 12.3
12/7 Soundness

Assignment 6 due

13.1 (just browse the theorems but skip their proofs), 13.2, 13.3, 13.4
12/10 Continuing soundness discussion  
12/12 Super 14.1
12/14 Nil

Practice questions (these will not be graded and I'll keep adding to this list as I come up with ideas)

14.2
12/20 Final exam at 7:30 a.m..  You must bring a blue book.