Depedently Typed Programming

In the Spring of 2010, I will teach a a graduate CS 520 (CRN 64271) and senior CS 410 (CRN 64270) seminar about dependently types programing. I this course we will use the Omega language which supports a simple form of dependently typed programming which is very similar to Haskell.

Here are some of the topics we might cover.

  1. The Curry-Howard isomorphism.
  2. Tagless typed interpreters.
  3. Data-generic programming (i.e. Maps at all types, generic show, generic marshalling).
  4. Size generic programming (i.e. List based maps for 1,2,3, ... lists).
  5. Typed meta-programming (i.e. programs that write programs).
  6. Logical relations as witness types.
  7. Programming at the type level.
  8. Types and hardware descriptions.
  9. Programming language meta-theory (Subject reduction).

Here are links to some of the materials we will use.

  1. Omega users manual
  2. Programming in Omega
  3. Generic Programming in Omega.

Back to Tim Sheard's web-page.