<!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>Problem Solving and Interrelation of Concepts in Teaching Algorithmic Thinking and Programming</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Zsanett Szabó</string-name>
          <email>szabo.zsanett@inf.elte.hu</email>
        </contrib>
        <contrib contrib-type="editor">
          <string-name>Eötvös Loránd University</string-name>
        </contrib>
      </contrib-group>
      <pub-date>
        <year>2020</year>
      </pub-date>
      <fpage>29</fpage>
      <lpage>31</lpage>
      <abstract>
        <p>Developing problem-solving thinking should not be the task of only mathematics. It should be the task also of informatics. Students' problem-solving abilities can be greatly enhanced by solving consciously structured, interrelated programming tasks. To create a well-structured series of tasks it is necessary, that we understand and become aware of our own system of concepts. As a teacher, we need to be aware of the concepts that are really important and how they relate to each other. Our aim is to help our students to develop connections and correspondences within their concepts that will facilitate the integration of new concepts into their concept map. In this paper we deal with this concept map and the issues that arise with it.</p>
      </abstract>
      <kwd-group>
        <kwd>teaching informatics</kwd>
        <kwd>teaching programming</kwd>
        <kwd>problem solving</kwd>
        <kwd>algorithmic thinking</kwd>
        <kwd>concept map</kwd>
        <kwd>concept system</kwd>
        <kwd>beginning of teaching programming</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>MSC: 68</p>
    </sec>
    <sec id="sec-2">
      <title>1. Introduction</title>
      <p>
        William James and György Pólya also said [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], that problem solving is one of
