|
I have two personal, intertwined research goals: learning how to
design programs systematically and creating a language that helps me
express my thoughts.
My first goal is to discover how to design programs, components,
and programming systems systematically. I don't know any other way
to understand design than to program and re-program and re-re-program
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, ordinary text books at first glance but a second look will pay off.
One day I may distill the
ideas in to a small little book called How to Design.
|
My second goal is to design a programming language that supports the
programming styles needed for my first
goal. Racket is the evolving
subject of this project. I recently had a chance to lead-author
the Racket
Manifesto, which spells out my perspective on this 20-year-old and
on-going project. Please read the paper if you want to know what
the Racket project is all about.
| With my current and former students I work on a variety of projects in
support of the Racket project:
In addition, Tony
Garnock-Jones and I are working on a functional framework for
programming and reasoning about distributed and interactive graphical
programs, a generalization of my 2htdp
library for Racket. This 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, DARPA, AFOSR,
CISCO, and Mozilla. Past funding sources include CORD, US DoED, Exxon,
Microsoft, and Texas ATP. |
|
|