For first-year students, Higher Education is a new ground with higher requirements and more freedom compared to Secondary School. To support their learning, they need to self-regulate, as their success heavily relies on their ability to autonomously and actively engage in their learning process. In particular, in our “”Introduction to Programming” course, it is essential to stay on track over the semester as the topics are cumulative. However, in practice, many students have difficulties in managing the amount of time and quality of cognitive effort devoted to learning.
From a context point of view, our country (i.e., Belgium) applies an open policy access to Higher Education. It results in large groups of first year students for which traditional classroom activities are organized. Moreover, students are fully free to take part (or not) in the academic activities, their only commitment being passing the final exam. Therefore, during the semester itself, we need to promote regular students’ training, handling the diversity and the large number of students, for a limited number of supervisors.

With this purpose in mind, we developed a remote regular activity, the Programming Challenge Activity (PCA). As illustrated above, the activity spans over the whole semester and is made up of six programming Challenges targeting to punctuate students’ learning by providing short-time goals.
The PCA relies on CAFÉ 2.0 for automatic correction, as well as for personalized feedback and feedforward. The first Challenge (called “Challenge 0” on the figure above) helps students in getting familiar with CAFÉ 2.0. Challenges 1-5 are cumulative in terms of the course subjects covered (loops, plus Graphical Loop Invariant, plus arrays, plus modularity). Challenges 2 to 4 build on each other to foster the internalization of the Graphical Loop Invariant Based Programming methodology. The last Challenge is designed as an integrative task revolving around dynamic memory allocation and pointers.