ArticlePDF Available


It represents a universally applicable attitude and skill set everyone, not just computer scientists, would be eager to learn and use.
Computational Thinking
Jeannette M. Wing
Computer Science Department
Carnegie Mellon University
Pittsburgh, PA 15213-3890
November 25, 2005
A Vision for the 21st Century
Here is my grand vision for the field:
Computational thinking will be a fundamental skill used by everyone
worldwide by the middle of the 21st Century.
To reading, writing, and arithmetic, add computational thinking to every
child’s analytical ability. Imagine! And just as the printing press facilitated the
spread of the 3 R’s, what is appropriately incestuous about this vision is that
computing and computers will facilitate the spread of computational thinking.
Examples of Computational Thinking1
What do I mean by computational thinking? Computational thinking is taking
approaches to solving problems, designing systems, and understanding human
behavior that draw on the concepts fundamental to computer science. Compu-
tational thinking includes a range of “mental tools” that reflect the breadth of
our field.
When faced with a problem to solve, we might first ask “How difficult would
it be to solve?” and second “What’s the best way to solve it?” Our field has solid
theoretical underpinnings to answer these and other related questions precisely.
Stating the difficulty of a problem takes into consideration the underlying power
of the machine— the computing device that will run our solution. We must
consider the machine’s instruction set, its resource constraints, and its operating
environment. In solving a problem efficiently, we can further ask whether an
approximate solution is good enough, whether we can use randomization to our
advantage, 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.
1Please send me your favorite examples of computational thinking!
Computational thinking is thinking recursively. It is parallel processing.
Computational thinking is type checking, as the generalization of dimensional
analysis. It is recognizing both the virtues and dangers of aliasing, i.e., someone
or something having 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 its esthetics; and a system’s design,
for its simplicity and elegance.
Computational thinking is using abstraction and decomposition when tack-
ling a large complex task or designing a large complex system. It is separation
of concerns. Computational thinking is choosing an appropriate representa-
tion 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 that we can safely use, modify, and
influence a large complex system without understanding every detail of it. It
is modularizing something in anticipation of multiple users or pre-fetching 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 with each other.
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, search—resulting in a list of webpages, a strategy for winning
a game, or a counterexample. Computational thinking is thinking about ways
to use massive amounts of data effectively. It is making tradeoffs between time
and space, between processing power and storage capacity.
Here are some real-world examples: When your daughter goes to school in
the morning, she puts in her backpack the things she needs for the day. That’s
pre-fetching and caching. When your son loses his mittens, you suggest that he
retrace his steps. That’s backtracking. At what point do you stop renting skis
and buy yourself a pair? That’s on-line 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 CAPTCHAs authenticate humans?
That’s the difficulty of solving hard AI problems to foil computing agents.
Computational thinking will have become ingrained in our lives when words
like “algorithm” and “pre-condition” are part of our vocabulary; when “nonde-
terminism” and “garbage collection” take on senses meant by computer scien-
tists; and when trees are drawn upside down.
Computational Thinking: Now and Tomorrow
We have already witnessed an influence of computational thinking on other
Machine learning has transformed statistics. Statistical learning is being
used for problems on a scale, in terms of both data size and dimension, that
were unimaginable years ago. Statistics departments are now hiring computer
scientists. Schools of computer science are embracing existing or starting their
own statistics departments.
Our big bet in computational biology is our field’s belief that biologists can
benefit from computational thinking. Our contribution to biology goes beyond
searching through large amounts of sequence data looking for patterns. It is the
hope that our data structures and algorithms—our computational abstractions
and methods—can represent the structure of proteins in ways that elucidate
their function. Computational biology can change the way biologists think.
Similarly, computational game theory can change the way economists think;
nanocomputing, chemists; quantum computing, physicists.
The boldness of my vision is that not only will computational thinking be
part of the skill set of other scientists, but it will be part of everyone’s skill set.
The analogy is: ubiquitous computing is to today as computational thinking
is to tomorrow. Ubiquitous computing was yesterday’s dream now becoming
today’s reality. Computational thinking is tomorrow’s reality.
Computational Thinking: What It Is and Is Not
Computational thinking:
Conceptualizing, not programming: Suffice it to say that computer science
is not computer programming. Thinking like a computer scientist means
more than being able to program a computer.
Fundamental, not rote skill: By fundamental skill, I mean something that
every human being needs to know to function in modern society. Rote
means a mechanical routine. Ironically, not until our very own field
solves the AI Grand Challenge of making computers think like humans
will “thinking” be rote. Perhaps that can be saved for the second half of
this century!
A way that humans, not computers think: Computational thinking is a way
humans solve problems using computers. It is not trying to get humans to
think like computers. Computers are dull and boring. Humans are clever
and imaginative. We humans make computers exciting! Empowered with
computing devices, we can use our cleverness to tackle problems no one
would have dared to before the age of computing, and to build systems
with functionality limited only by our imagination.
Complements and combines mathematical and engineering thinking: Our
field inherently draws on mathematical thinking given that, like all sci-
ences, our formal foundations rest on mathematics. Our field inherently
draws on engineering thinking given that we build systems that interact
with the real world. It is the constraints of the underlying computing de-
vice that force us to think computationally, not just mathematically. And
it is our capability to build virtual worlds that free us to engineer systems
beyond the physical world.
Ideas, not artifacts: It’s not just the software and hardware artifacts we
produce that will be physically present everywhere and that will touch our
lives all the time, but it will be the computational concepts we use to ap-
proach and solve problems, to manage our daily lives, and to communicate
and interact with others.
It’s for everyone, everywhere, all the time. Computational thinking will
be a reality when it is so integral to human endeavors that it disappears
as an explicit philosophy.
Why This Vision is Timely
Today the general public has a misperception of what computer science is all
about. Many equate computer science with computer programming. Parents
see a narrow range of job opportunities for their children if they major in com-
puter science. Many people think the fundamental research is done; only the
engineering is left.
Computational thinking is a grand vision to guide us as we act to change
society’s image of our field. We especially need to reach the K-12 audience—
teachers, parents, and students. Here are some messages to send:
Our field continues to expand, not just as we collaborate with more and
more other disciplines, but also as we gain a deeper understanding of
our own discipline. There remain intellectually challenging and engaging
scientific problems to be understood and solved. The problem space and
solution space are bound only by our own curiosity and creativity.
One can major in computer science and do anything. One can ma jor
in English or mathematics and go on to a multitude of different careers.
Ditto computer science. One can major in computer science and go onto
a career in medicine, law, business, politics, any science or engineering,
and even the arts. More obviously, the interdisciplinary nature of our field
means majoring in computer science enables a student to launch a career
in a different discipline or at the boundaries of many.
Studying computer science empowers people with a way of thinking.
Please join us at Carnegie Mellon in making computational thinking com-
... CT is also an essential requirement for future engineers since these skills are necessary for solving complex technological problems for all engineering professionals [11]; [12]. CT, as defined by Wing [13], is "solving problems, designing systems, and understanding human behavior, by drawing on the concepts fundamental to computer science" [p. 9]. ...
... In essence, CT integration in pre-college education has been promoted by stakeholders, policymakers, and educators across formal and informal settings [14]; [15]; [16]. Research suggests that the integration of CT offers an encompassing approach that exposes children to computing principles in the context of their learning discipline [13]; [17]. As such, CT can be seen as a bridge that connects computer science to multiple disciplines, including engineering [9]; [18]. ...
... Computational thinking and engineering are defined as problem-solving processes [13]; [19]. CT is more than coding and/or programming, but rather a way of thinking when solving complex problems across disciplines [13]. ...
Conference Paper
Full-text available
This research study explores children and their parents' experiences engaging in engineering and computational thinking activities in an informal learning environment. The participants in this study comprised eleven families, including K-2 nd grade-aged children and their parents, who were purposively selected for this qualitative study. The findings revealed that many children initially hesitated to describe engineering and CT, but when probed, they explained that engineering and CT activities required them to build and/or code. Children also pointed out that these activities were like ones they had done in school. In contrast, parents described engineering and CT activities as requiring thinking and decision-making. Furthermore, some parents equated CT with coding and engineering with building, while others compared computing and engineering to other school subjects, such as math, science, and literacy.
... Bilgi-işlemsel düşünme; karmaşık problemleri daha küçük daha yönetilebilir parçalara ayırma, desen ve ilişkileri tanımlama ve bunları çözmek için algoritmalar geliştirme yaklaşımıdır (Wing, 2006). Bu yaklaşım, tüm kodlamanın temelinde yatan ve bugünün dijital dünyasında başarılı olmak için gereken temel bir beceridir. ...
... Bu beceriler bilgisayar bilimi, mühendislik, matematik ve diğer birçok alanda başarılı olmak için önemlidir. Bilgisayar bilimleri ve bilgi teknolojisi prensiplerini kullanarak karmaşık ve zorlu problemleri ele alan bir problem çözme yaklaşımı olan bilgi-işlemsel düşünme; problemleri formüle etme, çözme ve çözümlerin bir bilgi işleme aracı tarafından etkili bir şekilde yürütülebilecek bir formda temsil edilmesini içerir (Wing, 2006). ...
... Bilgi-işlemsel düşünmenin önemli bir yönü, özetleme veya eldeki problemin çözümü için gerekli olmayan ayrıntıları belirleme ve soyutlama yeteneğidir (Denning & Martell, 2015). Başka bir önemli yönü ise algoritmik düşünme, bir problemin bir bilgisayar veya diğer bilgi işleme sistemi tarafından yürütülebilecek bir dizi talimata parçalara ayırabilme yeteneğidir (Wing, 2006). Bilgiişlemsel düşünme, işletme, finans, sağlık hizmetleri ve eğitime kadar geniş bir yelpazede kullanılabilir. ...
Bu araştırma, Blok Tabanlı Oyunlaştırılmış Öğretimin kodlama eğitiminde kullanımının bilgi-işlemsel düşünme ve kodlamaya yönelik tutumlar üzerindeki etkilerini incelemeyi amaçlamaktadır. Bu amaç doğrultusunda çalışmada nicel araştırma yöntemlerinden ön-test son-test kontrol gruplu deneysel araştırma deseni kullanılmıştır. Araştırmanın çalışma grubu, 2021-2022 eğitim-öğretim yılında Bingöl ili Merkez Gazi Ortaokulu öğrencilerinden rastgele örneklem yöntemiyle seçilmiş 70 deney ve 54 kontrol grubu olmak üzere toplam 124 kişiden oluşmaktadır. Öğrencilerin bilgi-işlemsel düşünme becerilerini ölçmek için ise “Bilgi-İşlemsel Düşünme Becerisi Düzeyleri Ölçeği” kullanılmıştır. Öğrencilerin kodlamaya yönelik tutumlarını ölçebilmek için “Ortaokul Öğrencileri için Kodlamaya Yönelik Tutum Ölçeği” kullanılmıştır. Bu veriler SPSS istatistik programı ile analiz edilmiştir. Buna göre Blok Tabanlı Oyunlaştırılmış Öğretimin bilgi-işlemsel düşünmeye herhangi bir etkisi olmazken kodlama yönelik tutuma olumlu etkisi olmuştur. Blok Tabanlı Oyunlaştırılmış Öğretim özellikle ilgi, motivasyon ve öğrenme engellerini aşma açısından faydalı olma potansiyeli taşımaktadır. Ancak Blok Tabanlı Oyunlaştırılmış Öğretimin potansiyel sınırlamalarını dikkate almak ve öğrencilerin gelecekteki kodlama çalışmaları için çeşitli kodlama dilleri ve araçlarıyla tanışmalarını sağlamak önemlidir.
... This suggests that enhancing students' application skills in cloud-based of ice software positively impact learning outcomes. Computational thinking Wing (2006) introduced computational thinking as an emerging research area in computer science and education. It has garnered signi icant attention and has become a focal point in the digital landscape. ...
... CT is essential to the development of computer applications, but it can also be used to support problem solving across all disciplines, including the humanities, math and science. (Jeannette, 2006). ...
Full-text available
Bu araştırmanın amacı yabancı dil olarak Türkçe öğrenenlerin dijital materyallerle Türkçe öğrenmeye yönelik görüşlerinin incelenmesidir. Araştırmada nitel araştırma desenlerinden durum çalışması deseni kullanılmıştır. Araştırmaya farklı kurum ve kuruluşlardan yabancı dil olarak Türkçe öğrenen 20 kişilik çalışma grubundan veri sağlanmıştır. Araştırmada elde edilen veriler nitel olarak analiz edilmiş ve elde edilen kodlara göre bulgular tespit edilmiştir. Araştırma sonucunda yabancı dil olarak Türkçe öğrenicilerinin farklı eğitim sistemlerinden geçtiği, farklı alt yapılara sahip olduğu belirlenmiştir. Ayrıca bilgi iletişim sistemlerinin, dijital materyallerin öğretimde kullanılmasını ve medya okur yazarlığı, teknoloji kullanımı konusunda olumlu görüşlerinin olduğu bununla birlikte ortak görüşlerin oluşmadığı tespit edilmiştir.
Full-text available
In the information society, computational thinking is increasingly important. This paper first expounds the connotation of computational thinking, and uses the CTS designed and developed by Korkmaz as a tool to evaluate students’ computational thinking. After that, this paper deeply analyzes the advantages of serious games, combined with Kolb experiential learning model, describes students’ learning process as a game cycle experience process, and constructs a “Game-Based Experiential Learning Computing Thinking Training Model”. In order to verify the effectiveness of this mode, this paper selects the educational Flash programming game Lightbot to carry out the teaching application of this model. Through questionnaires and semi-structured interviews, the paper finds that the Game-Based Experiential Learning Computing Thinking Training Model can effectively improve learners’ computational thinking. Finally, the paper puts forward corresponding improvement suggestions for the application effect of the model, in order to provide reference for relevant educators to cultivate learners’ computational thinking.
Full-text available
Este trabalho relata uma proposta de Itinerário Formativo em Pensamento Computacional (PC), como uma forma de atender as normativas da Base Nacional Comum Curricular (BNCC), proposta pelo Ministério da Educação do Governo do Brasil. A metodologia adotada para a formulação desse Itinerário, pauta-se na aplicação de oficinas pedagógicas relacionadas ao PC. Desta forma, foi elaborado um material pedagógico estruturado de acordo com as diretrizes da BNCC, bem como organizado um cronograma programático para uma futura implementação em turmas do 1º ano de Ensino Médio das Escolas Públicas.
Full-text available
O pensamento computacional é um meio estratégico para identificar e solucionar problemas de diferentes áreas do conhecimento, utilizando como base algoritmos e computadores. Essa habilidade traz benefícios como a solução de problemas de forma ágil e a inserção no mundo digital, relevantes para a vida em sociedade e para o fácil aprendizado em futuras tecnologias. O objetivo do projeto foi contribuir para o processo de ensino/aprendizagem, por meio do desenvolvimento e da aplicação de material didático para o curso intitulado “Introdução ao Pensamento Computacional”. O curso, realizado mediante aulas on-line, foi idealizado com o intuito de desenvolver habilidades do pensamento computacional, além de introduzir os alunos no mundo digital, com a apresentação de conceitos básicos da computação. O público-alvo foram alunos do Ensino Fundamental e do Ensino Médio de escolas da rede pública. Inicialmente, foram selecionados materiais, a partir de pesquisas realizadas em bibliotecas digitais, para leitura e estudo. Posteriormente, esses materiais foram usados como base na preparação e na realização dos materiais das aulas. Adicionalmente, foram usadas ferramentas modernas e interativas de fácil compreensão para os alunos, desenvolvidas especialmente para o ensino de programação de crianças e adolescentes, como o Scratch. As atividades propostas foram realizadas e atingiram seu maior objetivo, que era contribuir para o processo de desenvolvimento do pensamento computacional, além de aproximar crianças e adolescentes da tecnologia e do seu uso. Os resultados indicam o aumento do interesse por tecnologia em todos os alunos participantes do curso.
ResearchGate has not been able to resolve any references for this publication.