1.1 Computational Thinking 



Interactive Content

Computational Thinking is a mental process, not a study topic on a certain technology or language. It is a generally applicable attitude and set of abilities that anybody, not just computer scientists, can master.

Any problem that appears to be complex or intractable can be readily solved by breaking it down into manageable bits. Each of these subproblems can be addressed separately by referring to how comparable circumstances have been handled previously in order to solve a complicated problem that appeared intractable


 

The 4 major components of computational thinking.

  • Decomposition -  break down difficult issues into smaller, easier subproblems
  • Pattern recognition - make connections between similar problems and experiences
  • Abstraction - By disregarding unrelated, unnecessary information, you may make one answer applicable to several scenarios.
  • Algorithm Design - Design simple achievable steps to realize a solution.

 

 1.      Decomposition

When a problem is decomposed, or broken down into manageable pieces, it is much easier to solve. The problem can be more closely examined in further details, making finding a solutions an easier task. In our example we can break the trip up into 3 parts rather than trying to think of the entire trip at once

2.      Pattern Recognition

Pattern recognition is the analysis of similar objects or experiences and the identification of commonalities. It allows us to develop an understanding of patterns and make predictions based on them. Once a problem is decomposed, we can find patterns among sub problems and use prior experience and knowledge to solve each subproblem.

 3.      Abstraction

Pattern recognition is the analysis of similar objects or experiences and the identification of commonalities. It allows us to develop an understanding of patterns and make predictions based on them. Once a problem is decomposed, we can find patterns among sub problems and use prior experience and knowledge to solve each subproblem

4.      Algorithm Design

An algorithm is a stepwise approach to solve a problem. It involves creating a process or set of rules to be followed. In daily life we follow algorithms to achieve tasks at hand. Algorithms can be presented as flowcharts or pseudocodes, specifying each step precisely.

Flow charts and Pseudocode

Flowcharts are pictorial representation of algorithms, while pseudocodes are more of high level, textual representations.

We can also think of the problem of scheduling the trip as an algorithm. 

We plan the sites. We collect all the people going on the trip. We check to see if it is raining. We take our umbrellas and caps. If it is not raining we don't take them. Until we have sites we repeat and finish all the sites, this algorithm can be presented as a flow chart.


In computer programming we can represent a solution to a problem as a string of characters called a codepode. Pseudocode is a way of writing a solution in an informal way so we remember how we solved the problem. It is not a programming language but we can easily convert pseudocode to languages like Python or Java.

1.1.2 Computer Systems

History of Computing

In earlier times,  computers were only used for simple calculations. The Abacus is considered as one of the first computing devices ever invented.

An abacus uses several rows of beads to represent numbers.



In 1642, a French Mathematician called Blaise Pascal built the first mechanical calculating machine, the Pascaline to conduct addition and subtraction.

During the 1800s, British Mathematician Charles Babbage invented the Difference Engine a machine to compile mathematical tables. Later he proposed the Analytical Engine, the first general purpose mechanical computer. Babbage is distinguished as the Father of Computing due to his recognizable inventions at the time.



Augustus Lovelcael, the first computer programmer in the world, worked with Charles Babbage on his inventions. She wrote the first program while translating a paper on Babbage's Analytical Engine from French into English. She had mentioned stepwise descriptions, an algorithm, to calculate Bernoulli numbers.

The early programming language Ada was named after her, recognizing her contribution to the computing world.

In 1945, John Mauchly and J. Presper Ecker invented the ENIAC, Electronic Numerical Integrator and Computer. It could solve numerical problems through reprogramming. The machine was the first automatic, electronic, general purpose, digital and programmable computer.

Components of a Computer

The design of most of the General Purpose computers are based on the Von Neumann Architecture ( the Princeton Model). The concept was presented by John von Neumann, a Hungarian-American Mathematician in 1945. 

Von Neumann Architecture is based on the stored-program concept in which the program and data are stored in accessible memory.

The Central Processing Unit, where control is concentrated in a single component, a storage, primary memory where both data and instructions live, and input/output devices are introduced in this paradigm