Research Projects

Broadly, my research interests relate to software engineering with an emphasis on cognition and pedagogy. If you have questions about my work or are looking to get involved in this kind of research, send me an email and we can set up a time to chat. I love working with students on a variety of fun projects!

Search-based software engineering

I have used stochastic search-based approaches (e.g., genetic programming) to reduce the amount of developer effort for debugging software. My work in this area has not been limited to software: I am the developer of CirFix, a framework that bridges the gap between automated software repair and the hardware domain using novel insights about hardware designs.

Cognition for CS tasks

I have used objective measures (e.g., transcranial magnetic stimulation, eye-tracking, etc.) to understand differences in problem-solving strategies employed by students for CS-related tasks, such as reading formal claims about algorithms, and investigating the factors associated with higher student performance. My efforts on understanding cognition have provided recommendations for instructors and suggested follow-on classroom intervention studies to favor students outcomes.

Improving software quality through formal verification

I believe that testing for bugs in software can be insufficient, and that elevating the status of a critical system (e.g., autonomous cars) from “tested” to “correct” is becoming increasingly necessary. In this area, I have focused research efforts into developing new formalisms that allow for time-critical safety properties for software to be expressed and reasoned about, and into reducing the amount of manual human effort needed to prove correctness in complex distributed systems.

Peer-Reviewed Publications

Other Publications