How Code Takes Shape: Studying a Student’s Program Evolution

Brian A. Danielak · Cognition and Instruction · 2022

This paper focuses on a historically understudied area in computing education: attending to students’ *design thinking* in university-level introductory programming courses. I offer an account of one student—“Rebecca”—and her experiences and code from a second-semester course on programming concepts for engineers. Using data from both code snapshots and clinical interviews, I explicate both the challenges of studying students’ software design processes and the potential for such study to inform accounts of teaching and learning. My analysis focuses on two related aspects of Rebecca’s code for a multi-week class project: 1. The origin, nature, and evolution of unusual structural and behavioral features of Rebecca’s code 2. The subtle, yet complex reasons that led Rebecca to make particular design choices in her codeMy data comes from ethnographic observation of Rebecca’s class, fine-grained compile-time snapshots of Rebecca’s codebase, and semistructured interviews with Rebecca. I first present an analysis of only Rebecca’s final submitted code (what an instructor would typically see) detailing Rebecca’s unusual use of file-scanning loops and her seven-fold repetition of a particular code chunk (once for each day of the week). I then augment that analysis with code snapshot history and data from semi-structured interviews with Rebecca. This augmented analysis reveals _affect_ [@hannula_affect_2004; @eynde_case_2006] and _framing_ [@van_de_sande_achieving_2012; @mestre_resources_2005] offer substantial explanatory power for understanding why Rebecca made particular design choices.

Read the paper · More papers on PaperTik