Assessing Problem Decomposition in CS1 for the GenAI Era
By: Samvrit Srinath , Annapurna Vadaparty , David H. Smith IV and more
Potential Business Impact:
Teaches beginners how to break down big coding problems.
Problem decomposition--the ability to break down a large task into smaller, well-defined components--is a critical skill for effectively designing and creating large programs, but it is often not included in introductory computer science curricula. With the rise of generative AI (GenAI), students even at the introductory level are able to generate large quantities of code, and it is becoming increasingly important to equip them with the ability to decompose problems. There is not yet a consensus among educators on how to best teach and assess the skill of decomposition, particularly in introductory computing. This practitioner paper details the development of questions to assess the skill of problem decomposition, and impressions about how these questions were received by students. A challenge unique to problem decomposition questions is their necessarily lengthy context, and we detail our approach to addressing this problem using Question Suites: scaffolded sequences of questions that help students understand a question's context before attempting to decompose it. We then describe the use of open-ended drawing of decomposition diagrams as another form of assessment. We outline the learning objectives used to design our questions and describe how we addressed challenges encountered in early iterations. We present our decomposition assessment materials and reflections on them for educators who wish to teach problem decomposition to beginner programmers.
Similar Papers
Systematically Thinking about the Complexity of Code Structuring Exercises at Introductory Level
Software Engineering
Teaches coding by breaking down hard problems.
OpenCoderRank: AI-Driven Technical Assessments Made Easy
Software Engineering
Tests coding skills without giving away answers.
A Systematic Literature Review of the Use of GenAI Assistants for Code Comprehension: Implications for Computing Education Research and Practice
Software Engineering
Helps people understand computer code better.