C
computational thinking
builds on the power and
limits of computing
processes, whether they are executed
by a human or by a
machine. Computational
methods and models give us
the courage to solve problems
and design systems that no one of us would
be capable of tackling alone. Computational thinking
confronts the riddle of machine intelligence:
What can humans do better than computers? and
What can computers do better than humans? Most
fundamentally it addresses the question: What is
computable? Today, we know only parts of the
answers to such questions.
Computational thinking is a fundamental skill for
everyone, not just for computer scientists. To reading,
writing, and arithmetic, we should add computational
thinking to every child’s analytical ability.
Just as the printing press facilitated the spread of the
three Rs, what is appropriately incestuous about this
vision is that computing and computers facilitate the
spread of computational thinking.
Computational thinking involves solving problems,
designing systems, and understanding human
behavior, by drawing on the concepts fundamental
to computer science. Computational thinking
includes a range of mental tools that reflect the
breadth of the field of computer science.
Having to solve a particular problem, we might
ask: How difficult is it to solve? and What’s the best
way to solve it? Computer science rests on solid theoretical
underpinnings to answer such questions precisely.
Stating the difficulty of a problem accounts
for the underlying power of the machine—the computing
device that will run the solution. We must
consider the machine’s instruction set, its resource
constraints, and its operating environment.
In solving a problem efficiently, we might further
ask whether an approximate solution is good
enough, whether we can use randomization to our
advantage, and whether false positives or false negatives
are allowed. Computational thinking is reformulating
a seemingly difficult problem into one we
know how to solve, perhaps by reduction, embedding,
transformation, or simulation.
Computational thinking is thinking recursively. It
is parallel processing. It is interpreting code as data
and data as code. It is type checking as the generalization
of dimensional analysis. It is recognizing
both the virtues and the dangers of aliasing, or giving
someone or something more than one name. It
is recognizing both the cost and power of indirect
addressing and procedure call. It is judging a program
not just for correctness and efficiency but for
aesthetics, and a system’s design for simplicity and
elegance.
Computational thinking is using abstraction and
decomposition when attacking a large complex task
or designing a large complex system. It is separation
of concerns. It is choosing an appropriate representation
for a problem or modeling the relevant aspects
of a problem to make it tractable. It is using invariants
to describe a system’s behavior succinctly and
declaratively. It is having the confidence we can
safely use, modify, and influence a large complex
L
system without understanding its every detail. It is ISA HANEY
Viewpoint Jeannette M. Wing
Computational Thinking
It represents a universally applicable attitude and skill set everyone, not just
computer scientists, would be eager to learn and use.
34 March 2006/Vol. 49, No. 3 COMMUNICATIONS OF THE ACM
modularizing something in anticipation of multiple
users or prefetching and caching in anticipation of
future use.
Computational thinking is thinking in terms of
prevention, protection, and recovery from worst-case
scenarios through redundancy, damage containment,
and error correction. It is calling gridlock deadlock
and contracts interfaces. It is learning to avoid race
conditions when synchronizing meetings with one
another.
Computational thinking is using heuristic reasoning
to discover a solution. It is planning, learning,
and scheduling in the presence of uncertainty. It is
search, search, and more search, resulting in a list of
Web pages, a strategy for winning a game, or a counterexample.
Computational thinking is using massive
amounts of data to speed up computation. It is making
trade-offs between time and space and between
processing power and storage capacity.
Consider these everyday examples: When your
daughter goes to school in the morning, she puts in
her backpack the things she needs for the day; that’s
prefetching and caching. When your son loses his
mittens, you suggest he retrace his steps; that’s backtracking.
At what point do you stop renting skis and
buy yourself a pair?; that’s online algorithms. Which
line do you stand in at the supermarket?; that’s performance
modeling for multi-server systems. Why
does your telephone still work during a power outage?;
that’s independence of failure and redundancy
in design. How do Completely Automated Public
Turing Test(s) to Tell Computers and Humans
Apart, or CAPTCHAs, authenticate humans?; that’s
exploiting the difficulty of solving hard AI problems
to foil computing agents.
Computational thinking will have become
ingrained in everyone’s lives when words like algorithm
and precondition are part of everyone’s vocabulary;
when nondeterminism and garbage collection
take on the meanings used by computer scientists;
and when trees are drawn upside down.
We have witnessed the influence of computational
thinking on other disciplines. For example,
machine learning has transformed statistics. Statistical
learning is being used for problems on a scale, in
terms of both data size and dimension, unimaginable
only a few years ago. Statistics departments in
all kinds of organizations are hiring computer scientists.
Schools of computer science are embracing
existing or starting up new statistics departments.
Computer scientists’ recent interest in biology is
driven by their belief that biologists can
CHE COSE' IL PENSIERO COMPUTAZIONALE
SQUARE SPIRAL ANIMATION
STORY TELLING
Il Digital Storytelling ovvero la Narrazione realizzata con strumenti digitali (web apps, webware) consiste nell’organizzare contenuti selezionati dal web in un sistema coerente, retto da una struttura narrativa, in modo da ottenere un racconto costituito da molteplici elementi di vario formato (video, audio, immagini, testi, mappe, ecc.).
Esempio di Storytelling
SCRATCH, IMPARARE PROGRAMMANDO
Scratch http://scratch.mit.edu/ è un ambiente d'apprendimento sviluppato dal gruppo di ricerca Lifelong Kindergarten del MIT Media Lab di Boston. Un linguaggio di programmazione che rende semplice e divertente creare storie interattive, giochi e animazioni, e permette di condividere e remixare i propri progetti nel web.
Programmare permette di sviluppare il pensiero logico, il pensiero computazionale e algoritmico, apprendendo delle strategie per il problem-solving che si ripercuotono anche nelle altre discipline.
“Computational thinking is an approach to solving problems,
designing systems, and understanding human behavior by drawing on concepts
fundamental to computer science” [Wing, 2006]
Scratch è, inoltre, un social network protetto, dove poter condividere i propri progetti, collaborare, apprezzare e remixare i progetti degli altri utenti.
Il pensiero computazionale è un processo mentale per la risoluzione di problemi costituito dalla combinazione di metodi caratteristici e di strumenti intellettuali, entrambi di valore generale.
Per caratterizzare sinteticamente il rilevante contributo culturale apportato dall’Informatica alla comprensione della società contemporanea, la scienziata informatica Jeannette Wing nel 2006 introdusse l’espressione “pensiero computazionale ”
Computational Thinking
It represents a universally applicable attitude and skill set everyone, not just
computer scientists, would be eager to learn and use.
Computational thinking
builds on the power and
limits of computing
processes, whether they are executed
by a human or by a
machine. Computational
methods and models give us
the courage to solve problems
and design systems that no one of us would
be capable of tackling alone. Computational thinking
confronts the riddle of machine intelligence:
What can humans do better than computers? and
What can computers do better than humans? Most
fundamentally it addresses the question: What is
computable? Today, we know only parts of the
answers to such questions.
Computational thinking is a fundamental skill for
everyone, not just for computer scientists. To reading,
writing, and arithmetic, we should add computational
thinking to every child’s analytical ability.
Just as the printing press facilitated the spread of the
three Rs, what is appropriately incestuous about this
vision is that computing and computers facilitate the
spread of computational thinking.
Computational thinking involves solving problems,
designing systems, and understanding human
behavior, by drawing on the concepts fundamental
to computer science. Computational thinking
includes a range of mental tools that reflect the
breadth of the field of computer science...