<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>An Exploratory Study of Students' Mastery of Iteration in the High School</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Emanuele Scapin</string-name>
          <email>scapin.emanuele@spes.uniud.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Claudio Mirolo</string-name>
          <email>claudio.mirolo@uniud.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Udine</institution>
          ,
          <addr-line>33100 Udine</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Although a number of studies report about novices' di culties with basic ow-control constructs, concerning both the understanding of the underlying notional machine and the logical connections with the application domain, this issues have not yet been extensively explored in the context of high-school education. As part of a project whose long-run goal is identifying methodological tools to improve the learning of iteration, we analyzed how a sample of 164 high-school students' approached three small programming tasks involving basic looping constructs, as well as two questions on their subjective perception of difculty. If, on the one hand, most students seem to have developed a viable mental model of the basic workings of the underlying machine, on the other, dealing at a more abstract level with loop conditions and nested ow-control structures appears to be challenging. As to the implications for teachers, the results of the analysis suggest that more e orts should be addressed to develop a method for testing the conjectures about program behavior, as well as to the treatment of loop conditions in connection with the problem statement.</p>
      </abstract>
      <kwd-group>
        <kwd>Informatics education</kwd>
        <kwd>Programming learning</kwd>
        <kwd>Iteration constructs</kwd>
        <kwd>Novice programmers</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Students' di culties to learn programming are well known to computer science
educators, e.g. [
        <xref ref-type="bibr" rid="ref19 ref25 ref6">6,25,19</xref>
        ]. The reasons may be manifold, ranging from lack of
