In a standard computer science curriculum students are required to learn early how to combine statements and conditions into meaningful iteration structures. When these topics are usually introduced in the third high school year, however, several students do not succeed to understand the iteration constructs at the SOLO relational level.
Most of the studies discussed in the computing education literature address the learning of control structures from an operational point of view. Among the few attempts to introduce at the novice level different instances of the main programming constructs in connection (intertwined) with elements that make their purpose explicit, the perspective of exploiting the concept of ’loop invariant’.
Then, starting from a broad literature review and from an investigation on how students perceive the sources of their difficulties while dealing with iteration, as well as on what the learning obstacles are in the teachers’ opinion, the main objectives of the proposed project are to devise appropriate ways to introduce the concept of invariant at the upper secondary level and to explore its potential to improve students’ learning achievements.
In addition to their central role for iteration, invariants may also be a fruitful tool to analyze the concurrent access to resources shared by threads, as well as to understand the conditions in the related decision structures.