Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Curtis Clifton is active.

Publication


Featured researches published by Curtis Clifton.


ACM Transactions on Programming Languages and Systems | 2006

MultiJava: Design rationale, compiler implementation, and applications

Curtis Clifton; Todd D. Millstein; Gary T. Leavens; Craig Chambers

MultiJava is a conservative extension of the Java programming language that adds symmetric multiple dispatch and open classes. Among other benefits, multiple dispatch provides a solution to the binary method problem. Open classes provide a solution to the extensibility problem of object-oriented programming languages, allowing the modular addition of both new types and new operations to an existing type hierarchy. This article illustrates and motivates the design of MultiJava and describes its modular static typechecking and modular compilation strategies. Although MultiJava extends Java, the key ideas of the language design are applicable to other object-oriented languages, such as C# and C++, and even, with some modifications, to functional languages such as ML.This article also discusses the variety of application domains in which MultiJava has been successfully used by others, including pervasive computing, graphical user interfaces, and compilers. MultiJava allows users to express desired programming idioms in a way that is declarative and supports static typechecking, in contrast to the tedious and type-unsafe workarounds required in Java. MultiJava also provides opportunities for new kinds of extensibility that are not easily available in Java.


Science of Computer Programming | 2006

MiniMAO 1 : an imperative core language for studying aspect-oriented reasonings

Curtis Clifton; Gary T. Leavens

This paper describes MiniMAO1, a core aspect-oriented language. Unlike previous aspect-oriented calculi and core languages, MiniMAO1 allows around advice to change the target object of an advised operation before proceeding. MiniMAO1 accurately models the ways AspectJ allows changing the target object, e.g., at call join points. Practical uses for changing the target object using advice include proxies and other wrapper objects.MiniMAO1 was designed to serve as a core language for studying modular specification and verification in the aspect-oriented paradigm. To this end MiniMAO1 • has an imperative, reference-based semantics, • models the control-flow effects of changing target object bindings with advice, and • has a safe static type system. The first two features make MiniMAO1 suitable for the study of aspect-oriented mechanisms, such as those found in AspectJ. These features are important for studying the interaction of aspect-oriented language features with modular specification and verification. A statically type-safe language is also important for such research. AspectJ does not have a safe static type system. To achieve static type safety MiniMAO1 uses a slightly different form of proceed and advice binding than in AspectJ. These changes are sufficient for static type safety, but we do not claim that they are necessary; a less restrictive type system might suffice.This paper gives an operational semantics, type system, and proof of soundness for MiniMAO1.


european conference on object oriented programming | 2007

MAO: ownership and effects for more effective reasoning about aspects

Curtis Clifton; Gary T. Leavens; James Noble

Aspect-oriented advice increases the number of places one must consider during reasoning, since advice may affect all method calls and field accesses. MAO, a new variant of AspectJ, demonstrates how to simplify reasoning by allowing programmers, if they choose, to declare limits on the control and heap effects of advice. Heap effects, such as assignment to object fields, are specified using concern domains--declared partitions of the heap. By declaring the concern domains affected by methods and advice, programmers can separate objects owned by the base program and by various aspects. When desired, programmers can also use such concern domain annotations to check that advice cannot interfere with the base program or with other aspects. Besides allowing programmers to declare how concerns interact in a program, concern domains also support a simple kind of semantic pointcut. These features make reasoning about control and heap effects easier.


Proceedings of the 2010 ITiCSE working group reports on | 2010

Strategies for preparing computer science students for the multicore world

Richard A. Brown; Elizabeth Shoop; Joel C. Adams; Curtis Clifton; Mark K. Gardner; Michael Haupt; Peter Hinsbeeck

Multicore computers have become standard, and the number of cores per computer is rising rapidly. How does the new demand for understanding of parallel computing impact computer science education? In this paper, we examine several aspects of this question: (i) What parallelism body of knowledge do todayâ s students need to learn? (ii) How might these concepts and practices be incorporated into the computer science curriculum? (iii) What resources will support computer science educators, including non-specialists, to teach parallel computing? (iv) What systemic obstacles impede this change, and how might they be overcome? We address these concerns as an initial framework for responding to the urgent challenge of injecting parallelism into computer science curricula


technical symposium on computer science education | 2007

Subverting the fundamentals sequence: using version control to enhance course management

Curtis Clifton; Lisa C. Kaczmarczyk; Michael Mrozek

Instructors of introductory courses face many challenges, not the least of which is dealing with a large volume of course materials and students with differing backgrounds. There are often too many administrative demands to have as much time for creative pedagogy as one would like. Team projects, and complex realistic projects in general, increase psychic demands, and conflicting schedules make creative collaboration with other instructors impossible. In order to address these issues, we need to find ways to increase effective handling of course development, to free up time for creative pedagogical efforts. This paper reports on an exploratory project in which two instructors and an undergraduate teaching assistant used the Subversion version control system to collaborate remotely on developing and running two CS1 classes. We focus on the ease and efficiency of course management using Subversion, providing a new perspective on how version control can enhance teaching.


verified software: theories, tools, experiments | 2005

Lessons from the JML Project

Gary T. Leavens; Curtis Clifton

To have impact, a grand challenge should provide a way for diverse research to be integrated in a synergistic fashion. Synergy in the JML project comes from a shared specification language, and thus holds several lessons for the verifying compiler grand challenge. An important lesson is that the project should focus considerable resources on specification language design, which still contains many open research problems. Another important lesson is that, to support such a specification language, the project needs to involve groups doing research on extensible compilers and integrated development environments.


technical symposium on computer science education | 2009

Introducing PyLighter: dynamic code highlighter

Michael G. Boland; Curtis Clifton

Like a screenplay, a program is both a static artifact and instructions for a dynamic performance. This duality can keep laypeople from appreciating the complexity of software systems and can be a stumbling block for novice programmers. PyLighter lets laypeople and novice programmers perceive the relationship between static Python code and its execution. PyLighter works with everything from simple console applications to arcade-style games, and because PyLighter is easy to adopt and use, instructors can integrate it into any Python-based introductory course without changing the rest of their syllabus.


conference on object-oriented programming systems, languages, and applications | 2000

MultiJava: modular open classes and symmetric multiple dispatch for Java

Curtis Clifton; Gary T. Leavens; Craig Chambers; Todd D. Millstein


FOAL | 2002

Observers and Assistants: A Proposal for Modular Aspect-Oriented Reasoning

Curtis Clifton; Gary T. Leavens


Archive | 2003

Obliviousness, Modular Reasoning, and the Behavioral Subtyping Analogy

Curtis Clifton; Gary T. Leavens

Collaboration


Dive into the Curtis Clifton's collaboration.

Top Co-Authors

Avatar

Gary T. Leavens

University of Central Florida

View shared research outputs
Top Co-Authors

Avatar

Craig Chambers

University of Washington

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Yoonsik Cheon

University of Texas at El Paso

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Lisa C. Kaczmarczyk

Rose-Hulman Institute of Technology

View shared research outputs
Researchain Logo
Decentralizing Knowledge