For a software engineering course at CMU, I completed a number of projects that were both fun and technically interesting. One such project was an extended version of Scrabble with a number of interesting features. Another was a general-purpose data visualization framework that allowed plugins to supply data from arbitrary sources and visualize it in arbitrary ways. Both of these had some interesting technical challenges.
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.
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.