Qualitative Analyses of Movements Between Task-level and Code-level Thinking of Novice Programmers

Abstract

Cognitive theories of how programmers produce code suggest that novices' approaches are primarily driven by the retrieval of previously-learned plans. These plans can be high-level, focusing on task decomposition and composition, or low-level, focusing on code implementations. These theories, however, do not describe *how* novices move between high-level tasks and low-level code, especially when faced with novel problems. Understanding these transitions can help concretely tease out *why and where* novices struggle and *how* they use their knowledge of plans and design techniques when they get stuck. We studied this by conducting think-alouds with CS1 students at two universities as they solved multi-task programming problems with unfamiliar components. Our analysis paid particular attention to a series of design techniques that the students had been explicitly taught in their respective courses. We identified patterns of high- and low-level thinking that relate to students' success on the problems, and propose a concrete framework of high- and low-level work that summarizes the transitions that we observed.

Publication
In 51st ACM Technical Symposium on Computer Science Education (SIGCSE ‘20), ACM.
Date

F.E.V.G. Castro and K. Fisler. Qualitative Analyses of Movements Between Task-level and Code-level Thinking of Novice Programmers. 51st ACM Technical Symposium on Computer Science Education (Portland, OR, USA. 11-14 March 2020)

SIGCSE 2020