Projects
Current and past research projects. Relevant publications are shown for each project, not necessarily in chronological order. See a complete list on my publications page.
Academic help-seeking (active)
Knowing when and how to seek academic help is important for self-regulated learning. Seeking help too soon or too often can degrade learning outcomes, but avoiding seeking help can also be detrimental.
We’ve learned a bit about undergraduate computing students’ help-seeking behaviours (at Cal Poly, a relatively competitive primarily-undergraduate institution with medium class sizes).
- A number of factors influence whether and when students will seek academic help from the internet, their peers, or their instructors [Koli Calling ‘21]
- Focusing on peers in particular, what kind of participation in peer networks do we see in computing courses? How does this relate to course outcomes? [Noah’s thesis]
- How does peer network participation interact with office hours and class forum usage?
Socially responsible computing coursework (active)
In an NSF-funded alliance of 6 CSU campuses — Cal Poly SLO, Cal Poly Pomona, CSU LA, SFSU, CSU Dominguez Hills, and CSU Fullerton — we are working to improve student recruitment and retention in computing, by making curricular enhancements to early CS courses. Specifically, our alliance is focused on incorporating socially responsible computing (SRC) assignments into CS coursework.
- We broadly describe our first two years’ activities, including curricular enhancements at all six campuses as well as a faculty learning community for instructors incorporating this new material into their CS courses. [ASEE ‘24]
- On the curricular development front, we have designed a new data-centric CS 0 course at Cal Poly SLO with a bent toward societally meaningful contexts. Students’ learning of technical content was not negatively impacted by the inclusion of SRC content, and may have been enhanced. [SIGCSE ‘24]
- From the faculty perspective, we reflect on our experiences incorporating SRC materials into our courses, including lessons learned from the FLC. [SIGCSE ‘25]
- Holistically speaking, after two years of incorporating SRC curricular materials, we found that students experienced significantly improved senses of belonging in computing; this effect was more pronounced for students at the participating campuses with less restrictive CS enrolments and higher percentages of students identifying as Hispanic/Latino. [Awaiting publication]
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.
- We learned about how relatively beginner programmers made sense of software testing feedback while they developed test suites, i.e., feedback based on code coverage and mutation analysis. [TOCE ‘24]
- 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 and learned that (surprise!) regular engagement with testing throughout a project lifecycle led to improved project outcomes. [SIGCSE ‘19]
Other early-stage active projects
- Programming is taught all over campus, not just in CS classes. What can we learn about how non-computing students learn and use programming? [J Chem Ed ‘24]
- IDE plugins to assist programmer cognition [SURP 2022, Project on GitHub]
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.
- Fine-grained IDE log data yielded accurate measurements of students’ software development habits. [ITiCSE ‘17]
- Students’ software development habits had significant impacts on their project performance and timeliness. [ICER ‘17]
- Explicit project milestones helped to reduce the rates of late submissions, improve project performance, and improve course grades for about a third of the class. There was no impact on the percentage failing grades or course withdrawals. [SIGCSE ‘21]
CodeWorkout
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. As an erstwhile primary developer on the project, I was responsible for its integration into the Canvas LMS through the LTI protocol.
- 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]
Collaborations
I have collaborated on other projects.
- [ITiCSE ‘20] ProgSnap2—A data specification for sharing and analysing programming snapshot datasets
- [ASE ‘19] Testing the generalisability of research on regular expressions