Current and past research projects. If you’re a Cal Poly student interested in any of these projects, please get in touch. Relevant publications are shown for each project. See a complete list on my publications page.
Early-stage active projects
- Programming is taught all over campus, not just in the CSSE department. What can we learn from how non-computing students learn and use programming?
- Improving belonging and self-efficacy in introductory programming classes through socially responsible computing [NSF award, SIGCSE ‘24]
- IDE plugins to assist programmer cognition [SURP 2022, Project on GitHub]
Software testing (active)
Software testing is an important self-regulatory skill in software development. I’m interested in research regarding the teaching and learning of software testing. My work has focused on students’ testing process and test quality.
- The effects of mutation analysis and other feedback mechanisms on students’ thought processes as they compose tests [TOCE ‘23]
- We proposed ways to reduce the computational cost of mutation analysis to provide students with rapid incremental feedback about their software tests [JSS ‘21]
- We mined program snapshot histories for insight into students’ test writing habits [SIGCSE ‘19]
Academic help-seeking (active)
Knowing when and how to seek academic help is an important aspect in self-regulated learning. Seeking help too soon or too often can degrade learning outcomes, but avoiding seeking help can also be detrimental. Students are often left to discover a balance between these extremes for themselves.
- A number of factors influence whether and when students will seek academic help from the internet, their peers, or their instructors [Koli Calling ‘21]
Undergraduate students’ software debugging habits
In exploring students’ debugging practices, we found that:
- Simple documentation of progress on debugging problems helped students recover from bugs with slightly reduced reliance on instructors [SIGCSE ‘23]
- Using a range of debugging techniques—as opposed to only one—may lead to improved project outcomes and reduced reliance on an autograder [Koli Calling ‘20]
Assessing and improving time management in software development
Time management is generally challenging for learners, particularly those who are working on large and complex programming projects for the first time. A large part of my PhD work was focused on assessing and improving students’ time management on programming projects.
- Explicit project milestones helped to reduce the rates of late submissions and improve project performance [SIGCSE ‘21]
- Students’ development habits had significant impacts on their project performance and timeliness [ICER ‘17]
- Fine-grained IDE log data yielded accurate measurements of students’ development habits [ITiCSE ‘17]
CodeWorkout is an online drill-and-practice system for people learning a programming language for the first time. It is free, open-source, and currently serves thousands of users at Virginia Tech and other universities.
See the project on GitHub.
- We used CodeWorkout in Virginia Tech’s CS 1 course and explored the effects of voluntary practice of programming assignments on exam performance, controlling for individual student abilities [CompEd ‘19]
I have collaborated on other projects.