Final grades are now posted on Blackboard.
Assignment I, handed out on 01/20 and due on 02/01
Assignment II, handed out on 02/03 and due on 02/15
Solution to Problem 1b on Assignment II
Assignment III, handed out on 02/17 and due on 03/01
Assignment IV, handed out on 03/03 and due on 03/22
Assignment V, handed out on 03/24 and due on 04/05
Assignment VI, handed out on 04/07 and due on 04/19
Assignment VII, handed out on 04/21 and due on 05/05
Please use Blackboard to check your grades.
Date | Topics | Reading |
---|---|---|
01/11 | Intro; Review | Class notes |
01/13 | Review; Arrays | Class notes |
01/18 | Arrays; Policy-specification languages | Sections 1-3 of Composing Expressive Runtime Security Policies |
01/20 | Pattern matching | Section 4 and Appendices of Composing Expressive Runtime Security Policies |
01/25 | Normalization | Normalization handout |
01/27 | Curry-Howard Isomorphism | Proofs are Programs: 19th Century Logic and 21st Century Computing |
02/01 | Fixed-point combinators; Subtyping | Fixed-point combinator handout |
02/03 | Assignment I solutions | Class notes |
02/08 | Subtyping | Class notes |
02/10 | Subtyping | Class notes |
02/15 | Subtyping | Class notes |
02/17 | Assignment II solutions | Class notes |
02/22 | Objects (translated into extended diML) | Class notes |
02/24 | Objects in extended diML; Featherweight Java | Sections 1-2 of Featherweight Java: A Minimal Core Calculus for Java and GJ |
03/01 | Subtyping iso-recursive types, revisited | Class notes |
03/03 | Featherweight Java | Class notes |
03/08 | Assignment III solutions | Class notes |
03/22 | Haskell; Lazy evaluation | Sections 1-4 of A Gentle Introduction to Haskell 98 |
03/24 | Haskell; Type classes; Kinds | Sections 5-6 of A Gentle Introduction to Haskell 98 |
03/29 | Assignment IV solutions; Lazy types in diML | Class notes |
03/31 | Haskell; Monads in diML | Sections 7-9 of A Gentle Introduction to Haskell 98 |
04/05 | Monads; Type-and-effect systems | Class notes |
04/07 | Assignment V solutions; Dynamic typing in diML | Class notes |
04/12 | Dynamic typing | Class notes |
04/14 | Polymorphism; Universal types in diML | Class notes |
04/19 | Parametricity; Abstract data types; Existential types in diML | Class notes |
04/21 | Existential types in diML | Class notes |
04/26 | Type inference (constraint generation) | Class notes |
04/28 | Type inference (unification) | Class notes |