Systematically Thinking about the Complexity of Code Structuring Exercises at Introductory Level
Georgiana Haldeman, Peter Ohmann, Paul Denny

TL;DR
This paper introduces a framework for assessing and teaching the complexity of code structuring exercises in introductory programming, emphasizing decomposition and abstraction to enhance computational thinking skills.
Contribution
It presents a systematic framework with three complexity dimensions for designing and analyzing code structuring tasks, supported by example tasks and an interactive tool.
Findings
Framework effectively categorizes task complexity levels
Supports development of educational tasks for code abstraction skills
Provides tools for generating and exploring code structuring problems
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsTeaching and Learning Programming · Software Engineering Research · Logic, programming, and type systems
