Graduate Student Positions in Object-Oriented Programming Systems
We're seeking applications from prospective graduate students who are
interested in pursuing a Ph.D. in the area of object-oriented languages,
analysis, and software engineering.
Graduate students will join an active and growing research program in
object-oriented technology at Carnegie Mellon University. Current
research projects include:
Modular reasoning about the correctness properties of object-oriented
systems is challenging due to the coupling introduced by the
inheritance mechanism as well as the references and aliasing between
objects. We intend to address these challenges by decoupling a
class from its subclasses using a richer notion of protected interface,
and by reasoning about multi-object systems using new techniques in
ownership type systems and separation logic. Our long-term goal
is to develop a comprehensive proof theory for object-oriented systems,
along with tools and type systems that aid in both lightweight
reasoning and full verification of programs.
The Fluid Project is developing tools to assist software developers in
creating analytic assurances regarding dependability-related program
properties that defy traditional testing and inspection approaches.
These are properties that are non-local in character, in that there may
not be a single place in code where they are manifest. Techniques for
modeling and assurance have been developed for a variety of properties
related to race conditions (including lock-based and non-lock-based
concurrency), unshared references to objects, effects, appropriate
typing, realtime threading policies, and other properties. A principal
design concern is adoptability by software developers. Unlike other
approaches based on expressing models through annotation, a strict
principle of incrementality is respected, in which any increment of
effort requested of a programmer must almost immediately yield some
increment of value. Scalability is also a principal concern -- the
analyses used in the Fluid tool all support composability, in some
cases through the use of annotations as cutpoints.
The ArchJava programming language integrates a specification of
software architecture into Java implementation code, and uses a type
system to ensure that all run-time communication conforms to
architectural constraints. Preliminary experience with ArchJava
suggests that the language is practical and can aid in software
evolution tasks.
Current ArchJava research focuses on providing tools for
reverse-engineering the architecture of Java programs, modeling dynamic
and distributed architectures, and checking architectural properties
such as architectural style and sequences of architectural events.
The initial focus of this new project has been on formally modeling the
semantics of aspect-oriented programming languages and developing a
module system that provides strong encapsulation guarantees for
aspect-oriented programs. In the future, the group's research
will also include developing new aspect-oriented language features,
evaluating aspects in practical systems, and analyzing aspect-oriented
software.
APPLICATION INFORMATION
Interested applicants should apply to the Ph.D. program in either
computer science or software engineering, or both. Applicants with
significant experience in industry will find that experience is
particularly valued in the software engineering program, while
applicants with a primary interest in language theory may find the
computer science program more appropriate. All applications are
due by December 15th, 2004.
Further information:
Contact Jonathan Aldrich
(jonathan.aldrich@cs.cmu.edu)