Here is a brief overview of some of my research work, including links to my papers. Please see my vita for a bibliography of my papers. My research statement is also on-line.
Timely Dissemination
Documents are posted here to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. These works may not be reposted without the explicit permission of the copyright holder.
The definitive versions of all published papers appearing here are those that actually appeared in print. In some cases, the versions presented here may differ in minor ways. When citing any published papers provided here, please reference the published versions.
This statement of fair use is derived from one posted by The Laboratory for Empirically-based Software Quality Research and Development at the University of Nebraska, Lincoln.
Thesis and Dissertation Research
Modular Reasoning for Aspect-Oriented Programming
Gary Leavens and I are working on extending the modular reasoning benefits of the behavioral subtyping discipline to aspect-oriented programming (particularly AspectJ). We have also worked with Mitch Wand on a core calculus for studying the equational reasoning properties of aspect-oriented languages. More information on the calculus, including a Java-based implementation of the reduction rules, is available from the parameterized aspect calculus page. Here is a listing of my papers on modular, aspect-oriented reasoning:
- MiniMAO: Investigating the Semantics of Proceed, by Curtis Clifton and Gary T. Leavens—Extended version of paper presented at FOAL 2005 and submitted for journal publication
- Domains of Discourse: Concern Annotations for Program Understanding, by Curtis Clifton—Poster for AOSD 2004
- Obliviousness, Modular Reasoning, and the Behavioral Subtyping Analogy, by Curtis Clifton and Gary T. Leavens—Technical Report, December 2003
- Parameterized Aspect Calculus: A Core Calculus for the Direct Study of Aspect-Oriented Languages, by Curtis Clifton, Gary T. Leavens, and Mitchell Wand—Technical Report, November 2003
- Formal Definition of the Parameterized Aspect Calculus, by Curtis Clifton, Gary T. Leavens, and Mitchell Wand—Technical Report, November 2003
- Obliviousness, Modular Reasoning, and the Behavioral Subtyping Analogy, by Curtis Clifton and Gary T. Leavens—SPLAT 2003
- FOAL 2003 Proceedings: Foundations of Aspect-Oriented Languages Workshop at AOSD 2003, by Gary T. Leavens and Curtis Clifton, editors—FOAL 2003
- Spectators and Assistants: Enabling Modular Aspect-Oriented Reasoning, by Curtis Clifton and Gary T. Leavens—Technical Report, October 2002
- Observers and Assistants: A Proposal for Modular Aspect-Oriented Reasoning, by Curtis Clifton and Gary T. Leavens—FOAL 2002
MultiJava: Open Classes and Multiple Dispatch for Java
The MultiJava Project web site, which I maintain, is the primary source for information on MultiJava. Here is a listing of papers on MultiJava that I have authored or co-authored:
- MultiJava: Design Rationale, Compiler Implementation, and Applications, by Curtis Clifton, Todd Millstein, Gary T. Leavens, and Craig Chambers—Pre-print of paper accepted to TOPLAS, under revision, December 2004
- Generalized Open Classes, Multimethods, and Modularity: Compilation, Typechecking, and Reasoning in MultiJava, by Curtis Clifton—Dissertation proposal, January 2003
- MultiJava: Open classes and multiple dispatch for Java, by Curtis Clifton, Todd Millstein, Gary T. Leavens, and Craig Chambers—OOPSLA 2001 Poster
- MultiJava: Design, implementation, and evaluation of a Java-compatible language supporting modular open classes and symmetric multiple dispatch, by Curtis Clifton—Masters Thesis, December 2001
- MultiJava: Modular Open Classes and Symmetric Multiple Dispatch for Java, by Curtis Clifton, Gary T. Leavens, Craig Chambers, and Todd Millstein—OOPSLA 2000
JML: Behavioral Specification and Design-by-Contract for Java
I have participated in the development of the Java Modeling Language, or JML. JML is a specification language for Java. JML supports specifications ranging from simple design-by-contract (think pre- and post-conditions) to full abstract modelling, which allows complete formal specification of behavior without exposing the implementation. I was a co-author of the following paper:
- How the Design of JML Accommodates Both Runtime Assertion Checking and Formal Verification, by Gary T. Leavens, Yoonsik Cheon, Curtis Clifton, Clyde Ruby, and David R. Cok—FMCO 2002, to appear in Science of Computer Programming 2004
- JML Reference Manual, by Gary T. Leavens, Eric Poll, Curtis Clifton, Yoonsik Cheon, Clyde Ruby, David Cok, Joseph Kiniry—Preliminary Draft, April 2003
Course Projects
Set Measure via Splitting Operators—A Scheme Implementation
This was a class project for ComS 633, Randomness in Computation, based on the resource bounded measure research of Jack Lutz of the Department of Computer Science at ISU.
For the project I developed a
presentation on set measure and implemented martingales, measurements, and infinite
sequences in Scheme. This code is currently not in the public
domain, except for the random.scm module, generously made
available by John David
Stone of Grinnell College.
I fully intend to release my code under the GPL when time and interest
permit. Thus if you are interested in using the code please let me
know.
A Polymorphic Typechecking System for Scheme
This was an independent study project in my first year of graduate school. I worked with Gary T. Leavens to improve a polymorphic inference-based type-checker for the Scheme programming language. The type-checking system has been used for the department's principles of programming languages course.
I was responsible for several improvements to the system including:
- an improved mutual recursion inference algorithm that reduced the worst-case performance from exponential to linear time,
- improved abstract data types that resulted in improved type-checking speed, and
- a revised language designed that allowed users to define multiple abstract data types.
Other Project Pages
I have also participated in several projects that are no longer active, but still have their own web pages.
- The StickSync Project, a dual-purpose project, developing a running example for an undergraduate course in object oriented analysis and design and developing an application for synchronizing files between a PC and a Mac using portable mass-storage devices.
- A JDE in XML, exploring the relationship of XML trees and abstract syntax trees in creating a Java development environment
- Quixote, The Quixo Temporal-difference Environment, a game-independent machine learning framework written in Ruby
Page last modified Monday, March 21, 2005.