problem solving skills to the need for accuracy and intensive practice.
Programming is indeed problem-solving intensive: according to Gomes and Mendes [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]
it requires \not a single, but a set of skills", and students may fail to develop a
viable model of the underlying notional machine [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ] or to be able to connect
code execution with its functional purpose [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Part of the di culties may also
be related to the habits and expectations of both teachers and learners [
        <xref ref-type="bibr" rid="ref13 ref24">13,24</xref>
        ].
      </p>
      <p>
        Signi cant problems and misconceptions are reported even for such basic
ow-control constructs as conditionals and loops. Kaczmarczyk et al. [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], for
instance, identi ed \a number of misconceptions all related to an inability to
properly understand the process of while loop functioning", and Cherenkova
et al. [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] found that \students have signi cant trouble with conditionals and
loops, with loops being particularly challenging". Although most related studies
focus on tertiary CS1 courses, it is conceivable to expect that similar issues are
especially signi cant at the high-school (i.e. upper secondary) level of instruction.
      </p>
      <p>
        On this basis, we engaged on a project to investigate the teaching and
learning of iteration, in the high school, as well as to identify methodological tools to
improve code comprehension. The rst steps of this project, discussed in [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ],
explored and contrasted teachers' vs. students' perceptions of the major di culties
related to programming, in general, and more speci cally to iteration.
      </p>
      <p>
        Now, the objective of the present analysis is to gain some preliminary
insights into high-school students' mastery of basic iteration constructs. Here by
mastery we mean conceptual mastery of code structures, focusing on program
comprehension rather than construction [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. We used as instrument a survey
including three tiny problems, referred to as tasklets here, to address each of the
learning dimensions introduced in [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ], namely the understanding of the
computation model underlying iteration, the ability to establish relations between the
components of a loop and the statement of a problem, the ability to interpret the
program structures based on iteration. In addition, in light of the presumed role
of metacognitive skills in e ective learning [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], we asked students two questions
about their subjective perceptions of di culty.
      </p>
      <p>We can re-state the goals of our exploratory investigation as research
questions as follows: To what extent are students pro cient with the programming
learning dimensions mentioned above? And do their subjective perceptions of
di culty correlate with their actual performance? Although it would have been
more insightful to cover a larger and more varied set of programming tasks, we
decided to assign only three small tasklets in order to limit the risk that teenage
students lose their concentration and provide scarcely meaningful answers.</p>
      <p>Having set the general objectives and background of this work, the rest of the
paper is organized as follows. Section 2 presents the tasklets and the questions
asked to students. Section 3 summarizes the results of the analysis. Finally, in
Section 4 we discuss the ndings and outline some future perspectives.
2
2.1</p>
      <p>Tasklets and questions</p>
    </sec>
    <sec id="sec-2">
      <title>Tasklet 1: identifying the correct loop condition</title>
      <p>Tasklet 1 was aimed to explore the ability to draw connections between a simple
loop condition and the statement of a problem by reasoning on a ow chart.</p>
      <p>Problem statement: The algorithm represented by the ow chart in Figure 1
(left) computes the number of bits of the binary representation of a positive
integer n, i.e. the smallest exponent k such that 2k is greater than n. Choose the
appropriate condition among the four listed below.</p>
      <p>
        The four available options were: 2k = n, 2k n, 2k &lt; n and 2k &gt; n.
To achieve this | supposedly easy | task, students were expected to read
carefully the statement above and, for each of the listed conditions, gure out
the relationship between k and n after exiting the loop. The speci c focus of this
tasklet is suggested by the frequency of condition-related issues, see e.g. [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
2.2
      </p>
    </sec>
    <sec id="sec-3">
      <title>Tasklet 2: ascertaining the number of iterations</title>
      <p>Tasklet 2 addressed students' mastery of the \mechanics" of the execution of a
loop controlled by a non-trivial condition and including a nested if.</p>
      <p>Problem statement: The program shown in Figure 1 (right) checks if two
positive integer m and n are co-prime. If the input values are m=15 and n=44,
how many times the while loop will repeat?</p>
      <p>
        The above question could be answered by choosing among six options, namely:
0, 1, 2, 3, 4 or more, and the loop never ends. As we can see in
Figure 1, the loop is characterized by a composite condition (using two ands)
and a nested if-else. In order to identify the right option students were
essentially required to trace the code execution carefully. Thus, this tasklet addresses
tracing skills, which have been in the scope of several investigations, e.g. [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ].
2.3
      </p>
    </sec>
    <sec id="sec-4">
      <title>Tasklet 3: recognizing functionally equivalent programs</title>
      <p>Tasklet 3, the most challenging one, asked to recognize equivalence between
di erent programs in order to investigate the ability to grasp comprehensively
nested combinations of conditionals and iteration constructs.</p>
      <p>Problem statement: Consider the ve programs in Figure 2 and assume that
the input values of m and n are always positive integers. Two such programs are
equivalent if they compute and print the same output whenever they are run for
the same input data. Identify the equivalent programs in Figure 2.</p>
      <p>
        To approach this problem on functional equivalence, students had to reason
at a more abstract level. Each program involves nested constructs whose behavior
must be grasped and dealt with comprehensively. The last tasklet is similar in
structure as well as in spirit to that discussed in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
Besides engaging in the three tasklets above, the students were asked two short
questions about their subjective perception of di culties. The rst one was a
multiple choice question: \What do you nd most di cult when you use loops ?"
The ve available options reported the di culties that emerged as most signi
cant from the teachers' interviews [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]:
i. To nd the condition of a while or do-while loop;
ii. To de ne a complex condition including logical operators (AND, OR, NOT);
iii. To deal with nested loops;
iv. To understand, in general, when the loop should end;
v. To deal with the loop control variable.
      </p>
      <p>The second question: \What kind of mistakes a ected your performance most
signi cantly?" was instead open, so the students could choose to indicate any
source of error, either conceptual or of a di erent nature.
3</p>
      <p>Data collection and results
The (anonymous) survey was administered to 164 students, most of whom
attending the second or third year (age 15{17) of scienti c and technical high
schools, i.e. when the basic ow-control constructs are introduced. As we have
seen in the section 2, all three tasklets are numerical in nature, but this choice
is due to the fact that so are most of the examples students are exposed to in
class. Anyway, they are just based on simple arithmetic, familiar to students.</p>
      <p>We now present the main results of our investigation relative to the three
tasklets and the two questions included in the survey. Overall, only about 8% of
the students solved all the three problems correctly, 27% provided two correct
answers, 39% one correct answer, and 26% were wrong on all tasklets.
3.1</p>
    </sec>
    <sec id="sec-5">
      <title>Tasklet 1: identifying the correct loop condition</title>
      <p>Table 1 summarizes the results concerning tasklet 1. A little less than 40% of
the students provided the correct answer, namely 2k n, whereas about as
many selected one of the two seriously wrong options, either 2k = n or 2k &gt; n.
Although the ow chart is rather simple, consisting of a very standard loop
structure, and the problem speci cation is accurate, it turns out that students
can easily be misled about the role or the interpretation of the loop condition.
3.2</p>
    </sec>
    <sec id="sec-6">
      <title>Tasklet 2: ascertaining the number of iterations</title>
      <p>As shown in Table 2, about 60% of the students chose the right option for
tasklet 2, i.e. three iterations. It hence appears that a large majority of them is
at ease with the functioning of iteration combined with a nested conditional, as
well as with the interpretation of a composite (loop) condition including logical
operators. It is conceivable that they identi ed the right option by tracing the
code execution | what they probably did not try to do, on the other hand, to
check their answer for tasklet 1.
3.3</p>
    </sec>
    <sec id="sec-7">
      <title>Tasklet 3: recognizing functionally equivalent programs</title>
      <p>The rates of recurrent answers relative to tasklet 3 are listed in Table 3. It
was clearly the hardest challenge and, as we can see, less than one fth of the
students were able to recognize that program 1 and program 4 are the equivalent
ones. In addition, most of the answers grouped in the last row of Table 3 are
meaningless in that only one program was selected (about 30% of the whole
sample), conceivably indicating that they just decided to skip this tasklet.</p>
      <p>While such pairings as 1{3 or 4{5 (see Fig. 2) are likely to signal serious
misconceptions, it is worth noting that regarding program 2 and program 4
as equivalent may be more simply ascribable to carelessness, i.e. not paying
attention to the fact that the roles of x and y are swapped, but those of m and n
are not. Here again, however, the frequency of incorrect answers indicates that
students are not used to test their conjectures by tracing code execution.
3.4</p>
    </sec>
    <sec id="sec-8">
      <title>Subjective perception questions</title>
      <p>The pie chart in Fig. 3 summarizes students' answers to the question: \What do
you nd most di cult when you use loops? " As we can see, nested loops are the
source of issues reported most frequently (41.5%), followed by the de nition of
composite conditions (23.2%), the latter possibly due to insu cient familiarity
with Boolean logic. Then the rates of the other options are, in decreasing order:
guring out a suitable loop condition (15.20%), understanding when an iteration
should end (12.8%), and dealing with loop control variables (7.3%).</p>
      <p>What emerges by comparing the subjective perception of di culty (when
dealing with iteration) to the actual performance in the three tasklets is that
students may underestimate their lack of mastery of loop conditions. If, on the
one hand, more than 60% of them failed to choose the right option for tasklet 1
(in fact a straightforward condition), on the other only about 15% indicated the
implied feature, i.e. identifying the loop condition, as a major source of di culty.</p>
      <p>Although the rate of choice of this feature is slightly higher (almost 18%)
among those students who provided an incorrect answer for tasklet 1, there</p>
      <sec id="sec-8-1">
        <title>To nd the condition of a while or do-while loop (1);</title>
      </sec>
      <sec id="sec-8-2">
        <title>To de ne a complex condition including logical operators (2);</title>
      </sec>
      <sec id="sec-8-3">
        <title>To deal with nested loops (3);</title>
      </sec>
      <sec id="sec-8-4">
        <title>To understand, in general, when the loop should end (4);</title>
      </sec>
      <sec id="sec-8-5">
        <title>To deal with the loop control variable (5).</title>
        <p>appear to be no statistically signi cant correlation between correct/incorrect
answers to this tasklet and perceiving or not the related feature as a major
source of di culty: by cross-tabulating the corresponding counts, see Table 4,
and subjecting them to a 2-test we get a p-value of about 0.35, meaning that
the data are fairly consistent with the assumption of independence of the two
variables (null hypothesis). In addition, the limited awareness of di culties with
loop conditions is also signaled by the observation that just one out of the ten
students who failed only on tasklet 1 seems to give prominence to the problem.
More in general, as can be elicited \pictorially" from the partitioned bars in
Figure 4, we cannot nd any statistical evidence of correlation between poor
performance in subsets of the tasklets and subjective perception of di culty
with speci c concepts.</p>
        <p>
          To conclude the summary of the results of interest here, we consider the
answers to the second question about the mistakes having had more severe
implications in the students' subjective perception. An inductive analysis [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ] of
keywords occurring in the open answers gave rise to the categories summarized
in Table 5. From the data in the right column it appears that of the 37.6%
of students who identify some speci c concept as a major source of mistakes,
more than one fourth mention precisely iteration, so con rming they are aware
of the relevance of this topic to their learning of programming. Other reported
concepts, with similar or lower frequency, refer to procedural and object
abstractions, language syntax, mathematical and logical prerequisites.
30.0%
25.0%
20.0%
15.0%
10.0%
5.0%
0.0%
loop control variable
when loop ends
nested loops
complex condition
identify loop condition
all incorrect
        </p>
        <sec id="sec-8-5-1">
          <title>Q1,Q2incorrect</title>
        </sec>
        <sec id="sec-8-5-2">
          <title>Q1,Q3incorrect</title>
          <p>
            onlyQ1incorrect
nlyQ2incorrect
o
onlyQ3incorrect
all correct
Based on the data we collected, as can be seen from the bars in Fig. 4, almost two
thirds of the students achieved successfully no more than one of the three
proposed tasklets. Mastery of iteration, even in relatively simple programs, is then
to be considered a cognitively demanding learning objective for the considered
age range. The results outlined in the previous section appear to corroborate,
in the high school context, the ndings of previous work addressing students'
di culties with conditionals and loops, e.g. [
            <xref ref-type="bibr" rid="ref14 ref4">4,14</xref>
            ]. In particular, it turns out that
dealing with nested ow-control structures and, perhaps to a minor extent, with
loop conditions are especially challenging to novices, the former aspect also in
their subjective perception.
          </p>
          <p>
            Here is a summary of our interpretation of the ndings.
i. When (essentially) required to trace the code execution, as in tasklet 2, a
large majority of the students are able to determine the correct outcome,
see Table 2. It is also conceivable that a number of the about 20% who
opted for `2' or `4 or more' iterations made only minor computing mistakes.
We can then presume that most high school students develop a viable and
accurate enough mental model of the notional machine underlying code
execution, including the functioning of nested constructs and the evaluation
of relatively complex conditions.
ii. It is worth observing that 77% of the students who were correct in tasklet 2
provided seriously wrong answers to tasklet 1 or tasklet 3. Apparently, then,
the students tend to not exploit their tracing abilities in order to test their
conjectures about program behavior. Th0is9/1o5b/2s0e2r0vation could be explained
either by some general lazy attitude or, what is more relevant from a
pedagogical perspective, by lack of method to approach programming tasks.
iii. As shown in Table 1, more than 40% of the students chose seriously
incorrect options in tasklet 1 ( rst and last option). A similar performance
shows that, as a matter of fact, a large part of them are unable to master
the relationships between loop condition and accurate speci cation in the
application domain, even in a straightforward situation. This may possibly
be ascribed to confusion about the role of the loop condition, meant as an
`exit' condition instead of a `continue' condition, or to some more basic lack
of problem-solving skills.
iv. Overall, the students seem to underestimate their di culties to deal with
loop conditions | even simple conditions. On the one hand, they did not
feel the need to check their solution to tasklet 1 by tracing the program
execution for sample inputs (what could have been done very quickly). On
the other hand, only a low percentage of those who made serious errors in
tasklet 1 and/or tasklet 2 perceive their weakness in this respect as a major
di culty (see the chart in Figure 4).
v. By comparing students' performance in tasklets 2 and 3, it appears that
their di culties with nested constructs are not so much about the
mechanics of code execution as about the ability of grasping code behavior at a more
abstract level. So, the crucial point is how to develop students' abstraction
skills, besides the understanding of the mechanical features of code (to
illustrate which there are several widespread tools | see for example the
paragraphs on program visualization in [
            <xref ref-type="bibr" rid="ref19">19</xref>
            ]).
          </p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-9">
      <title>Implications for instructors</title>
      <p>
        A few provisional implications for the instructional practice can be drawn from
the points raised above. In particular, we point out three potential insights, which
are worth further, more accurate investigation. By referring to a competency
framework for computing education [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], the rst two pertain to the skills area
and the third one to the dispositions area:
{ Firstly, more e orts are to be addressed to the development of a method to
approach programming tasks, in particular to identify suitable test cases in
order to con rm or refute working conjectures.
{ Secondly, more careful attention should be paid to the role and treatment of
loop conditions, especially in connection with a problem's statement.
{ Finally, at the meta level, students' attitude to think critically about their
learning should be enhanced, for example by asking them to make explicit
their degree of self-con dence in the achievement of a task or of a part of it.
      </p>
      <p>
        Learning to program is however a slow and gradual process, as argued by
Dijkstra in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], and therefore the teacher must grant adequate learning time to
be spent on several e ective examples.
      </p>
    </sec>
    <sec id="sec-10">
      <title>Future work and perspectives</title>
      <p>To begin with, in order to validate (or refute) our provisional interpretation of the
ndings discussed above, our next step will be to design a more comprehensive
survey, to be administered to a larger sample of students, from as wide an area
of the country as possible.</p>
      <p>
        We are also trying to envisage appropriate methodological approaches to the
teaching and learning of iteration. In this respect, we think that it would be
helpful to collect a rich and varied set of examples, not limited to the
stereotypical code patterns mentioned in the teachers' interviews [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]. In particular,
such examples should address \interesting" problems involving more complex
loop conditions or (nested) combinations of ow-control structures.
      </p>
      <p>
        As to the development of students' abstraction skills to interpret program
behavior, a possible line of research could be based on de Raadt's and colleagues
approach to explicitly teaching (and assessing) programming strategies [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], which
are relevant to a comprehensive understanding of nested constructs. Another
potential source of inspiration in this respect may be the instructional work that
elaborates on the concept of loop invariant [
        <xref ref-type="bibr" rid="ref1 ref28 ref8 ref9">28,1,9,8</xref>
        ], suitably adapted to t less
formal learning styles [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>
        As a further middle/long term objective, from a more general pedagogical
standpoint, it may be interesting to explore the implications of the productive
failure perspective [
        <xref ref-type="bibr" rid="ref15 ref17">15,17</xref>
        ] in a computing education context, especially in
connection with the learner's self-con dence on the solution provided [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ].
5
      </p>
      <p>Conclusions
As part of a project aimed at identifying methodological tools to enhance a
comprehensive understanding of iteration, in this paper we have analyzed the
answers of a sample of 164 high school students to three small programming
tasks and two questions on their perception of di culty. The results appear
to con rm that dealing with iteration, even in simple programs, is cognitively
demanding to students of the considered age range.</p>
      <p>Apparently, the problems faced by most of the students should not be
ascribed to a awed model of the notional machine. Rather, lack of carefulness and
accuracy, i.e. of a method, while dealing with the program constructs may be
at the root of several mistakes. In particular, interpreting loop conditions and
abstracting on nested ow-control structures turned out to be major challenges
to novices. To extend the scope of this exploratory analysis, we are now planning
to design a survey to collect more data on students' performance in small
programming tasks, as a basis to develop methodological tools to enhance students'
mastery of iteration and to support their learning.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Arnow</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Teaching programming to liberal arts students: Using loop invariants</article-title>
          .
          <source>In: Proceedings of the 25th SIGCSE Symposium on Computer Science Education</source>
          . pp.
          <volume>141</volume>
          {
          <fpage>144</fpage>
          . SIGCSE '94,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>1994</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Astrachan</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          :
          <article-title>Pictures as invariants</article-title>
          .
          <source>In: Proceedings of the 22nd SIGCSE Technical Symposium on Computer Science Education</source>
          . pp.
          <volume>112</volume>
          {
          <fpage>118</fpage>
          . SIGCSE '91,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>1991</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Bergin</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reilly</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Traynor</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Examining the role of self-regulated learning on introductory programming performance</article-title>
          .
          <source>In: Proceedings of the 1st International Workshop on Computing Education Research</source>
          . pp.
          <volume>81</volume>
          {
          <fpage>86</fpage>
          . ICER '05,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Cherenkova</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zingaro</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Petersen</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Identifying challenging cs1 concepts in a large problem dataset</article-title>
          .
          <source>In: Proc. of the 45th ACM Tech. Symp. on Computer Science Education</source>
          . pp.
          <volume>695</volume>
          {
          <fpage>700</fpage>
          . SIGCSE '14,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Dijkstra</surname>
            ,
            <given-names>E.W.</given-names>
          </string-name>
          :
          <article-title>On the cruelty of really teaching computing science</article-title>
          .
          <source>Communications Of The Acm</source>
          <volume>32</volume>
          (
          <issue>12</issue>
          ),
          <volume>1398</volume>
          {
          <fpage>1404</fpage>
          (
          <year>1989</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>Du</given-names>
            <surname>Boulay</surname>
          </string-name>
          ,
          <string-name>
            <surname>B.</surname>
          </string-name>
          :
          <article-title>Some di culties of learning to program</article-title>
          .
          <source>Journal of Educational Computing Research</source>
          <volume>2</volume>
          ,
          <issue>57</issue>
          {
          <volume>73</volume>
          (01
          <year>1986</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Frezza</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Daniels</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pears</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , Cajander, r.,
          <string-name>
            <surname>Kann</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kapoor</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McDermott</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Peters</surname>
            ,
            <given-names>A.K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sabin</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wallace</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Modelling competencies for computing education beyond 2020: A research based approach to de ning competencies in the computing disciplines</article-title>
          .
          <source>In: Proceedings Companion of the 23rd Annual ACM Conference on Innovation and Technology in Computer Science Education</source>
          . pp.
          <volume>148</volume>
          {
          <fpage>174</fpage>
          .
          <article-title>ITiCSE 2018 Companion</article-title>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Furia</surname>
            , C.A., Meyer,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Velder</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Loop invariants: Analysis, classi cation, and examples</article-title>
          .
          <source>ACM Computing Surveys (CSUR) 46(3)</source>
          ,
          <volume>1</volume>
          {
          <fpage>51</fpage>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Ginat</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Seeking or skipping regularities? novice tendencies and the role of invariants</article-title>
          .
          <source>Informatics in Education 2</source>
          ,
          <issue>211</issue>
          {
          <fpage>222</fpage>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Gomes</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mendes</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Learning to program - di culties and solutions</article-title>
          . In: International Conference on Engineering Education { ICEE. pp.
          <volume>283</volume>
          {
          <issue>287</issue>
          (01
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Izu</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mirolo</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Comparing small programs for equivalence: A code comprehension task for novice programmers</article-title>
          .
          <source>In: Proc. of the 2020 ACM Conference on Innovation and Technology in Computer Science Education</source>
          . pp.
          <volume>466</volume>
          {
          <fpage>472</fpage>
          . ITiCSE '20,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2020</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Izu</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schulte</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Aggarwal</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cutts</surname>
            ,
            <given-names>Q.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Duran</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gutica</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heinemann</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kraemer</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lonati</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mirolo</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          , et al.:
          <article-title>Fostering program comprehension in novice programmers - learning activities and learning trajectories</article-title>
          .
          <source>In: Proc. of the Working Group Reports on Innovation and Technology in Computer Science Education</source>
          . pp.
          <volume>27</volume>
          {
          <fpage>52</fpage>
          .
          <string-name>
            <surname>ITiCSE-WGR</surname>
          </string-name>
          '
          <fpage>19</fpage>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Jenkins</surname>
          </string-name>
          , T.:
          <article-title>On the di culty of learning to program</article-title>
          .
          <source>In: Proceedings of the 3rd annual LTSN ICS Conference</source>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Kaczmarczyk</surname>
            ,
            <given-names>L.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Petrick</surname>
            ,
            <given-names>E.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>East</surname>
            ,
            <given-names>J.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Herman</surname>
            ,
            <given-names>G.L.</given-names>
          </string-name>
          :
          <article-title>Identifying student misconceptions of programming</article-title>
          .
          <source>In: Proceedings of the 41st ACM Technical Symposium on Computer Science Education</source>
          . pp.
          <volume>107</volume>
          {
          <fpage>111</fpage>
          . SIGCSE '10,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Kapur</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Examining productive failure, productive success, unproductive failure, and unproductive success in learning</article-title>
          .
          <source>Educational Psychologist</source>
          <volume>51</volume>
          ,
          <issue>1</issue>
          {
          <fpage>11</fpage>
          (04
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Lister</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Simon</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Thompson</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Whalley</surname>
            ,
            <given-names>J.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Prasad</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Not seeing the forest for the trees: Novice programmers and the solo taxonomy</article-title>
          .
          <source>In: Proceedings of the 11th Annual SIGCSE Conference on Innovation and Technology in Computer Science Education</source>
          . pp.
          <volume>118</volume>
          {
          <fpage>122</fpage>
          . ITICSE '06,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Loibl</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Roll</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rummel</surname>
          </string-name>
          , N.:
          <article-title>Towards a theory of when and how problem solving followed by instruction supports learning</article-title>
          .
          <source>Educational Psychology Review</source>
          <volume>29</volume>
          (
          <issue>4</issue>
          ),
          <volume>693</volume>
          {715 (Dec
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Lopez</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Whalley</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Robbins</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lister</surname>
          </string-name>
          , R.:
          <article-title>Relationships between reading, tracing and writing skills in introductory programming</article-title>
          .
          <source>In: Proc. 4th Int. Workshop on Comput. Educ. Research</source>
          . pp.
          <volume>101</volume>
          {
          <fpage>112</fpage>
          . ICER '08,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, USA (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Luxton-Reilly</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Simon</surname>
            , Albluwi,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Becker</surname>
            ,
            <given-names>B.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Giannakos</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kumar</surname>
            ,
            <given-names>A.N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ott</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paterson</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Scott</surname>
            ,
            <given-names>M.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sheard</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Szabo</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Introductory programming: A systematic literature review</article-title>
          .
          <source>In: Proceedings Companion of the 23rd Annual ACM Conference on Innovation and Technology in Computer Science Education</source>
          . pp.
          <volume>55</volume>
          {
          <fpage>106</fpage>
          .
          <article-title>ITiCSE 2018 Companion</article-title>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Mayring</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Qualitative Content Analysis: Theoretical Foundation, Basic Procedures</article-title>
          and
          <string-name>
            <given-names>Software</given-names>
            <surname>Solution</surname>
          </string-name>
          .
          <source>Klagenfurt</source>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Metcalfe</surname>
          </string-name>
          , J.:
          <article-title>Learning from errors</article-title>
          .
          <source>Annual Review of Psychology 68, 465{489 (Jan</source>
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Mirolo</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Is iteration really easier to learn than recursion for cs1 students?</article-title>
          <source>In: Proc. of the 9th Annual International Conference on International Computing Education Research</source>
          . pp.
          <volume>99</volume>
          {
          <fpage>104</fpage>
          . ICER '12,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23. de Raadt,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Watson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Toleman</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          :
          <article-title>Teaching and assessing programming strategies explicitly</article-title>
          .
          <source>In: Proceedings of the 11th Australasian Conference on Computing Education -</source>
          Volume
          <volume>95</volume>
          . pp.
          <volume>45</volume>
          {
          <fpage>54</fpage>
          . ACE '
          <volume>09</volume>
          ,
          <string-name>
            <surname>Australian</surname>
            <given-names>Computer Society</given-names>
          </string-name>
          , Inc.,
          <string-name>
            <surname>Darlinghurst</surname>
          </string-name>
          , Australia (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Robins</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Haden</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Garner</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Problem distributions in a cs1 course</article-title>
          .
          <source>In: Proc. of the 8th Australasian Conference on Computing Education -</source>
          Volume
          <volume>52</volume>
          . pp.
          <volume>165</volume>
          {
          <fpage>173</fpage>
          . ACE '
          <volume>06</volume>
          ,
          <string-name>
            <surname>Australian</surname>
            <given-names>Computer Society</given-names>
          </string-name>
          , Inc.,
          <string-name>
            <surname>Darlinghurst</surname>
          </string-name>
          , Australia (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Robins</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rountree</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rountree</surname>
          </string-name>
          , N.:
          <article-title>Learning and teaching programming: A review and discussion</article-title>
          .
          <source>Computer Science Education</source>
          <volume>13</volume>
          (
          <issue>2</issue>
          ),
          <volume>137</volume>
          {
          <fpage>172</fpage>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Scapin</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mirolo</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>An exploration of teachers' perspective about the learning of iteration-control constructs</article-title>
          . In: Pozdniakov,
          <string-name>
            <given-names>S.N.</given-names>
            ,
            <surname>Dagiene_</surname>
          </string-name>
          , V. (eds.) Informatics in Schools. New Ideas in School Informatics. pp.
          <volume>15</volume>
          {
          <fpage>27</fpage>
          . Springer, Cham (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <surname>Sorva</surname>
          </string-name>
          , J.:
          <article-title>Notional machines and introductory programming education</article-title>
          .
          <source>Trans. Comput. Educ</source>
          .
          <volume>13</volume>
          (
          <issue>2</issue>
          ), 8:
          <issue>1</issue>
          {8:
          <issue>31</issue>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <string-name>
            <surname>Tam</surname>
          </string-name>
          , W.C.:
          <article-title>Teaching loop invariants to beginners by examples</article-title>
          .
          <source>In: Proceedings of the 23rd SIGCSE Technical Symposium on Computer Science Education</source>
          . pp.
          <volume>92</volume>
          {
          <fpage>96</fpage>
          . SIGCSE '92,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>1992</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>