# Computational thinking & problem-solving

Wing (2006, 2011) defined computational thinking as the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by a computer. ^{[2]}

Computational Thinking (CT) is a process that generalizes a solution to open-ended problems. Open-ended problems encourage full, meaningful answers based on multiple variables, which require using decomposition, data representation, generalization, modeling, and algorithms found in Computational Thinking. Computational Thinking requires the decomposition of the entire decision making process, the variables involved, and all possible solutions, ensuring that the right decision is made based on the corresponding parameters and limitations of the problem. The term computational thinking was first used by Seymour Papert in 1980 and again in 1996. Computational thinking can be used to algorithmically solve complicated problems of scale, and is often used to realize large improvements in efficiency^{[3]}

## The big ideas in computational thinking[edit]

### Thinking procedurally[edit]

### Decisions[edit]

### Thinking logically[edit]

### Thinking ahead[edit]

### Thinking concurrently[edit]

### Thinking abstractly[edit]

### Connecting computational thinking and program design[edit]

### Use of programming languages[edit]

## Standards[edit]

These standards are used from the IB Computer Science Subject Guide^{[5]}

Computational thinking, problem-solving and programming
| |

Identify the procedure appropriate to solving a problem. | Computational Thinking |

Evaluate whether the order in which activities are undertaken will result in the required outcome. | Computational Thinking |

Explain the role of sub-procedures in solving a problem. | Computational Thinking |

Identify when decision-making is required in a specified situation. | Computational Thinking |

Identify the decisions required for the solution to a specified problem. | Computational Thinking |

Identify the condition associated with a given decision in a specified problem. | Computational Thinking |

Explain the relationship between the decisions and conditions of a system. | Computational Thinking |

Deduce logical rules for real-world situations. | Computational Thinking |

Identify the inputs and outputs required in a solution. | Computational Thinking |

Identify pre-planning in a suggested problem and solution. | Computational Thinking |

Explain the need for pre-conditions when executing an algorithm. | Computational Thinking |

Outline the pre- and post-conditions to a specified problem. | Computational Thinking |

Identify exceptions that need to be considered in a specified problem solution. | Computational Thinking |

Identify the parts of a solution that could be implemented concurrently. | Computational Thinking |

Describe how concurrent processing can be used to solve a problem. | Computational Thinking |

Evaluate the decision to use concurrent processing in solving a problem. | Computational Thinking |

Identify examples of abstraction. | Computational Thinking |

Explain why abstraction is required in the derivation of computational solutions for a specified situation. | Computational Thinking |

Construct an abstraction from a specified situation. | Computational Thinking |

Distinguish between a real-world entity and its abstraction. | Computational Thinking |

Describe the characteristics of standard algorithms on linear arrays. | Computational Thinking |

Outline the standard operations of collections. | Computational Thinking |

Discuss an algorithm to solve a specific problem. | Computational Thinking |

Analyse an algorithm presented as a flow chart. | Computational Thinking |

Analyse an algorithm presented as pseudocode. | Computational Thinking |

Construct pseudocode to represent an algorithm. | Computational Thinking |

Suggest suitable algorithms to solve a specific problem. | Computational Thinking |

Deduce the efficiency of an algorithm in the context of its use. | Computational Thinking |

Determine the number of times a step in an algorithm will be performed for given input data. | Computational Thinking |

State the fundamental operations of a computer. | Computational Thinking |

Distinguish between fundamental and compound operations of a computer. | Computational Thinking |

Explain the essential features of a computer language. | Computational Thinking |

Explain the need for higher level languages. | Computational Thinking |

Outline the need for a translation process from a higher level language to machine executable code. | Computational Thinking |

Define the terms: variable, constant, operator, object. | Computational Thinking |

Define common operators. | Computational Thinking |

Analyse the use of variables, constants and operators in algorithms. | Computational Thinking |

Construct algorithms using loops, branching. | Computational Thinking |

Describe the characteristics and applications of a collection. | Computational Thinking |

Construct algorithms using the access methods of a collection. | Computational Thinking |

Discuss the need for sub-programmes and collections within programmed solutions. | Computational Thinking |

Construct algorithms using pre- defined sub-programmes, one- dimensional arrays and/or collections. | Computational Thinking |

## References[edit]

- ↑ http://www.flaticon.com/
- ↑ http://pact.sri.com/downloads/Assessment-Design-Patterns-for-Computational%20Thinking-Practices-Secondary-Computer-Science.pdf
- ↑ https://en.wikipedia.org/wiki/Computational_thinking
- ↑ Icons made by https://www.flaticon.com/authors/eucalyp from https://www.flaticon.com/
- ↑ IB Diploma Programme Computer science guide (first examinations 2014). Cardiff, Wales, United Kingdom: International Baccalaureate Organization. January 2012.

Separate into simpler constituents.

Produce a plan, simulation or model.

Apply knowledge or rules to put theory into practice.

Provide an answer from a number of possibilities. Recognize and state briefly a distinguishing fact or feature.

Assess the implications and limitations; make judgments about the ideas, works, solutions or methods in relation to selected criteria.

Give a detailed account including reasons or causes.

Reach a conclusion from the information given.

Give a brief account.

anomalous or exceptional conditions requiring special processing – often changing the normal flow of program execution

Give a detailed account or picture of a situation, event, pattern or process.

Develop information in a diagrammatic or logical form.

Make clear the differences between two or more concepts or items.

Offer a considered and balanced review that includes a range of arguments, factors or hypotheses. Opinions or conclusions should be presented clearly and supported by appropriate evidence.

Break down in order to bring out the essential elements or structure. To identify parts and relationships, and to interpret information to reach conclusions.

Propose a solution, hypothesis or other possible answer.

The circumstances that form the setting for an event, statement, or idea, and in terms of which it can be fully understood and assessed.

Obtain the only possible answer.

A unit of abstract mathematical system subject to the laws of arithmetic.

Give a specific name, value or other brief answer without explanation or calculation.

Give a specific name, value or other brief answer without explanation or calculation.

Give the precise meaning of a word, phrase, concept or physical quantity.