Paper Summary
Share...

Direct link:

Debugging Failure: Fifth- to 10th-Grade Students' Journal Reflections, Coding, and Artwork About Broken Code

Sat, April 6, 4:10 to 6:10pm, Sheraton Centre Toronto Hotel, Floor: Lower Concourse, Sheraton Hall E

Abstract

Objective and Framework. In computer programming, coders define failure as a mismatch between what the coder wants and what happens when the program executes (Zeller, 2009). Coders have even developed a term for the cause of this mismatch: a logic or syntax bug. Acknowledging that failure invites complex causal reasoning (Hesslow, 1988; Graham, 1991), visceral emotion (Holt, 1964), and collaborative forms of storytelling (DeLiema, 2017), we aim here to understand new coders’ phenomenological experiences (Sengupta, Dickes, & Farris, 2018) with thinking about causes of bugs and strategies for resolving bugs. This work extends prior debugging research by grounding our analyses in classroom discourse, classroom artifacts, and longitudinal case studies.

Data Sources. The setting was a two-week summer coding workshop for 5th – 11th grade students (n=120, M-F, 9am – 4pm) from underserved urban communities, taught by undergraduate computer science majors. Our data sources included GoPro video recordings of each four-person pod, screen recordings, coding journals, interviews about debugging, and student artwork and artist statements about failure.

Methods. We conducted a case study of one 6th grade student (Zoa) over 10 days by transcribing all of her talk about debugging, analyzing it using conventions of interaction analysis (Jordan & Henderson, 1996), and thematically coding all artifacts and interviews using the constant comparative method (Glaser & Straus, 1967). The student was selected because she had limited programming experience, participated in the camp activities, and had a complete data set. In addition, we thematically analyzed journal reflections and artwork from the full sample.

Results. Overall, students called out a sprawling number of debugging strategies: relying on themselves, asking peers, working with instructors, managing emotion, trying new things, working hard, experimenting, playing, focusing, observing code, comparing code, stepping through code, using memory, experimenting, implementing creativity, thinking, finding the bug, preparing in advance, making mistakes, and having faith. Students attributed bugs to numerous factors: memory (e.g., I forgot); energy (e.g., my fingers are tired!); understanding (didn’t understand how to use mousePressed); confusion (I find it #confusing); luck (Today was not my day); and new challenges (because I am new to the worksheet). Zoa’s case study revealed an even wider range of attributions of failure. She characterized her own actions (“I’m doing something so dumb”) and epistemic states (“I don't even know what's wrong”) alongside external spaces: the computer code (“You only need like one function name”), the PixelBot (“Toucan has failed me”), the computer (“The computer’s glitching”), and instructors (“[Your idea] doesn’t work, Bethany!”). Notably, these attributions were often embedded in playful discourse (e.g., speaking in a funny voice, singing pop songs about failure, asking iPhone’s Siri absurd questions about code.)

Significance. This work documents a wide range of affective and cognitive strategies and attributions around debugging, spread across materials and multiple individuals in the classroom, including the playful discourse environment in which this thinking emerged for one student. Both invite further research and pedagogical considerations around how teachers can attend to and support student thinking about why failure arises and how to respond.

Authors