Analyzing the Difficulty of Programming Assignments with Interpretable Knowledge Component Metrics

2026-07-03Computers and Society

Computers and SocietySoftware Engineering
AI summary

The authors studied how breaking down programming assignments into small concepts, called Knowledge Components (KCs), helps explain why some tasks are harder for students. They found that assignments with more KCs usually lead to lower student performance, and sudden changes in KCs can disrupt learning. Sometimes students struggle even when no new KCs are introduced, hinting at possible issues in assignment design or teaching. Their approach offers a clearer way for teachers to understand and improve programming courses by analyzing these KC patterns.

Knowledge Componentsintroductory programmingstudent performanceassignment difficultyconcept coveragelearning progressiontask designinterpretabilityLLM extractioncourse improvement
Authors
Tsvetomila Mihaylova, Jing Fan, Bita Akram, Narges Norouzi, Peter Brusilovsky, Juho Leinonen, Arto Hellas
Abstract
This research paper examines how Knowledge Components (KCs) - fine-grained concepts or skills required to solve programming tasks - can be used as interpretable signals for understanding assignment difficulty and student struggle in introductory programming courses. While prior work has focused on predictive models based on programming behavior, such models are often difficult to interpret and therefore hard to use for instructional decisions. We analyze KC-based metrics, including the number of KCs per assignment and changes in KC coverage between consecutive assignments. We examine correlations between the number of KCs and student performance on the assignment, and analyze changes in KCs across assignments to identify cases where performance declines without new concepts being introduced. Selected assignments are then qualitatively inspected to understand potential design issues. Our results on data from three introductory programming course datasets show that assignments involving more KCs are generally associated with lower performance, and that sudden shifts in required KCs can coincide with disruptions in learning progression. We also identify assignments where performance declines even though no new KCs are introduced, suggesting potential issues in task design or instruction, which could be examined with qualitative analysis. We propose an interpretable framework for analyzing programming assignments using KC-based metrics, with practical implications for instructors and course designers who want to better understand where and why students struggle, and how course materials might be improved. Our method can use KCs defined by an expert or extracted by an LLM, offering instructors an additional way to assess assignment quality beyond average correctness. It can be applied to any course with ordered assignments and measurable performance.