Date of Award:
5-2026
Document Type:
Thesis
Degree Name:
Master of Science (MS)
Department:
Computer Science
Committee Chair(s)
John Edwards
Committee
John Edwards
Committee
Seth Poulsen
Committee
Curtis Dyreson
Abstract
Learning to program is a difficult endeavor, leading to chronically high failure rates in introductory programming courses. One thing that makes teaching programming difficult is that we don’t fully understand what problem solving habits and writing strategies separate successful programmers from struggling ones. Knowing how to teach these habits to a new programmer is an equally difficult challenge,
Studying the way people write code has proved difficult. Until recently, there was very little relevant publicly available data, and no good ways to analyze student programming behavior at a large scale. In this thesis, I address both issues. I publish a large dataset of student coding activity, recorded from students in an introductory college programming course. I also publish tools to help with further publishing and analysis of this type of data in the future. Using these tools, I find that students who frequently switch between different parts of their code take longer to complete their assignments, though this behavior doesn’t seem to hurt their grades.
I discover how students think about the process of writing code through interviews with students. I find that students often had poor recollection of how they wrote their code. I define several higher level programming behaviors for future study, in order to better teach future programming students.
Creative Commons License

This work is licensed under a Creative Commons Attribution 4.0 License.
Recommended Citation
Rau, Matt, "How Novices Write Code: Discovering Best Practices" (2026). All Graduate Theses and Dissertations, Fall 2023 to Present. 780.
https://digitalcommons.usu.edu/etd2023/780
Included in
Copyright for this work is retained by the student. If you have any questions regarding the inclusion of this work in the Digital Commons, please email us at .