Debugging is integral to programming. It comes into play as soon as novices make their first mistakes in creating programming artifacts. It is also consistently reported to be a skill that is difficult to learn as well as to teach effectively. Research in Informatics Education has often focused on the process of debugging, by breaking it down in steps connected by temporal and causal dependencies. In this work, we focus instead on debugging as a skill, from the standpoint of Cognitive Load Theory, and break it down into a tree-shaped model of subskills that enable one another. Debugging may thus be seen as a meta-skill that requires the coordination of multiple others. From the standpoint of Cognitive Load Theory, such a skill is cognitively expensive, which may explain the learning-related difficulties tied to debugging. Using the framework of the four-component instructional design, we hypothesize a categorization of each debugging subskill as either recurrent or nonrecurrent, dividing those that are applied consistently to different contexts from those that require problem solving. All subskills may be practised and potentially assessed with targeted exercises, whose design depends on their recurrent/nonrecurrent nature. We provide extensive examples of such exercises. Our decomposition of debugging into subskills is a novel way to address debugging in educational contexts and complements the work done on debugging processes. Although it is currently a theoretically grounded conjecture, the model provides concrete guidance for instructors on analyzing existing materials and planning cognitive-load-informed learning trajectories.
The paper describes some possible ways how to improve Olympiads in Informatics. Tasks in Olympiads are small models of programming tasks in software industry and in the limited amount of competition time contestants need to complete several software production phases - coding, testing and debugging. Currently, only coding effort is adequately graded, but grading of other activities may be improved. Ways to involve contestants in overall testing process are investigated and ways to improve solution debugging process are described. Possible scoring schemas are discussed. In International Olympiads tasks with real numbers are quite rare. Possible reasons are investigated and a way how to return such tasks back to competition arena is suggested.