Computer Science refers to an individual's ability to understand how computers work.
Digital devices have multiple components with inputs and outputs which combine to form complex tools. These are then programmed using coding languages that can be applied and refined to perform almost infinite tasks.
Coding in KS2 - from CAS - Computational Thinking a guidance for Teachers
Concepts of computational thinking
Computational thinking is a cognitive or thought process involving logical reasoning by which problems are solved and artefacts, procedures and systems are better understood.
It embraces:
● the ability to think algorithmically;
● the ability to think in terms of decomposition;
● the ability to think in generalisations, identifying and making use of patterns;
● the ability to think in abstractions, choosing good representations; and
● the ability to think in terms of evaluation.
Logical reasoning
Logical reasoning enables pupils to make sense of things by analysing and checking facts through thinking clearly and precisely. It allows pupils to draw on their own knowledge and internal models to make and verify predictions and to draw conclusions. It is used extensively by pupils when they test, debug, and correct algorithms. Logical reasoning is the novel application of the other computational thinking concepts to solve problems.
Abstraction
Abstraction makes problems or systems easier to think about. Abstraction is the process of making an artefact more understandable through reducing the unnecessary detail. A classic example is the London Underground map. London is a highly complex system. The London Underground map is a highly refined abstraction with just sufficient information for the traveller to navigate the underground network without the unnecessary burden of information such as distance and exact geographic position. It is a representation that contains precisely the information necessary to plan a route from one station to another – and no more!
Evaluation
Evaluation is the process of ensuring that a solution, whether an algorithm, system, or process, is a good one: that it is fit for purpose. Various properties of solutions need to be evaluated. Trade-offs need to be made, as there is rarely a single ideal solution for all situations. There is a specific and often extreme focus on attention to detail in evaluation based on computational thinking.
These computational thinking concepts have been summarised for the primary phase (applicable across all key stages) by CAS Barefoot Computing
Algorithmic thinking
Algorithmic thinking is a way of getting to a solution through a clear definition of the steps. Algorithmic thinking is the ability to think in terms of sequences and rules as a way of solving problems or understanding situations. It is a core skill that pupils develop when they learn to write their own computer programs.
Decomposition
Decomposition is a way of thinking about artefacts in terms of their component parts. The parts can then be understood, solved, developed and evaluated separately. This makes complex problems easier to solve, novel situations better understood and large systems easier to design.
For example, making breakfast can be broken down, or decomposed, into separate activities such as make toast; make tea; boil egg; etc. Each of these, in turn, might also be broken down into a set of steps.
Through decomposition of the original task each part can be developed and integrated later in the process.
Generalisation (Patterns)
Generalisation is associated with identifying patterns, similarities and connections, and exploiting those features. It is a way of quickly solving new problems based on previous solutions to problems, and building on prior experience. Asking questions such as “Is this similar to a problem I’ve already solved?” and “How is it different?” are important here, as is the process of recognising patterns both in the data being used and the processes/strategies being used. Algorithms that solve some specific problems can be adapted to solve a whole class of similar problems. Then whenever a problem of that class is encountered, the general solution can be applied.
Techniques associated with computational thinking
There are a number of techniques employed to demonstrate and assess computational thinking. Think of this as ‘computational doing’. These are the ‘computer science’ equivalent of ‘scientific methods’. They are the tools by which computational thinking is operationalised in the classroom, workplace and home.
Reflecting
Reflection is the skill of making judgements (evaluation) that are fair and honest in complex situations that are not value-free. Within computer science this evaluation is based on criteria used to specify the product, heuristics (or rules of thumb) and user needs to guide the judgements.
Coding
An essential element of the development of any computer system is translating the design into code form and evaluating it to ensure that it functions correctly under all anticipated conditions.
Debugging is the systematic application of analysis and evaluation using skills such as testing, tracing, and logical thinking to predict and verify outcomes.
Designing
Designing involves working out the structure, appearance and functionality of artefacts. It involves creating representations of the design, including human-readable representations such as flowcharts, storyboards, pseudo-code, systems diagrams, etc. It involves further activities of decomposition, abstraction and algorithm design.
Analysing
Analysing involves breaking down into component parts (decomposition), reducing the unnecessary complexity (abstraction), identifying the processes (algorithms) and seeking commonalities or patterns (generalisation). It involves using logical thinking both to better understand things and to evaluate them as fit for purpose.
Applying
Applying is the adoption of pre-existing solutions to meet the requirements of another context. It is generalisation - the identification of patterns, similarities and connections - and exploiting those features of the structure or function of artefacts. An example includes the development of a subprogram or algorithm in one context that can be re-used in a different context.