# Generic Tasks for Algorithms
## 1 Introduction  
In our globalized and digitalized world of today, it is essential to be skilled in computational thinking (CT) [1; 2]. [PERSON] defines CT as \"the thought processes involved in formulating a problem and expressing its solution(s) in such a way that a computer--human or machine--can effectively carry out\" [3]. In spite of an ongoing discussion regarding the definition of CT, most researchers usually refer to [PERSON], as she was the one who originally coined the term [4]. The amount of scientific research targeting CT has increased dramatically over the last years [2]. Even though most researchers agree that young people should acquire CT-related skills [5], there is less consent on the appropriate age for learning CT and on how this goal can be reached [6]. The latter can partly be attributed to the unclear role of CT in relation to other skills and subjects: Should CT be taught as a separate subject, should it be part of computer science (CS) as some kind of pre-skill (e.g., [7]), or should it be part of other Science, Technology, Engineering, and Mathematics (STEM) subjects due to its parallels to the more general skills of problem solving and logical thinking? Of course, this question cannot solely be answered on a topical level, but also needs to be addressed in the context of existing school curricula [2]. Integrating new content into K-12 education always poses challenges for administrators and teachers alike, as the already tight schedules often do not allow for additional topics or subjects. Before there will be a clear shift allowing for CT to be a key part of K-12 education, there is a need for conveying this integral skill with little effort for teachers and within the scope of existing subjects. To understand CT in more detail and thus be able to teach it, the concept must become much more tangible for educators, rather than just providing them with an abstract definition. For thispurpose, it can be helpful to divide the broad term into more narrowly defined subskills that can be understood more easily. Within a report for the European Commission on how CT could be integrated into compulsory education [8], different distinctions and notions for these subskills as used by other researchers are described and compared. Analyzing their similarities and differences, the authors [PERSON] et al. arrive at a set of six core CT skills: abstraction, decomposition, algorithmic thinking, debugging, automation, and generalization. As there is currently no empirically validated division into CT subskills to our knowledge, we will rely on the distinction and definitions as given by [PERSON] et al. The first core skill, abstraction, refers to the ability to reduce the unnecessary detail from a real-world problem--or, more generally, a question--while adhering to the essential information that cannot be neglected. Oftentimes, this also involves finding an appropriate mode of representation for a piece of information. Decomposition encompasses dividing a problem into a set of smaller sub-problems that can be solved more easily. After solving each of these problems independently, the solution to the more general problem can be derived by combining and further developing the solutions to the sub-problems. As such, decomposition is closely related to generalization, which allows one to draw conclusions and solve problems based on priorly solved ones and experiences that were made beforehand. This skill also refers to the recognition of patterns and to their rediscovery in other problems. Algorithmic thinking encapsulates another facet of CT, namely the process of finding and describing steps in a clear manner such that it is possible to arrive from an initial state at a desired target state. This description of steps usually means formulating an algorithm, whether in pseudo-code, a block- or text-based programming language, or even in the form of a diagram. Debugging, as an element of CT, is more than just being able to find a bug in a program, even though this can undeniably be one part of it.