15-851
Computation & Deduction
Spring 1997
Frank Pfenning

Suggested Projects

The project should consist of a term paper and an implementation in Elf. The term paper should summarize and explain a piece of research in the theory of programming languages or logics. Typically, the informal development follows a given research paper or report. The Elf implementation should formalize the language, judgments, algorithms, and metatheory to the extent that this is feasible for a term project. Each student should propose his or her own term project. Some topics are suggested below, but they should not be considered as canonical or exhaustive. For bibliographic references (under permanent construction), please see the DVI, PostScript, or PDF version of the file, or the BibTeX source.
  1. A calculus of explicit substitutions [Abadi, Cardelli, Curien, & Levy 91]
  2. A calculus of objects [Abadi & Cardelli 94]
  3. Coherence of a language with subtyping and implicit coercions [Breazu-Tannen, Coquand, Gunter, & Scedrov 91]
  4. A lambda-calculus with intersection types [Coppo, Dezani-Ciancaglini, & Venneri 81] [Reynolds 91]
  5. A logic for parametricity [Plotkin & Abadi 93]
  6. A lambda-calculus with names [Odersky 94]
  7. First-order unification [Snyder & Gallier 88]
  8. Higher-order logic programming [Miller, Nadathur, Pfenning, & Scedrov 91]
  9. Program analysis and optimization
    1. Binding-time analysis [Nielson & Nielson 92] [Davies & Pfenning 96] [Davies 96] [Hatcliff 96]
    2. Abstract interpretation [Cousot & Cousot 77]
    3. Strictness analysis [Hankin & Metayer 94]
  10. The Categorical Abstract Machine [Cousineau, Curien, & Mauny 87]
  11. Closure conversion and lambda-lifting [Reynolds 72]
  12. Extending Mini-ML (each topic below is a possible separate project)
    1. with exceptions
    2. with references
    3. with general datatype definitions
    4. overloading and typecase
  13. Mini-Forsythe [Reynolds 88]
  14. Elementary notions of rewrite systems [Bachmair 91]
  15. Modal logic and Kripke semantics [Basin, Matthews, Vigano 96]
  16. Polymorphic recursion and semi-unification [Henglein 93, TOPLAS]
  17. Lazy evaluation [Launchbury 93]
  18. Pure functional programming and monads [Filinski 94]
  19. Evaluation based on evaluation contexts [Felleisen]
  20. Logical interpretations [Goedel, Friedman]
  21. Linear logic [Girard 87, Pfenning 96]
  22. Computational interpretations of classical logic [Ong 96, Ong & Stewart 97]
  23. Pi-calculus [Milner]
  24. Theorem proving
    1. via tactics
    2. via iterative deepening
    3. other methods
    4. induction
    5. Presburger arithmetic
    6. decision procedures for fragments
  25. Elementary category theory [Rydeheard & Burstall, Gehrke]
  26. Type-directed compilation [Morrisett 95]
  27. Shape types [Fradet & Metayer 97]
  28. Relational parametricity and units of measure [Kennedy 97]
  29. Type directed partial evaluation [Danvy 96]
  30. Typed closure conversion [Minamide, Morrisett, Harper 96]
  31. Call-by-value lambda-calculus [Plotkin 75, Sabry & Wadler 96]
  32. Call-by-need lambda-calculus [Ariola et al 95]
  33. Recursive types [Abadi & Fiore 96]
  34. ``Logical'' logic program compilation [Pfenning 97]
  35. LF in Elf
  36. Elf in Elf

[ C&D Home | Schedule | Code | Assignments | Notes | Projects | Elf ]

© Frank Pfenning 1992-1997
fp@cs