On HtDP
  Sem. Eng.
  Realm of Racket
  NSF: Gradual



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.

last updated on Thu Aug 17 09:47:59 EDT 2017generated with Racket