Research Experiences for Undergraduates and Masters Students

Plaid Research Group: Programming Languages and Software Engineering

The Plaid research group does research applying programming language techniques to software engineering problems.  We work on all kinds of languages, but many projects focus in particular on object-oriented systems.  Projects range from foundational development of new object models and core calculi, to pragmatic language extensions or analyses that can verify properties of programs written in industrial languages like Java.  The group name comes from Plaid, a new object-oriented language currently in development based on technologies developed within the group and elsewhere.

Logistics

We expect to have 1-2 research opportunities open for Summer 2011, funded primarily from NSF's Research Experiences for Undergraduates (REU) program. REU funding is restricted to United States citizens and permanent residents; non-citizens/non-residents are welcome to apply, but a paid position will be contingent on finding another appropriate source of funding. Positions are open until filled, and compensation is negotiable (or students can get course credit).  Please contact jonathan.aldrich@cs.cmu.edu to apply.

The NSF REU program emphasizes broadening participation in computing, and accordingly members of underrepresented groups are especially encouraged to apply.

Current Projects

We have multiple opportunities available in the general area of programming language and software engineering research.  Descriptions of some potential projects are below, but I'm happy to discuss alternative possibilities as well; just contact me if you're interested.

1. Design and Implementation of the Plaid Language

Plaid is a new general-purpose programming language that epitomizes Typestate-Oriented Programming, a generalization of the object-oriented, functional, and imperative paradigms.  In Plaid, a state is like a class, with methods and fields, except that the state of an object can change over time.  This allows interesting new ways of designing programs, and creates new challenges for efficient implementation and for a linear-logic based type system that can statically track the changing state of objects.

We are looking for people to work on a compiler and typechecker for the language, as well as involvement in the language design and the type theory for students with the right background (courses in PL or compilers are a plus).  For more information, see the Plaid language web page.

2. Improved Error Messages in the Fusion Protocol Checker

Our studies of industrial software frameworks has shown that the protocols to use them are extremely complex and easy for programmers to misuse. To prevent developers from misusing these protocols, we created the Fusion system. Fusion allows framework developers to specify the complex protocols to use the framework, and an associated static analysis runs at compile time to ensure that plugins meet these specifications. Fusion is unique among specification and static analysis systems in that only the framework is specified; the goal of the system is to make it usable by plugin developers that have little knowledge of the framework and no knowledge of Fusion specifications.

However, plugin developers must currently be able to view and understand the specification when the static analysis detects an error. This is a major hindrance to adoptability, and our proposed research seeks to solve this problem. The impact of this research will affect not only Fusion, but many other specification language and static analysis systems as well.

This research will seek to make the error messages of Fusion more understandable through visualizations and through task-directed error messages. Specific sub problems and goals are:

The ideal student for this project will have enough programming maturity to work on a large project that uses several software frameworks. The student should be interested in a breadth of software engineering research, as this project spans from logic and programming language research to human-computer interaction. However, the project goals can be adapted for a student who is interested only in deep study of one of these areas.

Past Undergraduate Research Projects

We've had a lot of great REUs in the past.  Here are some of the undergraduates that have done research in the Plaid group:
These students have also published a number of peer-reviewed papers:
So--it's a great group to do research in.  We'd love to have you join us!  Contact jonathan.aldrich@cs.cmu.edu for more information.