computational thinking

thinking abstractly- removing unnecessary details

thinking ahead- identifying the preconditions of a system, the inputs, outputs and reusable components

thinking procedurally- breaking a problem down

thinking concurrently- more than one thing happening at the same time

thinking logically- identifying decision points for branching or iteration

what you need before you get going, caching: what is needed before you need it

identifying a number of smaller sub problems, determining the order of events.

identify the points at which a decision is needed. determine the conditions of the decision. determine the next steps.

identifying if parts of the problem can be tackled at the same time.

+allows you to make predictions

-it may be difficult to predict markets, users, and trends

-too many variables may mean the scenario is too complex to model accurately

+caching can speed up a process

-caching can be complicated to implement

-requires the correct data to be fetched for the next instruction

wokring out how much paint you need before starting to decorate, getting your wallet out before the cashier tells you the bill

+the complexity of an algorithm can be determined

-may not even be possible with an event driven rather then procedural approach to programming.

Generating a subject grade requires putting marks into a system, before applying a grade boundary, before printing results

using a flowchart to design an algorithm

+concurrency speeds up the solution

-may be difficult to program

-program may not suit concurrency

building a house, ordering the windows while putting up the wals

symbols on a map showing buildings, roads, etc