COS 598E:Foundations of Language-Based Security





During the second half of the course, students (individually or in pairs) will engage in a research project of their choice. Projects may be implementation-oriented, theoretically-oriented, application-driven or teaching-oriented. Students are encouraged to come up with their own project ideas based on topics we have covered in class or related topics with connections to other research around the department. Alternatively, students may investigate one of the ideas listed below (the references given below are just a starting point for a literature search).

Project Ideas

Study Girard's method of candidates, an extension of our logical relations arguments to the polymorphic lambda calculus.  Describe the technique in detail and apply it to some interesting problems.  Teach it to the class.
Girard, Taylor and Lafont. Proofs and Types.
Study some other interesting proof technique such as techniques based on parametricity, singleton types or contextual equivalence.  Apply it to some interesting problems and teach it to the class.
Design a module system for a dependently typed language.  Consider either SML-style modules or Flatt-Felleisen units.
Harper, Mitchell and Moggi.  Higher-order Modules and the Phase Distinction.  
Harper and Stone.  A Type-Theoretic Interpretation of Standard ML.
Flatt and Feleisen.  Units: Cool Modules for HOT Languages.
Reid, Flatt, Stoller, Lepreau, and Eide.  Knit: Component Composition for Systems Software.
Design an object-oriented, dependently typed language.  Consider basing your language on Featherweight Java or Abadi-Cardelli objects.
Pierce.  Types for Programming Languages.
Abadi and Cardelli.  A theory of objects.
Propose a language design that admits both features for tracking linear resources and exceptions.  Consider using dynamic techniques to resolve the difficulties.
Walker and Watkins.  On regions and linear types.
Walker, Crary and Morrisett.  Typed Memory Management via Static Capabilities.
Deline and Fahndrich.  Vault.
Implement a theorem prover for (a fragment of) linear logic, ordered logic, bunched logic, modal logic.
Frank Pfenning.  Lecture notes on theorem proving.
Frank Pfenning.  Lecture notes on linear logic.
Use Myer's Java toolkit to extend core Java with linear types, run-time security monitoring, dependent types, or any other feature you can think of that will improve the reliability or security of Java programs.
Andrew Myers home page.
Design any type system for CML or some other concurrent language that uses linear logic to control access to shared mutable data structures.
Samin Ishtiaq and Peter O'Hearn.  BI as an Assertion Language for Mutable Data Structures.
Walker.  Unpublished note on mechanical reasoning on shared mutable data structures.
Use an experimental safe systems language such as Cyclone or Vault to write some interesting systems application that is normally written in an unsafe language.  How does the type system help or hurt?  How is performance effected?  Design an extension of language to verify some important property in your particular domain.
For Cyclone, see
For Vault, see
Use a logical framework, such as LF or concurrent LF to encode a programming system and reason about some of its properties.  Consider encoding a concurrent system such as the Spy Calculus or Mobile Ambients


There are three parts to the project.

  1. A one-page proposal outlining the project goals and major phases in the project development.  Proposals are due by March 27th and are worth 10% of the final grade.  
  2. A presentation in class describing the area of research.  Presentations will be given during the second half of the semester.  The most important component of the presentation is how well you teach the subject matter to me and your classmates (20% of final).  At least two days before giving the presentation, you must run through it with me.  Make an appointment.
  3. A report and/or a system demo due during the last week of classes (40% of final).  Reports on purely theoretical topics should be at least 5000 words, although the length will vary depending upon the topic.

Late projects will only be accepted under extraordinary circumstances.