A Model for Developing Computational Thinking Skills

. Computer science concepts have an important part in other subjects and thinking computationally is being recognized as an important skill for everyone, which leads to the increasing interest in developing computational thinking (CT) as early as at the comprehensive school level. Therefore, research is needed to have a common understanding of CT skills and develop a model to describe the dimensions of CT. Through a systematic literature review, using the EBSCO Discovery Service and the ACM Digital Library search, this paper presents an overview of the dimensions of CT defined in scientific papers. A model for developing CT skills in three stages is proposed: i) defining the problem, ii) solving the problem, and iii) analyzing the solution. Those three stages consist of ten CT skills: problem formulation, abstraction, problem reformulation, decomposition, data collection and analysis, algorithmic design, parallelization and iteration, automation, generalization, and evaluation.


Introduction
The 21st century has changed the type of skills, knowledge, and competences that are needed for success in the modern society. The reflection on computational thinking (CT) started from thinking about the way computer scientists think, but in the modern world it does not only involve computer scientists but has become a fundamental skill for everyone needing to find their way in the world of technology and solve problems effectively. Wing (2006) states that next to reading, writing, and arithmetic, CT should be added to everyone's analytical ability. Seymour Papert (1996) suggested a goal of introducing computational thinking by using a computer to solve problems in a way that allows people better to analyze and explain the problems, solutions and connections between them.

Definitions and Dimensions of CT
Thinking computationally includes various aspects, which could be taught already at the comprehensive school level. In 2006 Wing defined CT as "the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be carried out by an information-processing agent". In that definition the information-processing agent is viewed as be a computer, a machine or just a human being. This definition is commonly referred to as a way to approach CT as a tool for solving problems using algorithms. The definition lacks more specific information about the dimensions of skills and aspects of developing CT, even though it still provides a frame of reference by depicting CT as a part of problem solving, including data representation, algorithmic thinking and a skill that can be developed either by using or not using technology. Qualls et al. (2011) connect the definition of CT even more directly to computer science, stating that it is using logic skills with computer science core concepts to solve problems. Grover and Pea (2013) describe CT as applying computer science tools and techniques for understanding natural and artificial processes and systems. Many other authors define CT as a skill, which is essential for programmers and computer scientists. For example, Anderson (2016) looks at CT as the way computer scientists think while approaching to solve the problems. Gouws et al. (2016) describe CT as a concept that extracts the thought processes involved in thinking like a computer scientist from concrete computer science practices and provides a more generalized understanding of how computer scientists approach problems.
In many cases, CT is mainly seen as an approach to solve problems. Soleimani et al. (2016) also suggest that CT is about planning and designing systems by using concepts of computer science. Getter and Yadav (2016) describe the CT including the concepts fundamental to computer science, along with the skills needed for abstraction. decomposition, pattern recognition and algorithmic thinking. Selby and Woollard (2013) have extended Wing's viewpoint by describing a fivedimensional model of CT skills being a thought process that reflects the ability to think: In abstractions, in order to understand the problem. • In terms of decomposition, to divide the problem into smaller solvable problems. • Algorithmically, to find the step by step solution for the problem. • In terms of evaluations, to evaluate the effectiveness of the solution. • In generalizations to be able to generalize the solution for wider range of prob-• lems.  emphasize that recognizing patterns as one core concept of CT defining CT as a set of thinking patterns. Roxcoe et al. (2014) view CT as a problemsolving technique that is a fundamental life skill.
CT skills have been recognized by computer science teaching organizations as part of the skillset that needs to be developed at various school levels. ISTE and CSTA (2011) offer a list of characteristics for describing CT that include formulating prob-lems, organizing and analyzing data, using abstractions, automating solutions using algorithmic thinking with efficiency and generalizing solution for solving wide range of problems.
Large companies, like BBC and Google, have started programs to help develop children's CT skills. Google's CT course (2016) emphasizes manipulating data and confidence trait in the definition of CT. In this definition, CT is viewed as a process that includes logically ordering and analyzing data and creating solutions using algorithms, and dispositions to solve complex and open-ended problems.
CT is also claimed to be mainly a cognitive problem-solving process/ability, which can be developed in many ways, not only through computer programming (Chang et al., 2017). CT is a skill that all everyone must learn to be effective at the workplace and to be ready for using the digital world (Vallance and Towndrow, 2016). Denning (2017) agrees that CT has evolved from being just the way that computer scientists think, to being useful in most other fields.
CT has been a topic of research for several years, with the specific aspects investigated including various age groups as well as tools for developing and instruments for measuring CT. As many authors have published various ways of defining and approaching CT, this leads us to the problem that not much attention has been dedicated to finding a common understanding of the dimensions of CT skills that would help us focus on developing and accessing CT skills.

