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