PLT
Program by Design
NU PLT
NU PRL
 
Books
  HtDP
  HtDP/2e
  On HtDP
  HtDC
  Sem. Eng.
  Realm of Racket
 
Research
  Publications
  Presentations
 
Teaching
Programming
 
Thoughts
Coordinates
Miscellaneous
Resources
Quotes
 
Family
 
Home

Research

logo

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. These are text books but I do not how to write down these insights otherwise. 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 Jul 23 10:03:27 EDT 2015generated with Racket