the most typical and most unique human activities. Therefore one of the most
important task of education is to develop students’ problem solving thinking. It is
one of the keystones of teaching mathematics. According to Pólya, the main task of
teaching mathematics in secondary school is to emphasize the systematic work of
problem solving. Nowadays systematic problem-solving should play an important
Copyright © 2020 for this paper by its authors. Use permitted under Creative Commons License
Attribution 4.0 International (CC BY 4.0).
role also in previous years, not only in high school and not just in mathematics,
but also in other subjects such as computer science.
2. Problem solving thinking with programming
According to Pólya, problem-solving thinking is in fact purposeful thinking, the
search for a means to achieve a set goal [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. We can develop this purposeful thinking,
the problem-solving ability of students through programming tasks in a similar way
to mathematical tasks. When we teach problem solving thinking in informatics we
teach attitudes and algorithmic thinking.
      </p>
      <sec id="sec-2-1">
        <title>2.1. Problem solving like in Pólya’s model</title>
        <p>
          The steps of Pólya’s problem-solving model [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] that is basically designed for solving
mathematical problems, is also well applicable with a little addition and
modification for solving programming problems. Steps of Polya’s model are the following:
        </p>
        <sec id="sec-2-1-1">
          <title>P1. Understand the problem P2. Devise a plan P3. Carry out the plan P4. Look back</title>
          <p>
            Problem solving in mathematics is very similar to algorithmic program solving.
As proof of this we show one of the algorithm problem solving strategies [
            <xref ref-type="bibr" rid="ref10">10</xref>
            ] which
is very similar to Pólya’s problem solving model. Steps of this algorithm problem
solving strategy are the following:
          </p>
        </sec>
        <sec id="sec-2-1-2">
          <title>S1. Analyse the problem</title>
          <p>S2. Restate the problem
S3. Write out examples (input-output)
S4. Break the problem into its component parts
S5. Make an algorithm
S6. Step through your example data with algorithm
S7. Code it up
S8. Make tests</p>
          <p>S9. Refactor
It would be easy to compare these steps with the steps of Pólya’s problem solving
model. Their similarity can be seen very well if we compare the helping questions
for each step that guide us through the problem-solving process.</p>
        </sec>
      </sec>
      <sec id="sec-2-2">
        <title>2.2. Problem solving like in other models</title>
        <p>
          Of course, not only Pólya, but also others have developed problem-solving methods
and problem-solving models. György Kontra gave a detailed review of these [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ].
In these models the same that the mathematical problem solving and algorithmic
problem solving can be parallelized in each of them in the same way as Pólya’s
model.
        </p>
        <p>
          At the international level there are studies about the similarity and diference
between algorithmic and mathematical problem-solving which have been previously
published [
          <xref ref-type="bibr" rid="ref10 ref2 ref3">2, 3, 10</xref>
          ].
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>2.3. Diference between mathematical and algorithmic problem solving</title>
        <p>
          Perhaps the most striking diference is that while in mathematics it is our job
to perform calculations, in the case of algorithmic problem solving the machine
does the calculations for us. The advantage of this is that we can solve complex
tasks that require a lot of computing. However, compared to solving mathematical
problems, we have a harder task with algorithmic problem solving, since after
solving the problem we have to write out the solution for the users with correct
syntax [
          <xref ref-type="bibr" rid="ref11 ref6 ref9">6, 9, 11</xref>
          ]. Moreover, in algorithmic problem solving, data collection and data
conversion to a suitable form for the algorithm often precedes the actual problem
solving.
        </p>
      </sec>
      <sec id="sec-2-4">
        <title>2.4. Importance of teaching problem solving thinking</title>
        <p>Problem solving methods used in programming are often used in real life. Knowing
these problem solving methods and applying them to small problems will help us to
have a toolbox that we can work on when we have to solve a bigger problem. It is
similar to the reason why we learn and teach mathematics, but it focuses on other
types of problem solving in mathematics than in programming. By programming,
we can solve problems that we would not be able to calculate manually.</p>
        <p>Designing a problem solving process, decomposing problems into sub-problems,
applying small problems to larger cases, recursion, thinking backwards are all very
important techniques that can we easily apply in our everyday practice. The easiest
way to illustrate these techniques is to illustrate them through programming.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Efective transfer of knowledge</title>
      <p>For teaching programming and problem-solving thinking correctly and eficiently,
and for forming up of the suitable concept structure it is necessary to think over
the concepts and knowledge of the topic.</p>
      <p>
        György Pólya used the terminology of guided discovery to build the desired
mathematical concept structure. He worked with consciously, purposefully selected
and structured sets of exercises to help students to reach the required concepts
and contexts [
        <xref ref-type="bibr" rid="ref1 ref8">1, 8</xref>
        ]. Because of the similarity of mathematical and programming
problem solving, the teaching of algorithmic problem solving and programming
could be made more eficient with such consciously structured sets of tasks. The
set of tasks which are created in this way could greatly help teachers and students
to develop the basic concepts of algorithms and programming.
      </p>
      <p>To create well-structured series of tasks it is necessary, that we understand and
become aware of our own system of concepts. As a teacher, we need to be aware
of the concepts that are really important and how they relate to each other. Our
aim is to help our students to develop connections and correspondences within their
concepts that will facilitate the integration of new concepts into their concept map.</p>
      <sec id="sec-3-1">
        <title>3.1. Short overview of the integration of new concepts</title>
        <p>
          One of the basic assumptions of cognitive psychology is that students largely
“construct” new knowledge themselves. They not only add new information to their
existing knowledge repository, but they also link new knowledge to their
existing knowledge [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]. They integrate new knowledge into their existing knowledge
structures by forming new relations between the structures.
        </p>
        <p>
          From this point of view, informatics and programming are fortunate, because we
can make some relations with programming tasks to many other prior knowledge.
“In the Netherlands, informatics has been defined as a new generation discipline,
because it is linked with Mathematics, Physics, Engineering, Linguistics,
Philosophy, Psychology, Economy, Business, and Social Science in general” [
          <xref ref-type="bibr" rid="ref5 ref9">9, 5</xref>
          ]. In
this way, programming knowledge can integrate into students’ existing knowledge
structures with many, many points of contact, if we consciously pay attention to
those points of contact.
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Development of the concept structure</title>
        <p>To understand our own concept structure, we first need to gather concepts and
then systematize them. When we collect the concepts, we must realize that the
topic of making algorithms and programming uses many concepts, but in many
cases the relations between the concepts are not definite. There is not, or only very
dificult to determine the “correct” order of the teaching of the concepts.</p>
        <p>Relationships between concepts, which appear below, do not represent the order
in which they should be taught. They refer only to relationships between individual
concepts. Because the “correct” order of teaching these concepts depends on many
factors, and because the concepts are interrelated at many points to each other, so
we present only a “general situation”. Thus, it is possible that a connection is not
marked.</p>
        <p>The whole concept structure is quite complex, so we will first illustrate a
simplified version of the whole structure and then its smaller units. After that we show
the complete concept structure by denoting the relationships between the smaller
units.</p>
        <p>A simplified version of the concept structure is shown in Figure 1. Here, the
closely related terms are denoted by a collective name.</p>
      </sec>
      <sec id="sec-3-3">
        <title>3.3. Initial concepts: algorithm, instruction</title>
        <p>At the beginning of the topic making algorithms and programming, we almost
always have to use concepts of instruction, command, algorithm, and some related
concepts. They are illustrated in Figure 2.</p>
        <p>The concept of sequence is a good example of the fact that not all concepts
are named during the teaching process and thus in the students’ own conceptual
structure. Most programming students probably do not hear this concept, but they
still need to know what it means.</p>
      </sec>
      <sec id="sec-3-4">
        <title>3.4. Data, variables, elementary activities</title>
        <p>When we solve algorithmic and programming tasks we will soon need to work with
data and perform operations with that. To store data we have to use diferent
types of variables and their declaration. Related to this we use input and output
operations. These concepts are interconnected at several points, as illustrated in
Figure 3.</p>
        <p>If we need to work with larger amounts or more complex data, we also need to
use diferent data structures (Figure 4). In relation to these concepts the depth,
the environment and the age of group in which these are taught is particularly
important. Because it depends on these factors which data structures we teach
and which we do not.</p>
      </sec>
      <sec id="sec-3-5">
        <title>3.5. Condition, selection, repetition</title>
        <p>One of the most important parts of the concept structure is the concepts related to
conditions, selection and repetition (Figure 5). Understanding these is a
particularly important and indispensable part of learning and teaching this topic, because
algorithms and programs are built mainly on these control structures.</p>
      </sec>
      <sec id="sec-3-6">
        <title>3.6. Troubleshooting and testing</title>
        <p>We also have to deal with troubleshooting and testing when we would like to check
and run our algorithms and programs. Linking concepts (Figure 6) and debugging
methods are highly dependent on the programming environment and the depth
of teaching the topic. Nevertheless a minimal level of troubleshooting is required
regardless of the environment. Debugging cannot really be linked to previous parts
of the concept structure, because debugging and testing may be required at all
levels of making algorithms and programming.</p>
      </sec>
      <sec id="sec-3-7">
        <title>3.7. The whole concept structure</title>
        <p>By combining the above mentioned concepts and the smaller parts of the
concept structure, we can create the “complete” conceptual structure of the topic of
algorithmic programming (Figure 7).</p>
        <p>It contains a few concepts that have not yet been discussed. These concepts
have been left out of the discussion of smaller sections because they are not so
closely related to them, or because they are not necessarily discussed when we
teach the basics of the topic making algorithm and programming, or because they
are not present in all frequently taught programming environments. Examples of
this are operations with diferent types of variables, global and local variables, and
recursion.</p>
        <p>The concept of control structures also appears here for the first time. This
can be omitted from the learning process because it is not important to know the
concept of control structures but the goal is to make the students aware of the
concept and usage of control structures.</p>
      </sec>
      <sec id="sec-3-8">
        <title>3.8. Structure of the teaching process</title>
        <p>Based on this “general version” of conceptual structure of the topic of making
algorithms and programming, it can be seen that there are very complex relationships
between the concepts.</p>
        <p>Therefore there is not, or only very dificult to determine the “correct” order of
the teaching of these concepts. This “correct” order depends on many factors. One
of these is the context in which students are learning a programming language and
where they meet with these concepts. Another important factor is the time, that we
can spend on teaching the topic, the students’ or group’s previous knowledge, and
their age-specific characteristics (such as how abstractly they can think). Similarly,
learners’ interests can play an important role, because it can influence which areas
they can relate the new concepts to.</p>
        <p>We are planning to develop several versions of the concept structure, taking
into account the specialties of each programming environment and programming
language.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Ambrus</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <article-title>Theoretical bases of teaching problem solving (the publication is in Hungarian: A problémamegoldás (feladatmegoldás) tanításának elméleti alapjai</article-title>
          ),
          <source>Pedagógiai Szemle</source>
          Vol.
          <volume>10</volume>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Chaudhry</surname>
            ,
            <given-names>N.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rasool</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <source>A Case Study on Improving Problem Solving Skills of Undergraduate Computer Science Students, World Applied Sciences Journal</source>
          , Vol.
          <volume>20</volume>
          (
          <year>2012</year>
          ),
          <fpage>34</fpage>
          -
          <lpage>39</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>David</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <article-title>On Inductive Process in Algorithmi Problem Solving, Olympiads in Informatis</article-title>
          , Vol.
          <volume>8</volume>
          (
          <issue>2014</issue>
          ),
          <fpage>81</fpage>
          -
          <lpage>91</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Kontra</surname>
            ,
            <given-names>Gy.</given-names>
          </string-name>
          ,
          <article-title>Problem and problem solving thinking (the publication is in Hungarian: Probléma és problémamegoldó gondolkodás</article-title>
          ),
          <source>Magyar Pedagógia</source>
          , Vol.
          <volume>96</volume>
          /4. (
          <year>1996</year>
          ),
          <fpage>341</fpage>
          -
          <lpage>366</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Mulder</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          , Computer Science:
          <article-title>from a BÉTA to a DELTA subject</article-title>
          , Informatica, Tinfon, Vol.
          <volume>11</volume>
          (
          <year>2002</year>
          ),
          <fpage>48</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>Papert</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mindstorms</surname>
            . Children, Computers and
            <given-names>Powerful</given-names>
          </string-name>
          <string-name>
            <surname>Ideas</surname>
          </string-name>
          , New York: Basic Books, Inc. Publishers (
          <year>1980</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Pólya</surname>
            ,
            <given-names>Gy.</given-names>
          </string-name>
          , Mathematical Discovery.
          <article-title>On Understanding, Learning, and Teaching Problem Solving (in Hungarian: A problémamegoldás iskolája</article-title>
          ), Tankönyvkiadó, Budapest (
          <year>1970</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Pólya</surname>
            ,
            <given-names>Gy.</given-names>
          </string-name>
          , How to Solve It,
          <article-title>A New Aspect of Mathematical Method (in Hungarian: A gondolkodás iskolája</article-title>
          ),
          <source>Akkord Kiadó</source>
          , (
          <year>2000</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Saeli</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Perrenet</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>M.G.</given-names>
            <surname>Jochems</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            ,
            <surname>Zwaneveld</surname>
          </string-name>
          ,
          <string-name>
            <surname>B.</surname>
          </string-name>
          ,
          <article-title>Teaching Programming in Secondary School: A Pedagogical Content Knowledge Perspective, Informatics in Education</article-title>
          , Vol.
          <volume>10</volume>
          (
          <year>2011</year>
          ),
          <fpage>73</fpage>
          -
          <lpage>88</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Schwepker</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          , Algorithm Problem Solving Strategies, https://dev.to/ moresaltmorelemon/algorithm
          <article-title>-problem-solving-strategies-</article-title>
          21cp
          <source>(available: 28.01</source>
          .
          <year>2020</year>
          .)
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Szlávi</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zsakó</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <article-title>Programming versus application</article-title>
          , Mittermeir R.T. (
          <article-title>eds) Informatics Education - The Bridge between Using and Understanding Computers</article-title>
          .
          <source>ISSEP 2006, Lecture Notes in Computer Science</source>
          ,
          <volume>4226</volume>
          (
          <year>2006</year>
          ),
          <fpage>48</fpage>
          -
          <lpage>58</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>