As an undergraduate at MIT and a research intern at Xerox PARC, I have developed a strong interest in computer languages suitable for building large software systems. As a graduate student, I would like to study the design and implementation of such languages.
My experience in the research community began the first summer I was at PARC. Along with my supervisor, Dennis Arnon, I designed and built a system which displays the topological structure of algebraic surfaces. The resulting software package enables mathematicians to visualize such structures by interactively exploring them in three-dimensional space. We wrote a paper describing the algorithms and user interface of this system; it was recently accepted by the 1988 International Symposium on Symbolic and Algebraic Computation. A videotape which we made to describe and demonstrate our work was presented at the symposium.
While using two of the programming languages at PARC, Smalltalk and Cedar, I became intrigued with the languages themselves. Both are used as kernel languages for large programming environments, and both have features which support this purpose. When I returned to PARC for my second assignment, I looked for a project related to my interests in programming languages. I joined a group who was designing a lexically scoped concurrent logic programming language, Lexical Flat Concurrent Prolog. My project was to write a translator from Lexical FCP into an existing implementation of flat FCP. In the course of designing this compiler, I encountered various problems with the specification of Lexical FCP; as a result, our group spent much of the summer redefining and redesigning the language to make it implementable. By the end of the summer, I had a working translator. I presented our work at an open systems workshop held in conjunction with the 1987 Symposium on Logic Programming. I am currently writing a paper describing Lexical FCP and its potential applications as a kernel language for distributed systems.
This summer, my third at PARC, I have been designing and implementing part of a new, experimental Cedar compiler. Cedar is a strongly typed, Algol-like language used within the Xerox research organization. The compiler is implemented in Casaba, a compiler-building language developed by my supervisor, Howard Sturgis. Casaba is a functional programming language which allows side-effecting primitive operations, so long as the compiler can prove (based on user declarations) that the side effects do not affect the functional behavior of a program. Our goals are to study the suitability of a language like Casaba for implementing a large compiler, and to actually produce a principled implementation of a Cedar compiler that will be easy to understand, modify, and experiment with.
   (continued on back)
In addition to my research at PARC, I have had experience designing a Common Lisp interpreter (at Lisp Machine, Inc.) and an optimizing compiler (in 6.035 coursework).
Having seen the insides of various languages and how complicated they are to implement, I would like to develop tools to make it easier to implement these languages. I would also like to study how features of a programming language affect the ability of compilers to reason about the programs they are compiling, and the guarantees that can be made about programs written in the language. Furthermore, I would like to study the relationships between specification and implementation languages, and how the design of such languages affects the reliability of large software systems written in them.
There are several projects at MIT which are closely related to these research interests. I am interested in Professor John Guttag's work on the Larch specification language. Professor Barbara Liskov's Argus project is another project I would enjoy working on. I am also interested in Professor David Gifford's F/X effects language; the analysis of effects in F/X has similarities to the side-effect analysis performed by Casaba.
After completing my Master's degree, I would like to continue working towards a Doctor of Philosophy degree.