Problem
CT has been described in several articles and reports, but these are not in line with each other and there is indeed missing a common understanding of the dimensions that should be in the focus while developing or assessing CT skills. There are several lists of CT skills describing CT, but no integrated model based on a common understanding of CT dimensions that can be used for developing CT skills.
In this study, using a systematic literature review method, we focus on finding a common understanding of the dimensions of CT skills that should be developed.
More specifically, two research questions were formulated: Which dimensions of CT skills can be identified in articles on developing CT? (1) How can these dimensions from different articles be combined into a new theo-(2) retical model for developing CT?

Method
In order to identify the definitions and dimensions of CT and make a model for developing CT skills, a systematic literature review was conducted using the search engines EBSCO Discovery Service and the ACM Digital Library. The search was used to filter out the articles that included the search term "computational thinking" in the abstract.

Search Procedure
The search procedure started with specifying the search criteria to retrieve relevant academic articles (see Fig. 1). The search criteria set in the EBSCO Discovery Service search engine was as follows: (1) search term "computational thinking" in the abstract; (2) full text available; (3) peer reviewed, and (4) in English. As the ACM Digital Library search engine has slightly different search options, the following search criteria were set in the ACM Digital Library search engine: (1) search term "computational thinking" in the abstract, and (2) full text available.
The search was carried out on 1 January 2018 and returned 541 matches, including 228 in the ACM Digital Library and 313 in the EBSCO Discovery Service search results.
The next step was to filter out duplicate results (13), only 1-3 pages long texts (127) and those not written in the context of computer science education (32). Then, articles that did not include a clear list of CT skills (313) were excluded. Eventually, 9 articles were added based on references in selected articles. In total, 65 articles were included in qualitative analysis (see Fig. 1).

Data Analysis
Three steps of the systematic article review process for the 65 selected articles are as follows.
Firstly, in order to get an overview of the dimensions and CT skills described in the articles, an analytic framework was created, which included a reference name, model number and type, definition and dimensions of CT.
Secondly, a graph was formed based on the model type and number to reveal systematic descendancy of the CT models used in the articles (see Fig. 2). On this graph, main original articles that were mainly referred to, were highlighted and scientific articles with similar CT dimensions were connected with arrows.
Thirdly, as a result, a comparative analysis of the data from the 65 articles was conducted. The dimensions of CT skills were sequenced, and the descriptions of the dimensions by various authors the terms were combined in a table and later in a new model for developing CT skills. Finally, the model and the core concepts were described.

Findings and Discussion
Findings and discussion include sections about identifying the directions of CT, new model for developing CT skills and an example of using the new model.

