Student Projects
I have always enjoyed supervising undergraduate capstone projects. If you’re interested in doing any of these, or have students who would be, please get in touch.
Tools
- Bram
- Bram (“Bram runs agents mindfully”) is a desktop app that embeds Claude Code and Codex in a GUI that provides structured, audited workflows. This project will add several new features, such as better support for design recovery and data analysis.
- A Little Program Verifier
- This project will extend Frml, a verifier for a very simple programming language, with basic concurrency features in order to teach people how those tools work.
- XKCD Charts
- Chart.xkcd creates charts in the hand-drawn style of XKCD. This project will fix outstanding issues, add new features such as axis limits and stable coloring schemes, and create wrappers in one or both of Gleam or Dafny.
- An I/O Library for Dafny
- I want to translate Software Design by Example in Python into Dafny to see and show how verifiability changes the way we build software tools, but Dafny’s I/O and systems programming libraries don’t offer what the examples need. This project will build those libraries, starting with what’s listed in this blog post.
- A Software Development Simulator (filled for Winter 2027)
- I created asimpy so that I could build simulations of software development teams similar to these ones. The goal of this project is to build those simulations and use them to explore the impact of AI tooling on the software lifecycle.
- A Little Program Analyzer (filled for Winter 2027)
- Jorma uses a combination of static and dynamic analysis to identify the roles of variables using Sajaniemi et al’s taxonomy. This project will extend the dynamic analysis capabilities and test it on a larger set of programs
Games
- Rewind
- A first-person shooter with a science-fiction theme in which each player has a limited “temporal battery” that can be spent to reverse the flow of time by a few seconds. If you just got shot, rewind and take cover instead; if you missed a shot, rewind and aim lower. The twist is that your opponent knows you can do this, turning every rewind into a battle of wits.
- Save the Humans!
- The zombies have attacked. The people at the zoo have panicked, and it’s up to the animals to save them in this tongue-in-cheek game. The tiger can chase people away from danger, but they might run straight into the arms of the ravenous horde. The bunny is so cute that people will chase it, but if they catch it they’ll just stand there petting it until they’re eaten, and so on.
- Tower Support Game
- A tower defense game is one in which the player builds fixed defenses against incoming waves of attackers. The objective of this game is to prototype a simple tower support game, in which the player builds bridges, first aid stations, and so on to help travelers reach their destination.
- Stardew Valley Murders (filled for Winter 2027)
- A mod that turns Stardew Valley into a murder mystery game. Grow vegetables, then trade them for gossip and clues until you figure out who murdered Clint and why.
Research
- Unbreaking Software
- These simple exercises are designed to teach debugging (with or without AI assistance). This project will extend them with more complex scenarios, and if time permits, compare human performance to AI performance on solving them.
- Research Software Engineering Retrospective
- “Best Practices for Scientific Computing” (2014) and “Good Enough Practices in Scientific Computing” (2017) have been cited hundreds of times. This project will investigate how the working practices of the authors of those citations have changed over the past decade.