Computational Thinking
Computational Thinking
An algorithm is a set of rules for getting a specific output from a specific input.
Each step must be so precisely defined that it can be translated into computer
language and executed by machine. (Donald Knuth)
● The magic is nothing more than a machine executing large numbers of very
simple computations very fast.
● Programs are the bridge: algorithms encoded in special-purpose languages
that translate to machine instructions that control a computer.
● Some problems are impossible for computers. By understanding the limits of
computing, we can avoid the trap of looking to computing technology to solve
such problems.
● Understanding users and designing systems specifically to them turn out to
be one of the great challenges of modern computing.
Computational Thinking
Our brains do not naturally think computationally. Keep your perspective on:
● Methods: Methods for computing and reasoning that non-experts could put to
work simply by following directions.
● Machines: Automation was motivated by greater speed of calculation and
reduction of human errors in calculations. Eventually, such machines became
electronic computers.
● Education: Computational thinking and its practice were hosted by Computer
Science Departments around the world.
● Software Engineering: Built to overcome rampant problems with errors and
unreliability in software, especially large software systems.
● Design: Designers bring sensibilities and responsiveness to concerns,
interests, practices, and history in user communities.
● Computational science: Novel area that brings computing into science, not
only to support the traditions of theory and experiment, but also to offer
revolutionary new ways of interpreting natural processes and conducting
scientific investigations.
Methods
Mathematical methods:
All these methods capture, as a set of steps, the procedure for complex
calculations.
Locality of Reference
Memory Hierarchy
Computing Machines
Current computers are the dream in terms of automating tasks and freeing them
from human errors, but as the systems became large and complex, guarantee that
they are error-free became unfeasible. Why?
Charles Babbage
1. Neural Networks
a. Inspired on the human brain
b. Programming vs. Learning
i. Programming:
1. Sorting cards: There are several ways of sorting them,
2. The sorting strategies rely on clear criteria and procedures
ii. Learning:
1. Detecting spam: There is not general algorithm.
2. We do have several examples of both spam and legitimate messages.
3. Model learns from the data
c. Models are not easy to understand
2. Quantum Computing
a. QC represent bits with electron spins and connections with quantum effects such as
entanglement
b. QC can perform some computations much faster than traditional computing
Computational Thinking Evolution
The question "What can be automated?" is one of the most inspiring and
philosophical questions of contemporary civilization. (George Forsythe, 1969)
Timeline: