##### The Big Question in Computational thinking

How do we think about problems in a way which makes them solvable for a computer?

##### Description and resources for Computational thinking

Computational thinking asks us to "think about a problem in a way it could be solved by a computer".

Our big questions (used with gratitude from wikipedia):

1. How do we use abstractions and pattern recognition to represent the problem in new and different ways?
2. How do we logically organize and analyze data?
3. How can we break the problem down into smaller parts?
4. How do we approach the problem using programmatic thinking techniques such as iteration, symbolic representation, and logical operations?
5. What is the best way to reformulate the problem into a series of ordered steps (algorithmic thinking)?
6. How do we identify, analyze, and implement possible solutions with the goal of achieving the most efficient and effective combination of steps and resources?
7. How do we generalize this problem-solving process to a wide variety of problems?

##### Related Computational thinking standards

Identify the procedure appropriate to solving a problem.
Evaluate whether the order in which activities are undertaken will result in the required outcome.
Explain the role of sub-procedures in solving a problem.
Identify when decision-making is required in a specified situation.
Identify the decisions required for the solution to a specified problem.
Identify the condition associated with a given decision in a specified problem.
Explain the relationship between the decisions and conditions of a system.
Deduce logical rules for real-world situations.
Identify the inputs and outputs required in a solution.
Identify pre-planning in a suggested problem and solution.
Explain the need for pre-conditions when executing an algorithm.
Outline the pre- and post-conditions to a specified problem.
Identify exceptions that need to be considered in a specified problem solution.
Identify the parts of a solution that could be implemented concurrently.
Describe how concurrent processing can be used to solve a problem.
Evaluate the decision to use concurrent processing in solving a problem.
Identify examples of abstraction.
Explain why abstraction is required in the derivation of computational solutions for a specified situation.
Construct an abstraction from a specified situation.
Distinguish between a real-world entity and its abstraction.
Describe the characteristics of standard algorithms on linear arrays.
Outline the standard operations of collections.
Discuss an algorithm to solve a specific problem.
Analyse an algorithm presented as a flow chart.
Analyse an algorithm presented as pseudocode.
Construct pseudocode to represent an algorithm.
Suggest suitable algorithms to solve a specific problem.
Deduce the efficiency of an algorithm in the context of its use.
Determine the number of times a step in an algorithm will be performed for given input data.
State the fundamental operations of a computer.
Distinguish between fundamental and compound operations of a computer.
Explain the essential features of a computer language.
Explain the need for higher level languages.
Outline the need for a translation process from a higher level language to machine executable code.
Define the terms: variable, constant, operator, object.
Define the operators =, =?, <, <=, >, >=, mod, div.
Analyse the use of variables, constants and operators in algorithms.
Construct algorithms using loops, branching.
Describe the characteristics and applications of a collection.
Construct algorithms using the access methods of a collection.
Discuss the need for sub-programmes and collections within programmed solutions.
Construct algorithms using pre- defined sub-programmes, one- dimensional arrays and/or collections.

##### Daily notes with the topic Computational thinking

These are only displayed for our current academic year (2021 - 2022).