Systematically Thinking about the Complexity of Code Structuring Exercises at Introductory Level
Georgiana Haldeman, Peter Ohmann, Paul Denny
TL;DR
The paper argues for increasing attention to decomposition and abstraction in introductory programming education, proposing a three-dimensional framework (repetition, code-pattern composition, data dependency) to classify code-structuring task complexity. It provides labeled example tasks and an interactive online repository to generate and explore problems, aiming to support procedural-DA skill development. The authors discuss related work on pattern-based instruction and code quality, and they outline future directions including empirical validation and AI-assisted task generation. The framework and tool are presented as practical means to decouple syntax from higher-level reasoning, enabling scalable, targeted practice in introductory curricula amid AI-driven programming trends.
Abstract
Decomposition and abstraction is an essential component of computational thinking, yet it is not always emphasized in introductory programming courses. In addition, as generative AI further reduces the focus on syntax and increases the importance of higher-level code reasoning, there is renewed opportunity to teach DA explicitly. In this paper, we introduce a framework for systematically assessing the complexity of code structuring tasks, where students must identify and separate meaningful abstractions within existing, unstructured code. The framework defines three dimensions of task complexity, each with multiple levels: repetition, code pattern, and data dependency. To support practical use, we provide example tasks mapped to these levels and offer an interactive tool for generating and exploring DA problems. The framework is designed to support the development of educational tasks that build students' skills with DA in the procedural paradigm.
