Automated grading

I designed, implemented, and documented a modular automated grading system. It’s designed to be simple and highly reusable, breaking up the assignment grading process into a sequence of self-contained “steps” that can be rearranged and configured to represent just about any assignment. My system is used in CS 102 classes at Cal Poly.

Physics simulations

During June–August of 2014, I worked at the Army High Performance Computing Research Center, conducting research on physics simulations on low-powered tablets. I developed an application capable of performing various types of physically accurate simulations in real time, including articulated rigid body, cloth, smoke, and dynamic paint simulations. See my research paper for more information.


Technology problems often plague debate conferences. To address this, I created and deployed an application system that unifies the tools that chairs need to aptly moderate debates. It integrates timing, voting, motions, speech analysis, and more, and networks across computers so that co-chairs can collaborate. My system has been used at multiple conferences, by dozens of chairs and hundreds of students. It's open-source and available on GitHub.


My high school wanted to teach game development to beginning programmers, but existing Java libraries had prohibitively steep learning curves. As such, I designed and implemented JGame, a library for the Java programming language that enables students to focus on learning computer science and game development concepts instead of worrying about implementation details. My framework is widely used by students at my school; here is a sample of some student projects based on my library. JGame is open-source and available on GitHub.