CompThinking track at Telerik Kids Academy 1 1. What is Computational thinking In Computer Science, the key processes focus upon computational thinking. Computational thinking is the process of recognizing aspects of computation in the world that surrounds us, and applying tools and techniques from computing to understand and reason about both natural and artificial systems and processes. Computational thinking is something that people do (rather than computers), and includes the ability to think logically, algorithmically and (at higher levels) recursively and abstractly. 2. Goal of the CompThinking track The goal of the CompThinking (working name) track is to provide a way for a broad mass of children to gain an understanding of what is computer programming. The track focuses on the development of computational thinking – the thought process that underpins computer programming – while providing repeated experience in designing, creating and evaluating computer programs. This framework is largely based on the work of the Computing At School (CAS) working group at the British Computing Society and other researchers. 3. Scope of the CompThinking track The track targets children with no experience in programming, between in the ages of 10 and 13. The track is to develop the ability to thinking computationally – that is to express problems and their solutions in a form that can be effectively carried out by an information-processing agent. The track is to teach children basic but fundamental principles and concepts of computer science. The targeted processes and knowledge are described in Sections 5 and 6 respectively. The development path is described in Section 7. This foundation of skills and knowledge can serve the children for further development in the field of computer science or software development. Possible paths of further development include, but are not limited to, switching to more algorithm-intensive programming such as competitive informatics (Algo track) or towards general software development direction by attending the School Academy and participating in events like the national IT Olympiad. 4. Definitions We will provide a specific meaning and usage of several words in order to avoid vagueness and misunderstanding. 2 Knowledge – facts and information that provide the basis for understanding concepts; Concept – An abstract idea (e.g. recursion); Skill – an ability to combine knowledge and concepts in order to achieve a specific goal. 5. Computational thinking processes The track is to develop several ways of thinking in the described breadth and depth. The targeted competencies are: Decomposition – the ability to think about problems, algorithms, processes and systems in terms of their parts that can be solved, carried out and developed separately. Abstraction – the ability to hide details and remove unnecessary complexity. Generalization – the ability to develop general solutions that can be applied to multiple specific problems. Algorithmic thinking – the ability to understand and express problem solutions in a set of unambiguous instructions that can be carried out by a person or a computer Evaluation – the ability to ensure that a set of instructions is fit for purpose – that is functionally correct, uses resources effectively enough and fast enough among other properties. All of these competencies are to be developed simultaneously. The extent of ability of a child to carry out these processes defines the attainment level the kid has reached. 6. Targeted concepts The track’s goal is to provide an understanding of the following concepts: Sequence – a set of unambiguous instructions to be executed in a step-by-step manner; Selection – conditional instructions and branches in a sequence of instructions; Repetition – execution of a set of instructions a specific number of times or as long as some conditions are satisfied, both iteratively and recursively; Events – actions or occurrences that can be handled by a set of instructions; Variables – ways to represent data and events. The extent of understanding and ability to apply each concept the track targets is more specifically described in attainment levels. 3 7. Attainment levels For the one year course, we define 3 attainment levels. Levels are planned so that achieving each one takes between 9 and 10 weeks, where the weekly engagement is about 3 hours in lecture and about 3 hours of homework. While not obligatory, it is highly recommended that a child fully covers a level before progressing forward. Uneven coverage of levels most probably will lead to difficulties in further development. Each level represents our current hypothesis of what is learnable for the respective timeframe by a child in the age range of 10-13. Further levels may be added for a second year continuation of the course. Level 1 Can express verbally and in text a set of sequential instructions for achieving a specified task. (AL) Can express verbally and in text branching instructions that depend on simple conditions. (AL) Can carry out a set of linear and branching unambiguous instructions given in a formal language. (EV) Can recognize similarities between related yet different problems. (GE) Understands the notion of variables and can follow the changes in the values of several variables. (AB) Understands the notion of events and can provide examples of different types. Level 2 Can plan and develop a linear sequence of instructions in a programming language. (AL) Can express verbally, in text or in a programming language branching instructions that depend on complex logical expressions. (AL) Can carry out instructions that involve sub-sets of instructions given in a formal language. (EV) Can describe several separate parts of a problem and the interactions between them. (DE) Can freely manipulate simple data – numbers and text – in a programming language. (AB, AL) Can use at least one form of user input in a programming language. Level 3 Can plan, develop and implement a set of linear and branching set of instructions in a programming language. (AL) 4 Can assess the functional correctness of a particular set of instructions given in a programming language. (EV) Can decompose a problem into known sub-problems, implement solutions to each and compose the solutions together in a programming language. (AB, DE) Can create general parametrized solutions for simple problems. (GE) Can freely manipulate simple data structures – lists, arrays and tables. (AB) Can use several forms of user input in a programming language. (AB) 5