Located in beautiful, historic Providence, our work unifies under themes of design, learning, and languages. We build languages, analyze them, and take them apart. We create environments and other tools for working with them, as well as books for understanding them. If you want to learn more or join us,
get in touchPyret is the main language we're currently working on. We combine the best of functional and scripting languages to create an outstanding language for teaching and, down the road, general-purpose programming. Pyret is an umbrella for several efforts in compilation, type systems, error-reporting, language design, and much more.
Forge is a new tool and collection of languages for formal modeling. Forge is heavily inspired by Alloy, but offers its own opinionated take on modeling, analysis, and verification.
Bootstrap is our outreach program for middle- and high-school computing. We work in schools across the US and in several other countries. Our curricula teach algebra, data science, and physics in addition to computing, and are embedded into courses in several subjects, enabling us to achieve our three goals of equity, rigor, and scale.
We view research and building systems as complementary and mutually-reinforcing. We have worked (and in some cases continue to work) on research-driven systems used by many other people, including JavaScript and Web tools, Flowlog and related tools, Racket and DrRacket, WeScheme, Margrave, Flapjax, FrTime, Continue, Captain Teach, and PerMission.
We have six faculty members (Shriram Krishnamurthi, Kathi Fisler, Rob Lewis, Tim Nelson, Nikos Vasilakis, Milda Zizyte), two post-docs (Ben Greenman, Will Crichton), four PhD students (Yanyan Ren, Kuang-Chen Lu, Elijah Rivera, Siddhartha Prasad), several undergraduates, and a research programmer (Dorai Sitaram). We also collaborate with several faculty at other universities (most notably, Dan Dougherty, Ben Lerner, Joe Politz, Matthias Felleisen) and with Bootstrap's Emmanuel Schanzer.
We often blog about our work. Our blog is a convenient, lightweight way to learn about some of our research.
Thanks to our convenient location, we host numerous speakers. Since we share many interests with them, our talks are co-located with the systems folk.
All of our papers are online. They have associated repositories of code, data, proofs, and other artifiacts, as appropriate.
Most of our recent work is in our github repository, although individual papers have their own repositories elsewhere. In general, a paper's page above is the best source for material about that paper.
We are actively conducting research on topics like scope and aliasing and semantics for learning, in the computing education research group.
A Data-Centric Introduction to Computing is a new book that lays out our research-driven approach to learning programming, following our data-centric perspective. Suppporting it requires a lot of the other work described on this page.
Programming Languages: Application and Interpretation is our programming languages book, in widespread use. All three editions are available online.
We have created and studied several other pedagogic innovations related to programming languages. These include better machinery for teaching garbage collection to new ways to teach programming languages.