Decomposition is considered one of the four cornerstones of computational thinking, which is essential to software development [36]. It requires the ability to assess a problem at a high level, develop a strategy to combat it, and then design a solution. Our study focuses on the metacognitive aspect of decomposition. We try to understand the learner's thought process and, specifically, what makes the novice programmer decide to break down a function. Researchers have studied decomposition in introductory programming courses through guided experiments, case studies, and surveys[23,37]. In this work, we follow a different, more scalable approach. We develop an automated system to analyze 45,000 code snapshots from 168 students for a challenging CS1 programming assignment, detect the pivotal moments when they decide to decompose their programs, and identify what drives their decisions from the code. We then classify the students and study the relationship between the different categories, the code complexity, and the time to derive the final solution. We evaluate the impact of decomposition on the student's performance in the assignment and the course exams. Finally, we discuss the implications of our results for computing education.
CITATION STYLE
Charitsis, C., Piech, C., & Mitchell, J. C. (2023). Detecting the Reasons for Program Decomposition in CS1 and Evaluating Their Impact. In SIGCSE 2023 - Proceedings of the 54th ACM Technical Symposium on Computer Science Education (Vol. 1, pp. 1014–1020). Association for Computing Machinery, Inc. https://doi.org/10.1145/3545945.3569763
Mendeley helps you to discover research relevant for your work.