I am involved with several textbook projects.


I teach courses in data structures, algorithms, optimization, and introductory computer science. Here's a link to some of the course materials:


I have co-developed several MOOCs (with Bob Sedgewick). All are freely available on the Coursera platform.


Here are some software projects that I maintain that are used at Princeton and beyond.

Nifty Assignments

I have developed and co-developed many novel programming assignments. Several have been designated as Nifty Assignments by the ACM Technical Symposium on Computer Science Education (SIGCSE). These assignments have been adopted at many colleges and universities around the world.

Teaching Awards