I write code that helps students learn.

I create and maintain a variety of software tools to support my courses. Most of my projects are published on GitHub, and many are publicly deployed and freely available for educators and students to use and extend. Learn to Program Online Learn to Program Online is the freely-available version of the materials developed to support CS 124—my CS1 course at Illinois. provides public access to the same novel features that have made introductory computer science course so successful: 61 daily lessons introducing programming and computer science concepts in Java and Kotlin; 902 runnable and editable playground examples; 2,540 interactive walkthroughs from 264 instructors; 132 homework problems providing both correctness and code quality feedback; and novel debugging challenges that help students learn to fix small mistakes.

Jeed: A Speedy JVM Execution and Analysis Toolkit
Jeed: A Speedy JVM Execution and Analysis Toolkit

Jeed (GitHub) is the speedy JVM execution and analysis toolkit.

Jeed’s primary purpose is to enable fast and safe execution of untrusted Java and Kotlin code. It’s what powers the Java and Kotlin playgrounds on this site,, and the CS 124 website. It also powers our novel homework autograder and debugging question generation. Jeed runs untrusted code in a secure JVM sandbox 1000 times faster than approaches that rely on containerization. This huge performance boost makes it possible to support a large amount of interactive use using a small amount of server resources. Jeed has been in production use since 2019.

Find out more about Jeed here, or read the story of how Jeed was developed.