Ict Competences Algorithmic Thinking
Ict Competences Algorithmic Thinking
Abstract: A lot has been said about what to teach in ICT in primary and secondary education.
There are serious discussions even debates about it. Much less has been said about why ICT
should be taught. [1] Competences are related actions and tasks done by people (somebody is
competent in a certain field if they are able to solve common tasks related to that field). ICT
curricula contain these competences, together with development tasks, activities, abilities and
skills, always assuming a knowledge system you can rely on. One of the most important
competences, which is gathering more and more ground in primary and secondary education of
dynamically developing countries, is algorithmic thinking. This paper is aimed at dealing with its
depths.
Key words: Informatics and education; Curriculum; Primary and secondary education; Algorithmic
thinking; Problem solving
1. Introduction
The key competences set in the Hungarian National Curriculum are based on the Recommendation of
the European Parliament and of the Council of 18 December 2006 on Key Competences for Lifelong
Learning (2006/962/EC). [2]
The European Union has developed a key competence framework system consisting of 8 elements,
which all individuals need for a successful life in today’s modern economy and society, for acquiring
and renewing knowledge, for evolving the paradigm of lifelong learning and the demand for being
well-educated, and for personal self-realization (communication in your mother tongue,
communication in a foreign language, mathematical and scientific, digital, learning, social
competence, entrepreneurship and cultural expressiveness).
The Hungarian National Curriculum, rephrasing the above a bit, defines the following 9 key
competences: [3]
1. Communication in mother tongue
2. Communication in a foreign language
3. Mathematical competence
4. Scientific competence
5. Digital competence
6. Efficient independent learning
7. Social and civil competence
8. Initiative and entrepreneur’s competence
9. Aesthetic-art awareness and expressiveness
Relying on these key competences and subjects, competences can be defined for certain subjects and
knowledge areas.
Possessing ICT competencies, you are able to apply basic ICT tools and methods for learning and
problem solving in everyday life, at home and at work. Your knowledge can be applied practically in
learning and operating new technologies and methods, in problem solving, in acquiring individual and
community objectives as well as in making decisions that require understanding the possibilities of
information society. [2]
Therefore, ICT competence includes main computer applications such as word-processing, data tables,
databases, information storage and management, communication through the internet and electronic
media in the fields of free time, information sharing, cooperative networking, learning and research. In
addition, you must be aware of the problems concerning the credibility and reliability of accessible
information and the ethic principles related to the interactive use of ICT tools.
The necessary skills cover finding, collecting and processing information, its critical application as
well as distinguishing real and virtual relationships. It also involves the use of devices and tools that
help producing, demonstrating and understanding complex information as well as access to Internet-
based services, their use in research, applying ICT methods in critical thinking, creativity and
innovation.
Many competences partly overlap and entwine: elements necessary for one area support the
competences of another one.
2.1. Algorithmic thinking
In everyday life, both in learning and at work you continually make and execute algorithms, design
series of activities and information flow processes, which make this world fully comprehensible only
for those who are familiar with the basics of these activities. [4]
A Model Curriculum for K–12 Computer Science (Final Report of the ACM K–12 Task Force
Curriculum Committee, October 2003): Computer science students learn logical reasoning,
algorithmic thinking, design and structured problem solving all concepts and skills that are valuable
well beyond the computer science classroom. [5]
National Curriculum Statement Republic of South Africa: The learner is able to design, implement,
test and deliver efficient and effective solutions to problem situations. [6]
2.2. Data modelling
It is quite a common task for everybody to fill in forms. Moreover, you also make such things for
others. While doing so, your aim is always to collect or pass information, which has to be supported
by data sets and data structures. That is why it is so important to describe the objects of the world with
data.
2.3. Modelling the real world
Real phenomena are often studied through models. In order to do so, you need to be familiar with the
basic concepts and steps of modelling, and the methods of applying models. Beyond cognition, you
are expected to consciously use the models for forecasting real phenomena, as well. It is a peculiarity
of modelling that even the actuation of models is a complex creative process.
2.4. Problem solving
Creative human activity is often a kind of problem solving from the – as precise as possible – phrasing
of the problem to the evaluation of the solution, which makes it necessary to analyse the problem in
order to decide whether it is necessary to use an IT tool for the solution; what IT tool(s) can be used
and how; and if such a tool does not exist, how to make one. [7]
According to George Polya the problem-solving process consists of the following phases [4,7]:
• Identifying the problem
• Understanding the problem
• Representing the problem
• Solving the problem
• Communicating the results
2.5. Communication skills
By now man-to-man and man-to-group communication have changed fundamentally: intelligent
devices have stepped among the communicating partners; and these intelligent devices have either
created new communication opportunities or simplified the old ones. This new kind of communication
should be used in everyday life in a proactive way and in the meantime respecting the law: in learning,
at work, in making contacts, relaxing, self-study, resting and development. [8]
2.6. Application skills
Problems arising in everyday life can often be solved more easily with IT tools than with traditional
ones, which requires familiarity with basic general applications as well as with the related IT tools and
methods.
2.7. Team work, collaboration, interoperability
ICT creates an opportunity to solve problems that are not solved by one person: starting with the
ability to use others' results in problem solving through participating in project work to designing and
realizing projects, which requires the skill of using ICT tools that support teamwork and understanding
teamwork methodology.
2.8. Creative skills
ICT problem solving is often a creative process where you use ICT tools in the process of making
something. Just like every act of creation, it starts with repeating elementary creations, continues with
making new ones from these creations, and ends with making independent creations by request lists.
The development of creativity goes from simple miming/pattern pursuing through varying patterns to
real creativity.
2.9. Orientation and information skills
One of the important features of the information society is to guarantee the right of access to
information. However, it is fairly difficult to find the necessary information in a huge set. So it is to
arrange and place useful information in a way that it could be found and utilized effectively.
2.10. Systemic thinking
There are countless systems in your life, including the whole ICT system around you, the various
network systems and communication systems. You have become used to thinking logically and
understanding the ways of life through analysis, which often results in success but not always. When
facing a system, you may have to apply another way of thinking. Simple classical logic might fail
when it tackles a system (see chaos theory). A system can also operate by itself owing to the
interaction of its parts. The output is often determined by the structure of the system and not by the
efforts of people. If you can recognize the connections that control the events, you might become able
to affect your life and work. To examine, handle, develop and create these connections requires
another kind of knowledge and examination.
sometimes corrects the mistakes made. An automaton, however, does not think but carries out (if it
can) what is written in the program.
It can be stated that most people devise algorithms for others (and for themselves), while
implementing algorithms is a common task for everybody. [4]
3.1. Recognising and Understanding Algorithms (a sequence of activities)
The most elementary level of algorithmic thinking is recognising algorithms and the problems that can
be solved by using them.
What is an algorithm? It is a procedure that can be divided into steps; it is implementable (and there is
an implementer belonging to it); it has a fixed order of executing operations; during the steps
something happens to something; the steps are either elementary actions (that the implementer
understands) or they are algorithms themselves (which implies further specification).
Understanding has two stages:
• You understand what you should do,
• You understand why you should do that and not something else.
The question “why” belongs to a higher level of thinking, to the analysis of algorithms, which means
recognising, rejecting, varying and selecting alternatives.
Likewise, the ability to understand a known (i.e. it has already been explained) and the ability to
understand an absolutely new algorithm that has never been seen before also represent different levels
of knowledge. The latter is the third level of algorithmic thinking.
You perform many routine activities in your everyday life. Some of them like getting up and going to
bed are programmed into you, whereas there are others that you create yourself by modifying similar
ones in a changed – often “emergency” situations (e.g. going to school).
3.2. Implementing Algorithms (a sequence of actions)
If you received instructions from someone independent of you (especially in a dependency relation)
step by step, you would have little scope for consideration but carry out the algorithms, whereas if it
were you to form the instruction, it would be completely different.
The ability to implement algorithms is a level higher than the ability to understand them. It is not
enough to simply understand a process but you have to monitor the interim stages during the
implementation (keep in mind, register etc.) i.e. you should not pay attention to what is going on but to
what you should do next depending on certain factors.
If you are in possession of this competence, you can perceive physical properties and their processes
important for the implementation, and thus you can adjust the steps of actions if necessary.
3.3. Analysing Algorithms (a sequence of actions)
Analysing algorithms is partly about recognising the basic rules of constructing algorithms:
• Each basic step is to be executed (in the given order).
• You are to choose one of the basic steps and execute it.
• The basic steps are to be executed several times, repeatedly. [5]
Since the steps of algorithms themselves can also be algorithms, which can be labelled (actually, they
should be labelled so that they could be quoted), the abstract notion of procedure can be formed.
On the other hand, the analysis of algorithms means that you understand what their parts are for, what
your goal was when making them and how the whole problem solving process was broken down to
smaller subtasks. … [9,10]
In addition to the above mentioned, the algorithm reading ability also belongs here. It means that you
are able to understand a complex activity formed in an algorithmic language by someone else: you can
see the aims of the parts, their relations to other parts and you are also able to explain them.
(Verbalization is not identical with understanding; in fact it is probably a new, higher level.)
3.4. Making Algorithms (a sequence of actions)
If you are able to understand and implement algorithms, you are not necessarily able to make new
ones as that process requires some surplus. First you should consider
• what you know;
• what you would like to know;
• what will happen;
• what data you will have to work with;
• and how you can break down your tasks into smaller sub-tasks.
It partly means swapping reading activities for writing activities exchanging means, but there is much
more to that. At lower competence levels you have guidelines, which help your thinking, but in this
case you need to find out everything yourself. It cannot be done smoothly unless you acquire some
systematic method for making algorithms (and their related data models). [10] You need to find a
method to shortlist the infinite set of algorithms to a handy set with relatively few items. Obviously,
you cannot do this without a large-scale restriction of tasks; the other pos-sible solution is to allow
giving a small number of algorithm schemes instead of giving a small number of algorithms. The
creative process in this case is selecting and combining the suitable algorithm schemes, and adapting
them to concrete activities. The establishment of a scheme system requires analogical and abstract
thinking. The distinction between essential and irrelevant features: abstraction; recognizing
similarities: recognizing analogies.
3.5. Realising Algorithms (a sequence of actions)
It is now a real ICT task: the algorithm should be described with a tool in a way that the result could
be executed by an automaton (e.g. computer). It also implies that you should learn the use of the tool
(practically the programming language) you write the algorithm in.
The individual tools also have a specific way of thinking that you should acquire:
• How do you envisage the execution of the programs?
• How are the programs constructed?
On the other hand, you can rarely make flawless things at once. Therefore, you might need to see
whether the algorithm created is correct or not, and to recognize and correct the mistakes if there are
any. The latter would seemingly mean a simple analysis of the algorithm, but in ICT you have more
possibilities. There exist such complex systems (programming environments) that you can use to make
this activity more efficient than sheer thinking although, of course, it does not substitute thinking.
Encoding can be made much less tiresome if you formulate the rules that you use for writing a code in
a given language from an algorithm which contains the substantive description of the solution. Such
rules can be defined to any language, and their “transplantation” can be made mechanical to 90%. [11]
The price is recognising and memorising the rules.
Testing is a “not liked” duty which requires much more thinking than you would expect. The purpose
of testing is to give a schedule or scores to the discretion/controlling of the correction of the code. In
order to achieve this goal, you should find a method on what data are needed to “move/stir” all the
items of the code. It is obvious to try and rely on the analytical ability mentioned at Point 3, though it
is not the only system. The apprehensive knowledge of the task (and not the solution!) could help you
find relevant cases. After you detect an error, your analytical ability will also be needed for debugging.
It should be stated that encoding –in ICT education either – is not merely a tool for you to finally
claim the correctness of the algorithm but often the culmination of problem solving (just think of
simulation). [12]
3.6. Modifying and Changing Algorithms (a sequence of actions)
Understanding algorithms written by others is also a relatively easy task. Writing your own algorithm
is not much more complicated, either when compared to the task of modifying and improving an
algorithm produced by someone else. (Note: The literature often calls this an algorithm, as well.)
In the latter case it is not only the implementation that you have to figure out, but you need to
understand the way the writer of the original algorithm was thinking and why he/she created the
algorithm exactly that way etc.
You should also understand where you can enter the different world of thoughts of another person,
what you can modify and what interventions will be effective etc. It may be much more difficult than
writing an algorithm of your own starting from scratches.
You often receive inaccurately designed algorithms (or programs in the ICT world), which do not
meet your expectations. Therefore, you must be able to change them so that they become useful and
serve your purposes.
3.7. Designing Complex Algorithms (a sequence of actions)
The work you should invest does not grow linearly with the increase in the size of algorithms. Sooner
or later you will reach a stage when the solution of the problem cannot be regarded as a single step. It
is when abstraction and the systematic planning of algorithms could play a decisive role.
It is when you could consider setting sub-objectives and designing a series of activities for the
particular sub-objectives. (It is quite common in everyday life when several people are working
together. In programming, however, it is not always necessary though it is frequent during the
development of large software systems.). Of course, it is a serious task to see that by meeting the sub-
objectives and with a good synthesis, the task can be accomplished.
Media informatics ⎯ ⎯ ⎯ ⎯
The information
⎯ ⎯ ⎯ ⎯
society
Understanding Implementing Implementing
Library information ⎯
algorithms algorithms algorithms
The above table (see Table 1) shows the competence of algorithmic thinking for a given age group and
a given topic at its highest level. Its appearance in IT is obvious (hence it is the field that is about
algorithmization, datamodelling and problem solving), while the other fields need some explanation.
Using ICT tools (hardware and software) always requires the implementation of algorithms. For
instance, if you want to install some software, you often have to face, understand then implement
unknown algorithms.
For instance, this year’s national ICT users’ competition set a task where the participants received the
raw data of a table in a simple text file. The text was not arranged in a table or divided by tabs, but
spaces were used to make the printed table look good. If you wanted to convert this table into a real
one, you either had to spend 30 to 40 minutes typing-copying or you could devise a clever algorithm
which reduced the conversion to 3 minutes.
Logically, info-communication is also a kind of algorithm implementation, but there is much more to
that here, as well. Creating communication networks and using them for delivering messages to an
appropriate/selected group of addressees requires a serious knowledge of algorithm writing (and do
not forget about data-modelling skills).
The levels of algorithmic thinking can be defined and related to other ways of thinking as follows (on
the suggestions of Mariann Buda). [13 – The statements of the article are written in italics.]
5.1. Level 1
Application: When you only need to retrieve a particular (a given, named) procedure from your
memory, which will help you overcome a given problem. (For example: if you are to find the common
denominator, you will look for and select the named procedure, an algorithm.)
Implementation: deductive thinking (the application of an algorithm stored or given in a general
format to a specific case)
We regard this level as two levels, actually. We firmly believe that there is a difference between
understanding an algorithm and implementing it since implementation does not simply mean
understanding. When you implement, you should carefully follow the states of the solution, you need
to know which activities will take place in which state etc.
5.2. Level 2
Writing an algorithm i.e. the process when you are making an attempt to have steps recognized and
start to formulate rules and generalisations basically requires inductive thinking.
Its main point: while solving a problem, the student observes a regularity (a rule), notices it several
times and then encodes (records) it in some meaningful way.
We consider it to be two levels, as well: you have to tell the difference between analytical and creative
skills. When you understand the elements of an algorithm, you know what role the elements play in it,
but it does not necessarily mean that you are able to write such algorithms yourself, since the first one
is a clear analytical activity, whereas the latter is a synthetizing one.
5.3. Level 3
It is a conscious effort for searching and selecting algorithms. When the student encounters a new but
similar problem, he or she can recall, follow and use the procedure as a whole or in a slightly
modified form.
Analogical thinking.
We believe that finding and selecting an algorithm for a task needs more elementary thinking than
making a new algorithm. If you want to apply an algorithm you learnt before, you do not necessarily
need to design a new one. It is true even if the algorithm is to be adapted to a particular task. Let us
illustrate it with an everyday example: if you can make soft-boiled eggs, you are able to prepare hard-
boiled eggs, as well, after modifying the cooking algorithm. However, it does not mean that you can
create the recipe – i.e. the preparing algorithm – of any dish.
5.4. Level 4
Modifying and adapting an algorithm: the efficient and flexible transformation and joining of
algorithms. Using the basic algorithm to develop a new procedure.
Creativity.
It corresponds to our Levels 6 and 7, and regarding the handling of complexity, we believe that it
means a higher level of algorithmizing skill.
9. Conclusion
After reviewing the available literature on the subject, and considering our own experience, we can
clearly state that everybody considers the skill of algorithmic thinking to be of great importance.
Several researchers relate it to the mathematical competence, as well. (We considered algorithmic
thinking as one kind of mathematical thinking, and contrasted it with intuitive pattern recognition and
analogical thinking. We think of algorithms as objects – namely as a list or sequence of steps to be
performed, possibly given by a flow chart or diagram). [14,15]
Relevant authors also agree that this competence is the skill of understanding, implementing,
analyzing and designing algorithms. Expert’s opinion differ partly on how these skills should be built
on each other; on the other hand, very few colleagues study algorithmic thinking skills, which is
necessary for all, independently of the programming activity. That is why we primarily laid the
emphasis on it in this article.
References
[1] Horváth Gy.; Szlávi P. & Zsakó L. (2010). Informatics (ICT) competencies, 8th International
Conference on Applied Informatics, Eger, Hungary
[2] Recommendation of the European Parliament and of the Council of 18 December 2006 on Key
Competences for Lifelong Learning (2006/962/EC)
Authors
László Zsakó, Faculty of Informatics, Eötvös Loránd University, Budapest, Hungary, e-mail:
[email protected]
Péter Szlávi, Faculty of Informatics, Eötvös Loránd University,, Budapest, Hungary, e-mail:
[email protected]