| The primary goal of my research is to discover how to
design programs, components, and programming systems. I don't know any
other way to understand design than to program and re-program and transform
small and large programs. As I am getting to understand what happens, I am
writing things down in "How to Design Programs", "How to Design Components" and
"How to Design Systems." It is after all our duty as academics to find and to
disseminate truth.
| The secondary goal of my research is to design a
programming language that supports the programming styles needed for my primary
research. Since I consider "disciplined scripting" a good starting point for
getting system off the ground, and since I consider explicit static typing an
essential aspect of established, to-be-maintained programs, my research focuses
on components, contracts, and sound type disciplines that accommodate my design. This
thrust includes the transition from untyped code to typed code. In support of
this research, I need a language that can grow -- and that calls for a
one-of-a-kind macro technology.
| My current specific research projects concern
In addition, I am working on a functional framework for programming and
reasoning about distributed and interactive graphical programs. It provides me
with a personal "playground" for exploring and testing all of the above in
practice.
|
Financial support for my research currently comes from NSF, ARPA, AFOSR, and
Mozilla. Past funding sources include CORD, US DoED, Exxon, Microsoft,
and Texas ATP.
|
|
|