Research
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.
Active projects
Early-stage
Projects that are currently active and looking for student collaborators. If you’re interested in working together, get in touch!
- The fluid and expressive nature of sketching allows data visualization designers to easily communicate the visual structures they envision, allowing them to quickly and cheaply explore many designs. At the same time, evaluating a design sometimes requires you to see it with your data. Can we bridge the gap between hand-drawn sketches and data visualization specifications?
- Practitioner-instructors are common in fields like medicine, law, and the arts. They are present but less common in software engineering. What can we learn about these instructors’ teaching perspectives and strategies?
- Models for alternative assessment abound, like mastery-based learning and specifications grading. We’re using historical data in computing courses to learn whether these assessments models work and for whom.
Academic help-seeking
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).
- Students reported a number of factors that influence whether and when they will seek academic help from the internet, their peers, or their instructors. Students generally preferred to move from online sources to peers to instructor resources like office hours. [Koli Calling ‘21]
- Focusing on peers in particular, we studied peer networks in computing courses, and the interplay between peer collaboration, use of instructor resources, and academic outcomes. [ITiCSE ‘26]
Socially responsible computing in early courses
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. [TOCE ‘25]
- Given these benefits of SRC assignments, we studied the SRC topic domains that students found most interesting. [Koli Calling ‘25]
The team has collected curricular materials and publications resulting from this work at the project website.
Not currently active
Programming education for non-computing students
- With Chemistry faculty, we performed a case study to learn how Chemistry students learn and use programming. We observed negative attitudes toward computing and made recommendations that were enacted in the Physical Computing courses at Cal Poly. [J Chem Ed ‘24]
- With a mix of non-computing majors taking the CS department’s CS0 course, we found that students perceived the relevance of computing to their disciplines while also reporting being challenged by it. Students reported slightly weaker feelings of self-efficacy by the end of the course than they reported at the beginning. [Kevin Yoo’s thesis ‘21]
Software testing
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]
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]
Collaborations
I have collaborated on other projects.
- CodeWorkout—an online practice system for beginner programming problems. I was responsible for its integration into the Canvas LMS through the LTI protocol. See the project on GitHub.
- ProgSnap2—A data specification for sharing and analysing programming snapshot datasets [ITiCSE ‘20]
- Testing the generalisability of research on regular expressions [ASE ‘19]