On the concept of algorithmic thinking

. The article deals with the concept of “algorithmic thinking.” Details show the distinctive features of algorithmic thinking and the problems that arise in teaching Computer Science. Such phenomenon is called the “mosaic thinking,” which is also discussed in the paper.

and object-based activities. It is not a coincidence that such phrases as "thinking style" or "algorithmic thinking style" are frequently used. The word "style" indicates the peculiarities and the features of a certain subclass of objects that exists within a larger class of objects. For example, the "baroque style" is an art style of a certain period of European history. However, we are going to apply the term "algorithmic thinking" rather than the category "algorithmic thinking style", the former being a synonym of the latter. Thus we will get rid of terminological ambiguity that is found in many papers referring to the aspect of thinking either as a way of thinking or a style of thinking.
Algorithmic thinking as a concept first appeared in teaching computer science, but it is obvious today that the concept of algorithmic thinking is important in daily life, as the basic knowledge of computer science is important in everyday routine for setting up domestic appliances, for example. No doubt, algorithmic thinking is an important part of intellectual activity of a person.
It should be noted that the concept was developed in the period of structured programming. It is based on algorithmic decomposition paradigm in problem solving. The transition to object-focused paradigm in information technologies does not reject the ideas of algorithmic thinking, but it expands the concept instead.
Well-developed algorithmic thinking is very important for computer program development. If a student does not have the skills of algorithmic thinking, even the knowledge of one or different programming languages will be of no use. This fact explains the situation when a student has good knowledge of computer science, but cannot use it to solve a new problem. For instance, even if one knows a pretest loop well, they may fail to calculate the sum of a series of numbers. At the same time the peculiarities of algorithmic patterns are that their inseparable feature is their formality, which makes it impossible to study them in isolation form a certain algorithmic language. Some authors understand the concept of algorithmic thinking as a cognitive process characterized by a clear and efficient (or rational) sequence of mental operations, when the larger blocks are detailed and optimized, and the final result is fixed and shown in a formalized way in the language of performer according to the semantic and syntactical rules of the language [5]. Some other scholars believe that algorithmic thinking is a system of mental operations, actions and methods and corresponding mental strategies aimed at performance of theoretical and practical tasks, the results of which are algorithms as specific human artifacts [3].
A. I. Gazeykina interprets algorithmic thinking as a specific thinking style that needs the skills of algorithm development, which requires mental schemes to see the problem as a whole and to solve it in larger blocks with further detailing and description of the process of the final result achievement [1].
To give a full and precise definition of algorithmic thinking, we will proceed from the fact that any type of thinking has substantive and operational components. The substantive components include the image, the idea and the concept; the operational components include the system of mental operations (analysis, comparison, synthesis, instantiation, generalization, classification and categorization). It is important to single out such components in algorithmic thinking. Mental activity, interpreted in terms of algorithmic thinking, is determined (in its systemic nature, but not in structure) by means of the necessary and the sufficient components.
The substantive components in algorithmic thinking are connected with the ability to divide the complex system into simpler objects and to build their hierarchy, in other words, to decompose the system and then to describe the functioning of these objects. Such thinking is called object-based thinking.
The main operation in such thinking style is object-focused decomposition. Different classifications on the basis of logic grounds and logic methods of concept identification are the most frequent methods in this type of thinking. Algorithmic decomposition is necessary to describe the events, thus, algorithmic thinking style is very important.
The components of object-based thinking are: 1. Analysis of the domain area and identification of objects (real and abstract) and their hierarchical arrangement.
2. Identification of the main events.
3. Processing of the events. 4. Analysis of the work of the system, adjustment of the object model and the algorithms of event processing in case of the incongruity of the final result with the assumed result.
Specific features of object-based thinking style include: • high level of abstraction, which is based on identification of essential characteristics of an object and abstraction form those characteristics that are irrelevant for the problem; • deliberate existence in the forms of some language, which means construction of a model of the problem in a certain formal language; • integrity of comprehension of a complex system, its representation as a unity of correlated objects.
Operational components of algorithmic thinking can be described with the help of the concept "operational thinking style" introduced by A.P. Ershov [2].
Some of the skills and abilities, that constitute operational thinking, are described in detail in the paper "School Informatics" published in 1979 and later in Computer Science Teacher's Encyclopedia [6]. These skills and abilities include: • the ability to plan the structure of actions necessary to reach the goal with the help of the fixed number of means; • the ability to develop informational models to describe objects and systems; • the ability to search for information necessary to solve the problem with the help of computer; • discipline and structuring of the linguistic means of communication; • the ability to operate computer to solve problems in different subject areas.
However, in their learning and cognitive activity students are offered some algorithms for the tasks of certain classes or an algorithm (a sequence of operations of steps) to solve the problem. It is supposed that the student should be able to complete the task. The difficulties that may arise are usually connected with the wrong interpretation of the source data or the absence of skills of an algorithm execution. Thus, operational thinking requires the ability of a student to follow an algorithm and the ability to execute an algorithm.
The components of operational thinking are: 1. Analysis of the source data of the problem and their interpretation according to the algorithm specified.
2. The choice of a suitable algorithm from a number of ready-to-use algorithms, i.e. analysis of the task and the algorithm to complete it.
3. Problem solving by means of formal and precise execution of operations that constitute the algorithm.
4. Analysis of the outcome and correction of the source data in case the final outcome differs from the assumed outcome.
Specific features of operational thinking: − specificity, which means that a student applies a general (abstract) algorithm to solve the problem with the definite source data; − discreetness -step-by-step execution of the algorithm; Algorithmic thinking is a combination of object-based and operational thinking, which has a new quality that ensures the ability to work out an algorithm with the help of mental schemes that help to understand the problem, to split its solution into stages and describe the process of final result acquisition.
Structural (object-based) components and operational components of algorithmic thinking are sown in Table 1. Table 1. Structural and operational components of algorithmic thinking.

Structural (object-based) components
Operational components Thus, the specific features of algorithmic thinking are: 1. Discreetness (step-by-step execution of an algorithm, instantiation, structuring of operation performance).

Problem
2. Abstraction (identification of essential characteristics of an object and abstraction form those characteristics that are irrelevant for the problem).
3. Definiteness, which means that a student applies a general (abstract) algorithm to solve a certain problem with the definite source data. 4. Deliberate existence in the forms of some language, which means construction of a model of the problem in a certain formal language; 5. Integrity of comprehension of a complex system, and its representation as a unity of correlated objects.
So, we define algorithmic thinking as a system of mental operations and procedures with the object-based real and abstract components that lead to the development of an optimized algorithm for the solution of the given problem