Identifying the Directions of CT
In analyzing the 65 articles found in the study it appeared that they are often based on each other. Therefore, we started to categorize them based on the theoretical framework, definition and dimensions of CT used in each article. In addition, the year of publication was taken into account to characterize the descendancy of the articles. The results of this analysis of the content of the articles are presented on Fig. 2. Fig. 2 shows a graph of articles and the descendancy based on the six clusters of CT dimensions (framed in large boxes) that can be identified, originating from the following authors: Wing (2011), Barr and Stephenson (2011), CSTA and ISTE (2011), Brennan and Resnick (2012), Selby and Woollard (2013), and Moreno-León (2015).
The modern era of developing CT skills started with the article by Wing, describing CT as a fundamental skill for not only for computer scientists, but for everyone. The author analyzed the questions we might ask to solve an algorithmic problem by evaluating the difficulty and best solution for it. Wing emphasizes that the difficulty of the problem accounts for the power of the computing device (computer, machine or a human being) that will run the solution.
The first cluster of articles, deriving from Wing (2006), highlights the following characteristics of CT to be considered: abstraction, problem decomposition, problem reformulation, automation, and systematic testing.   Wing's viewpoint laid a foundation for a new wave of articles about the dimensions of CT skills. As seen on the Fig. 2, of all the selected articles, twenty-one present modifications of Wing's theory of characterizing CT.
The second cluster, deriving from Wing, started in 2011 when Barr and Stephenson (2011) created a comparison of CT concepts and capabilities in computer science, mathematics, science, language arts and social studies. Nine new common core CT concepts included three concepts of data manipulation: data collection, analysis and representation, and six problem solving concepts: decomposition, abstraction, algorithms and procedures, automation, parallelization, and simulation. The main difference compared to Wing's ideas was a greater focus on data manipulation and algorithms. In addition, parallelization and simulation were added as separate concepts of CT. This resulted in another wave of articles that use these dimension as a starting point for CT concepts (Gouws et al., 2013, Soleimani et al., 2016, Atmatzidou and Demetriadis 2016, Costa et al., 2016and Rose et al., 2016.
The third cluster, deriving from Wing, appeared in 2011 when CSTA and ISTE (2011) used Wing's ideas to develop a list of six concepts for describing CT: formulating problems, organizing and analyzing data, abstractions, automation through algorithmic thinking, evaluation for efficiency and correctness, and generalizing. As we can see, the main focus of CT is considered as solving problems using algorithms. The main difference from Barr and Stephenson (2011) is that evaluation for efficiency and correctness and generalizing have been added as dimensions of CT. As international computer science teacher organizations have much influence on international teaching, several articles have used these concepts (Denning, 2017, Fronza et al., 2015, Rode et al., 2015, Kalelioglu et al., 2016, Chen et al., 2017, Pellas and Vosinakis, 2017, Korkmaz et al., 2017, Durak and Saritepeci, 2017and Lowe and Brophy, 2017.
The fourth cluster, deriving from Wing, emerged in 2011 when Brennan and Resnick (2012) described four practices to assess CT projects: abstracting and modularizing, reusing and remixing, being incremental and iterative, and testing and debugging. As Brennan and Resnick support the usage of Scratch as a tool for creating projects to develop CT, the focus is on project analysis. This type of analysis highlighted the new dimensions of iteration and reuse to be used in coding project analysis in several articles (Lye et al., 2014, Vallance and Towndrow, 2016, Zhong et al., 2016, Fronza et al., 2017.
The fifth cluster, deriving from Barr and Stephenson (2011) and CSTA and ISTE (2011), was formed by the ideas of Selby and Woollard (2013) who identified in the literature the terms mostly associated with CT. They proposed a definition of CT, which includes the following terms: abstractions, decomposition, algorithmic thinking, generalization, and evaluation. Compared to Barr and Stephenson (2011), mostly data manipulation terms were left out for being either too broad, not-well defined or not considered a skill. Generalization and evaluation were added from CSTA and ISTE and those skills of CT have been used later by several authors (Anderson, 2016, Selby, 2015, Csizmadia et al., 2015, Angeli et al., 2016, Dagienė and Sentence, 2016, Marcelino et al., 2016, Duncan et al., 2017and Dagienė et al., 2017. As some of the dimensions of CSTA and ISTE (2011) are common with Selby and Woollard (2013), several authors have con-sidered both ideas (Seiter and Foreman, 2013, Dasgupta and Purzer, 2016and Mouza et al., 2017. The sixth cluster, deriving from Brennan and Resnick (2012), is based on connecting CT dimensions with automatic project analysis. In automatic assessment of Scratch projects, Moreno-León (2015) assesses the following CT aspects: abstraction in creating functions and clones, parallelism in starting several processes at the same time, logic in using logical operations, synchronization in sending messages, flow control in creating reasonable loops, user interactivity in using interaction, and data representation in using variables and lists in programs.
The main difference is that this approach has opened up algorithmic thinking as a demonstration of usage of parallelism, synchronization, logical thinking, and flow control. Furthermore, data manipulation has been emphasized by data representation and user interactivity. Although this categorization is influenced by automatic code assessment, it can be used in a number of block-based coding environments. Several authors have published articles analyzing only code used in educational programming environment (Chang et al., 2017, Munoz et al., 2016, Moreno-León et al., 2016, Rob-Robles et al., 2017, Moreno-León et al., 2017a. Brackmann et al. 2017and Moreno-León et al., 2017b. As the graph (see Fig. 2) shows, six main clusters of the dimensions of CT skills can be identified based on the various articles. Each cluster originates from certain authors, which leads us to the idea that, in order to form a unified model for developing CT skills, a collection of the CT skills from the original authors should be made.
Most of the articles have a common understanding of defining CT through the thinking process involved in solving algorithmic problems. Core concepts of CT are often described starting with defining the problem and ending with testing and evaluation. Solving problems is a cyclic process as solutions can be further on developed in the second cycle in the terms of practicality and efficiency. This leads to the idea of creating a model for developing CT skills in a cyclic manner including core concepts of CT divided into three main problem solving stages.

New Model for Developing CT Skills
Based on the six original articles describing the main skill clusters, CT skills can be grouped in three larger stages: defining the problem, solving the problem, and analyzing the solution (Table 1).
Comparison of these six models of CT skills gives us an opportunity to create a new model. This new model for developing CT skills (see Fig. 3) covers all of the main dimensions extracted from the articles in a three-staged problem-solving cycle, relying on CT as a way to solve problems algorithmically.
The stage of defining the problem includes all CT skills that are needed before starting to solve the problem. Firstly, from the Wing's (2006) definition of CT, problem solving starts with formulating the problem. Although several authors do not include it as a separate dimension, all of the articles describe it as part of the algorithmic problem-

Testing and evaluation
Systematic testing -Identifying, analyzing, and implementing solutions Testing and debugging Evaluation solving process. As CT is a thought process used in solving problems according to algorithms, it is essential to understand and research the problem that needs to be solved. Secondly, all of the models include abstraction. When a problem is formulated, it is important to identify and extract relevant information to define the main idea(s). This stage includes modelling the core aspects of complex problems or systems. Therefore, the abstraction stage includes modularizing. Thirdly, problem reformulation can be used to reframe a problem into a solvable and familiar one. The fourth skill is decomposition of the problem. Usually, decomposing has been listed as the second dimension after the abstraction but, as two dimensions have been added, this step of breaking the problem down into manageable units now follows problem formulation. The second stage of the model is solving the problem. This stage includes all CT skills involved in creating the solution for the problem. The precondition of solving the problem algorithmically is collecting and analyzing data. Another CT skill, algorithmic design (a series of ordered steps), is also a main core skill of CT. Algorithmic design is followed by the use of parallelization and iteration, which eventually leads to the automation of the process.
When the prototype has passed through all three CT stages (see Fig. 3), the system can be improved in a cyclic manner after evaluation by formulating the problem again. The next step could be adding a watering system to the project. This means that the completed stages are followed again by three stages of CT skills until the user is satisfied with the result.

Conclusion
In this study, a new model for developing CT skills was designed based on an analysis of articles found through the EBSCO Discovery Search and the ACM Digital Library. Based on 65 articles, the study grouped the definitions and dimensions of CT in six

123
The third stage of CT skills is analyzing the solution. This includes generalization, which means transferring this problem-solving process to a wider range of problems. And the final CT skill is evaluation and testing, which means analyzing (assessing and recognizing) the processes and the outcomes in terms of efficiency and resource utilization. This also includes systematic testing and debugging, efficiency and performance constraints, error detection, etc.
When all of the CT stages have been completed, the solution can be improved after the evaluation and testing by formulating the problem again. This means repeating the three-staged application of CT skills until the user is satisfied with the result.

Example of Using the New Model for Developing CT Skills
Based on the six original articles describing the main skill clusters, CT skills can be grouped in three larger stages: defining the problem, solving the problem, and analyzing the solution (Table 1).
Comparison of these six models of CT skills gives us an opportunity to create a new model. This new model for developing CT skills (see Fig. 3) covers all of the main dimensions extracted from the articles in a three-staged problem-solving cycle, relying on CT as a way to solve problems algorithmically.
In order to get a better understanding of the new model for developing CT skills, this section provides an example of each step of the process, using a plant watering project as an illustration. Plants tend to lose vitality as a result of both excessive and insufficient watering (see Fig. 3). This example project is about solving the problem of watering the plants at home correctly.
In this case, an example of formulating the problem is: How to create a system that reminds us when to water the plant? For that we need to research the problem.
As an example of abstraction, we need to know if the plant needs watering. For that we need data on soil moisture (attribute for actual humidity as a percentage) and the minimum percentage of moisture needed by the specific plant (attribute for needed humidity as a percentage). Extra data is needed for turning on and off the alarm (attribute for alarm state as true or false). In addition to that we need code for measuring the soil humidity (method measure humidity) and code for turning the alarm on (methods turn alarm on) and off (method turn off the alarm). After the abstraction of understanding the problem, we need to decompose the problem into smaller solvable problems. Which tools can be used to measure humidity and set up an alarm? Which algorithms can turn the alarm on and off at certain humidity levels? An example of decomposing the plant watering system into solvable parts can be connecting the input (humidity sensor) and output (alarm) to the computer to read the humidity percentages and creating a program for reading the values of humidity and for turning on and off the alarm according to the humidity level. When the planning (see Fig. 3) is over, the second stage starts.
The second stage is solving the problem, which means creating suitable hardware and software solutions. For example, Arduino can be used to put together a device for measuring soil humidity (see Fig. 3). The next step would be to create the algorithm for measuring humidity and turning on the alarm when humidity is too low or too high.
This algorithm for humidity regulation can be used for a wide range of plants by just adjusting the variables for the minimum and maximum level of humidity that a specific plant needs. As humidity is measured, an if-else loop needs to be created with an algorithm that automatically turns on and off the alarm based on soil humidity.
The third stage is analyzing the solution. The CT skill of generalizing means that applicability of the solution can be expanded to measuring room humidity, temperature, light, etc. The skill of evaluating and testing the solution includes evaluation of the required frequency of taking humidity readings, the process of alarm transmission to notify the user and the accuracy of measurements and performance of the system.
After completing the three stages, the problem can be formulated again for improving the solution. For example, the user may not always be near the plant to water it or watering can be too labour-intensive for the owner. Would it be possible to add a water pump to improve the system? Can the design be more pleasing for the eye? Improving the solution can lead to actual working solutions (see Fig. 3).
When the prototype has passed through all three CT stages (see Fig. 3), the system can be improved in a cyclic manner after evaluation by formulating the problem again. The next step could be adding a watering system to the project. This means that the completed stages are followed again by three stages of CT skills until the user is satisfied with the result.

Conclusion
In this study, a new model for developing CT skills was designed based on an analysis of articles found through the EBSCO Discovery Search and the ACM Digital Library. Based on 65 articles, the study grouped the definitions and dimensions of CT in six clusters. The dimensions of CT from the six clusters were categorized into three sequenced stages in a new model. Usable in various subjects, the model includes the following stages: Defining the problem, which includes formulating the problem, abstraction, prob-• lem reformulation and decomposition. Solving the problem, which includes data collection and analysis, algorithmic de-• sign, parallelization and iteration and automation. Analyzing the solution, which includes generalization, testing and evaluation. • The new model also explains the stages and skills of CT with examples from projectbased learning. The main new aspects of this model are that it can be used in a problemsolving process from start to finish by completing the sequential stages. Previous models have not listed CT skills in the order of occurrence in such a cyclic manner, with three major problem-solving stages following each other and each stage including CT skills that are developed at that stage. This model can be used by the teachers and students to develop various project ideas and instructional activities.
The limits of this model are that it is based only on the search term "computational thinking" and on the articles found by two search engines. The model does not include articles that do not present specific lists of CT skills. Furthermore, the identified clusters are based on a referring system and can change in the future, with new articles getting more references. Some aspects (for example abstraction) can occur in other dimensions, but the main occurrences are considered in the model.
Further research is needed to develop scenarios for training and assessing the development of CT skills at various school levels. Creation of tools for evaluating CT skills could give us more information about the relationships between the elements of the model. The model for developing CT skills is designed in such a way that it could be used in various subjects and at different school levels for developing CT skills.
The new model for developing CT skills is a theoretical one and we suggest creating scenarios of learning CT to test parts of it empirically in the future. When the prototype has passed through all three CT stages (see Fig. 3), the system can be improved after evaluation by formulating the problem again. For example, the next step could be adding a watering system to the project. This means that the completed stages are followed again by three stages of CT skills until the user is satisfied with the result.