Você está na página 1de 9

Phil. Trans. R. Soc.

A (2008) 366, 3717–3725


doi:10.1098/rsta.2008.0118
Published online 31 July 2008

Pensamento computacional e pensamento sobre


computação
BY JEANNETTE M. W ING *
Departamento de Ciência da Computação, Carnegie Mellon University,
Pittsburgh, PA 15213, USA

O pensamento computacional influenciará todos em todos os campos de atuação. Essa visão


representa um novo desafio educacional para nossa sociedade, especialmente para nossos filhos.
Ao pensar em computação, precisamos estar sintonizados com os três propulsores de nosso
campo: ciência, tecnologia e sociedade. Acelerar os avanços tecnológicos e as demandas
monumentais da sociedade nos força a revisitar as questões científicas mais básicas da
computação.
Palavras-chave: pensamento computacional; abstração; automação; Informática;
computável; inteligência

1. Pensamento computacional

O pensamento computacional está adotando uma abordagem para resolver


problemas, projetar sistemas e entender o comportamento humano que se baseia
em conceitos fundamentais para a computação1 (Wing 2006).
O pensamento computacional é um tipo de pensamento analítico. Ele compartilha
com o pensamento matemático das maneiras gerais pelas quais podemos abordar a
solução de um problema. Ele compartilha com o pensamento de engenharia das
maneiras gerais pelas quais podemos abordar o design e a avaliação de um sistema
grande e complexo que opera dentro das restrições do mundo real. Ele compartilha
com o pensamento científico das maneiras gerais pelas quais podemos abordar a
compreensão da computabilidade, inteligência, mente e comportamento humano.

(a) Computação: abstração e automação


A essência do pensamento computacional é a abstração. Na computação, abstraímos
noções além das dimensões físicas do tempo e do espaço. Nossas abstrações são
extremamente gerais porque são simbólicas, onde abstrações numéricas são apenas um
caso especial.
De duas maneiras, nossas abstrações tendem a ser mais ricas e complexas do que as
das ciências matemáticas e físicas. Primeiro, nossas abstrações não gozam
necessariamente das propriedades algébricas limpas, elegantes ou facilmente definíveis
da matemática.
*wing@cs.cmu.edu
1
Por 'computação', quero dizer muito amplamente o campo que abrange ciência da computação, engenharia da
computação, comunicações, ciência da informação e tecnologia da informação.
Uma contribuição de 19 para uma edição da reunião de discussão 'De computadores à computação
onipresente, até 2020'.

3717 This journal is q 2008 The Royal Society


3718 J. M. Wing

abstrações, como números ou conjuntos reais, do mundo físico. Por exemplo, uma pilha
de elementos é um tipo de dado abstrato comum usado na computação. Não pensaríamos
em "adicionar" duas pilhas, assim como dois inteiros. Um algoritmo é uma abstração de
um procedimento passo a passo para obter entrada e produzir alguma saída desejada. O
que significa "intercalar" dois algoritmos, talvez para um processamento paralelo
eficiente? Uma linguagem de programação é uma abstração de um conjunto de sequências
de caracteres, cada uma das quais quando interpretada afeta algum cálculo. O que
significa 'combinar' duas linguagens de programação? Esses tipos de combinadores são
abstrações que exigem cuidadoso pensamento, talvez uma agenda de pesquisa inteira,
para definir. Segundo, porque nossas abstrações são finalmente implementadas para
funcionar dentro das restrições do mundo físico, precisamos nos preocupar com casos
extremos e casos de falha. O que acontece quando o disco está cheio ou o servidor não
está respondendo? O que acontece quando um programa encontra em tempo de execução
um erro que deveria ter sido capturado em tempo de compilação? Como conseguimos
que um robô se movesse por um corredor sem esbarrar nas pessoas?
Ao trabalhar com abstrações ricas, é fundamental definir a abstração "correta". O
processo de abstração - decidindo quais detalhes precisamos destacar e quais detalhes
podemos ignorar - está subjacente ao pensamento computacional.
O processo de abstração introduz camadas. Na computação, trabalhamos
simultaneamente com pelo menos duas, geralmente mais camadas de abstração: a camada
de interesse e a camada abaixo; ou a camada de interesse e a camada acima. Interfaces
bem definidas entre camadas nos permitem construir sistemas grandes e complexos.
Dada a interface de programação de aplicativos (API) de um componente de
software, o usuário não precisa conhecer os detalhes da implementação do componente
para saber como interagir com ele, e o implementador não precisa saber quem podem ser
todos os usuários em potencial do componente para implementar corretamente. A
arquitetura em camadas da Internet, em particular a camada de protocolo da Internet de
"cintura fina", suporta a incorporação de novos dispositivos de computação e tecnologia
de rede na parte inferior e a adição de novos aplicativos imprevistos na parte superior.
Ao trabalhar com camadas de abstração, temos necessariamente em mente a relação
entre cada par de camadas, seja definida por uma função de abstração, uma relação de
simulação, uma transformação ou um tipo mais geral de mapeamento. Usamos esses
mapeamentos para mostrar a equivalência observável entre uma máquina de estado
abstrato e um de seus possíveis refinamentos, para provar a correção de uma
implementação com relação a uma especificação e para compilar um programa escrito em
uma linguagem de alto nível para um código de máquina mais eficiente .
E assim, as porcas e os parafusos do pensamento computacional estão definindo
abstrações, trabalhando com múltiplas camadas de abstração e entendendo os
relacionamentos entre as diferentes camadas. Abstrações são as ferramentas "mentais" da
computação.
O poder de nossas ferramentas 'mentais' é amplificado pelo poder de nossas
ferramentas 'metálicas'. Computar é a automação de nossas abstrações. Operamos
mecanizando nossas abstrações, camadas de abstração e seus relacionamentos. A
mecanização é possível devido às nossas notações e modelos precisos e exatos. A
automação implica a necessidade de algum tipo de computador para interpretar as
abstrações. O tipo mais óbvio de computador é uma máquina, ou seja, um dispositivo
físico2 com processamento, armazenamento e
2
Os dispositivos físicos óbvios são os mecânicos ou elétricos de hoje. Também pretendo incluir os
dispositivos físicos de amanhã, por exemplo. computadores nano e quântico; e até os dispositivos
biológicos de amanhã, p. computadores orgânicos, de DNA e moleculares também.(cf. §2a).
Phil. Trans. R. Soc. A (2008)
Computational thinking 3719

capacidades de comunicação. Sim, um computador pode ser uma máquina, mas mais
sutilmente pode ser um humano. Os seres humanos processam informações; computação
dos humanos. Em outras palavras, o pensamento computacional não requer uma máquina.
Além disso, quando consideramos a combinação de um humano e uma máquina como um
computador, podemos explorar o poder de processamento combinado de um humano com o
de uma máquina. Por exemplo, os humanos ainda são melhores do que as máquinas para
analisar e interpretar imagens; por outro lado, as máquinas são muito melhores para executar
certos tipos de instruções com muito mais rapidez do que os humanos e processar conjuntos
de dados muito maiores do que um humano pode suportar.
Operacionalmente, a computação está preocupada em responder 'Como eu conseguiria
um computador para resolver esse problema?', Onde o computador poderia ser uma
máquina, um humano, a combinação de uma máquina e um humano, ou recursivamente, a
combinação (por exemplo, uma rede) desses computadores. Implícito na resposta a essa
pergunta está a identificação de abstrações apropriadas e a escolha do tipo apropriado de
computador para a tarefa. Infelizmente, é muito fácil responder a essa pergunta sem pensar
muito em definir a abstração correta e depois escolher uma máquina com muita potência
para resolver o problema usando força bruta. O pensamento computacional pode oferecer
mais do que esse simples uso de computadores mecânicos.
(b) Pensamento computacional em toda parte
"O pensamento computacional está influenciando a pesquisa em quase todas as
disciplinas, tanto nas ciências quanto nas humanidades" (Bundy 2007). As
evidências da influência do pensamento computacional em outros campos são abundantes: o
pensamento computacional está transformando a estatística, onde, com o aprendizado de
máquina, a automação dos métodos bayesianos e o uso de modelos gráficos probabilísticos
tornam possível identificar padrões e anomalias em conjuntos de dados volumosos tão diversos
quanto os mapas astronômicos. , imagens funcionais de ressonância magnética, compras com
cartão de crédito e recibos de supermercado (por exemplo, Machine Learning Department
2008). O pensamento computacional está transformando a biologia, primeiro com o
algoritmo de sequenciamento de espingarda, acelerando nossa capacidade de sequenciar
o genoma humano e agora com nossas abstrações que representam processos
dinâmicos encontrados na natureza, do ciclo celular ao dobramento de proteínas (por
exemplo, Fisher & Henzinger 2007). O pensamento computacional está transformando a
economia, gerando um novo campo de microeconomia computacional, com aplicações
como colocação de anúncios, leilões on-line, serviços de reputação e até a busca de
doadores ideais para a troca renal nos dois sentidos (Abraham et al. 2007).
Em outros campos, o pensamento computacional ainda está na fase do pensamento
computacional simples: gastar dias em ciclos de máquina para resolver problemas. Muitas
ciências e disciplinas de engenharia contam com enormes simulações computacionais de
modelos matemáticos de processos físicos encontrados na natureza. O setor aeroespacial
conta com a capacidade de simular uma aeronave inteira ou missão espacial. As geociências
se atrevem a querer simular a Terra, desde seu núcleo interno até sua superfície e o Sol. Nas
ciências humanas e nas artes, as bibliotecas digitais de livros, coleções e artefatos criam
oportunidades através de métodos computacionais, como mineração de dados e federação de
dados, para descobrir novas tendências, padrões e links em nossa compreensão e valorização
da humanidade.
Olhando para o futuro, um pensamento computacional mais profundo - por meio da
escolha de abstrações mais inteligentes ou sofisticadas - pode permitir que cientistas e
engenheiros modelem e analisem seus sistemas em uma escala de ordens de magnitude maior
do que são capazes de lidar atualmente. Com o uso de camadas de abstração, por exemplo,

Phil. Trans. R. Soc. A (2008)


3720 J. M. Wing

decomposição hierárquica, estamos ansiosos para quando pudermos: modelar sistemas


em várias escalas de tempo e em várias resoluções das três dimensões espaciais; modelar
as interações desses muitos sistemas complexos para identificar condições para pontos
de inflexão e comportamento emergente; aumentar o número de parâmetros e
conjuntos de condições iniciais nesses modelos; reproduzir esses modelos para trás e
para frente no tempo; e validar esses modelos contra a verdade básica.
Mais profundo pensamento computacional nos ajudará não só para modelar cada
vez mais complexo de sistemas, mas também para analisar as enormes quantidades de
dados que coletamos e gerar. Através da implantação de redes de sensores distribuídos,
uso rotineiro de sistemas de monitoramento e vigilância, a prevalência de câmeras
digitais em telefones (celulares) móveis, digitalização da informação do mundo,
executando simulações de modelos de sistemas complexos, e assim por diante,
estaremos coletando e gerando mais e mais dados para analisar. Será através de
pensamentos e abstrações computacionais para representar e processar os dados - que
seremos capazes de extrair o conhecimento enterrado dentro ou espalhados por todo os
dados. Existe um ciclo de mentário aberto: esse conhecimento, despertando nossa
curiosidade, nos levará a fazer novas perguntas que exigem a coleta de mais dados; e
esse conhecimento nos ajudará a ajustar nossos modelos de simulação, gerando ainda
mais dados.
Visão no. 1. Eu imagino que o pensamento computacional será fundamental para
novas descobertas e inovações em todos os campos de atuação.
(c) Pensamento computacional para todos
Se o pensamento computacional for usado em todos os lugares, ele tocará todos,
direta ou indiretamente. Isso gera um desafio educacional. Se o pensamento
computacional é adicionado ao repertório de habilidades de pensamento, como e
quando as pessoas devem aprender esse tipo de pensamento e como e quando devemos
ensiná-lo? Vamos supor que a tendência de usar o pensamento computacional na
pesquisa em todos os campos já esteja ocorrendo. , já influenciando o treinamento de
estudantes de pós-graduação. Vamos supor ainda que as universidades já começaram a
incorporar o pensamento computacional em seus currículos de graduação,
reconhecendo assim como a próxima geração terá que ser capaz de pensar para ter
sucesso na sociedade moderna. Assim, vamos focar essa questão nos níveis de ensino
fundamental e médio. De fato, se quiséssemos garantir uma base comum e sólida de
entendimento e aplicação do pensamento computacional para todos, esse aprendizado
deveria ser melhor realizado nos primeiros anos da infância.
Faço o seguinte como um desafio para as comunidades de ciência da computação,
ciências da aprendizagem e educação.
Desafio no. 1. Quais são as formas eficazes de aprender (ensinar) o pensamento
computacional das (para) crianças?
Essa questão levanta questões ainda mais fundamentais:
Quais são os conceitos elementares do pensamento computacional? Os educadores em
computação responderam e continuam a responder a essa pergunta criando cursos,
geralmente para alunos do primeiro ano do ensino médio, que se concentram nos
princípios da computação e não apenas nas habilidades de programação de
computadores. À medida que o campo da computação continua amadurecendo, vale a
pena revisar novamente essa questão, com um foco específico nos anos anteriores.

Phil. Trans. R. Soc. A (2008)


Computational thinking 3721

Além disso, vale a pena revisar essa questão em colaboração com estudiosos no
aprendizado de ciências e educação. Por exemplo, quais conceitos de pensamento
computacional são tão inatos para a cognição humana quanto o conceito matemático
de números? A visão humana é um processamento paralelo. Que tarefas naturalmente
fazemos ou aprendemos a fazer em paralelo versus sequencialmente? As crianças
experimentam noções de infinidade e recursão através da matemática e da linguagem;
nomear e ensinar esses conceitos fundamentais desde o início em contextos formais de
aprendizagem forneceria blocos de construção poderosos para o pensamento
computacional.
O que seria uma ordenação eficaz de conceitos no ensino de crianças à medida que
sua capacidade de aprendizado progredir ao longo dos anos? Por analogia, ensinamos
números a crianças no jardim de infância (quando têm 5 anos), álgebra no ensino
fundamental (12 anos) e cálculo no ensino médio (18 anos). Pode haver muitas
maneiras possíveis de estruturar a progressão dos conceitos de pensamento
computacional; qual é o mais eficaz para qual tipo de aluno?
Qual a melhor forma de integrar a ferramenta ao ensino dos conceitos? Aqui e a
partir de agora, 'ferramenta' significa a máquina de computação (uma ferramenta
específica de 'metal' do §1a). Nosso campo de computação está em uma situação única,
pois não apenas existem conceitos computacionais para ensinar, mas também há uma
ferramenta para ensinar. Essa ferramenta oferece alguns desafios e oportunidades.
Um desafio é que não queremos que a ferramenta atrapalhe a compreensão dos
conceitos. Também não queremos que as pessoas sejam capazes de usar a ferramenta,
mas não tenham aprendido os conceitos (um caso em questão: usar uma calculadora
versus entender aritmética). Pior, não queremos que as pessoas saiam pensando que
entendem os conceitos porque são hábeis em usar a ferramenta. Um segundo desafio é
que queremos acompanhar o aprendizado de como usar a ferramenta na ordem de
aprendizado de conceitos. Em que momento apresentamos cada um dos poderosos
recursos de uma máquina de computação? Em que momento expomos as crianças aos
meandros de como a máquina funciona? Essas perguntas são análogas à escolha da
abstração correta, onde agora os critérios são definidos pela capacidade de aprendizado.
Uma oportunidade é que podemos usar a ferramenta para reforçar os conceitos que
ensinamos. Computar é legal: trata-se de dar vida às abstrações! Através de visualização
e animação eficazes, mesmo em séries iniciais, podemos mostrar visceralmente a
diferença entre um algoritmo de tempo polinomial e um de tempo exponencial ou
mostrar que uma árvore é um tipo especial de gráfico; nas séries posteriores,
adquirindo habilidades de programação, os alunos podem automatizar suas próprias
abstrações. De fato, essa ferramenta pode ser útil para reforçar não apenas conceitos de
pensamento computacional, mas também conceitos de outros campos. Uma segunda
oportunidade é que a maioria das crianças hoje é fácil com a mecânica do uso da
ferramenta e não tem medo de explorar e brincar com ela. Atualmente, podemos tirar
proveito da exposição de rotina que as crianças têm a dispositivos computacionais em
casa e na escola.
Dada essa última observação, também devemos explorar a aprendizagem informal
e a formal. A aprendizagem ocorre de várias maneiras e fora da sala de aula: as
crianças ensinam umas às outras; aprenda com os pais e a família; aprende em casa,
em museus e em bibliotecas; e aprenda através de hobbies, superando as experiências
da internet e da vida.
Visão no. 2. Imagino que o pensamento computacional seja parte integrante da
educação infantil.

Phil. Trans. R. Soc. A (2008)


3722 J. M. Wing

Sociedade

Ciência Tecnologia

Figura 1. Três direcionadores da computação: ciência, tecnologia e sociedade.

Embargo. Existem muitas barreiras culturais, econômicas, políticas e sociais na


concretização dessa visão, especialmente em países onde o sistema educacional não é
controlado centralmente. Esforçar-se por essa visão ainda pode render benefícios
valiosos.
2. Pensando em computação

O campo da computação é impulsionado por questões científicas, inovação tecnológica


e demandas da sociedade. Lembro-nos deste ponto por duas razões. Primeiro, em
nosso campo, somos frequentemente tão empolgados com nossos avanços tecnológicos
ou expectativas da sociedade que esquecemos que existem questões científicas
profundas subjacentes ao nosso campo. Segundo, para outras pessoas fora da
computação, é importante explicar que o peso de cada uma e, além disso, a combinação
de nossos três fatores - ciência, tecnologia e sociedade - tornam nosso campo único,
realmente distinto de outras ciências, matemática e engenharia. Por que não celebrar
essa distinção?
Além disso, como mostrado pelas setas bidirecionais na figura 1, há uma
maravilhosa interação - empurrar e puxar - entre esses três fatores: no ciclo usual, a
descoberta científica alimenta a inovação tecnológica, que alimenta novas aplicações
sociais; na direção inversa, a nova tecnologia inspira novos usos sociais criativos, que
podem exigir novas descobertas científicas. Um exemplo de como a sociedade exige
novas ciências: a disseminação de nossas próprias máquinas de computação e
comunicação, de mega data centers de dezenas de milhares de servidores a bilhões de
telefones celulares, requer novos avanços na ciência para usar a energia de maneira
mais eficiente. Um exemplo de como a sociedade exige novas tecnologias: o desejo de
obter uma fi lidade mais alta e ambientes virtuais mais realistas está sobrecarregando
nossa capacidade de rede para a transmissão simultânea em tempo real de vários fluxos
de dados multimídia (áudio, vídeo e texto). Outro exemplo de atração tecnológica é
como um desejo social fundamental de expressar sua identidade e conectar-se com
outras pessoas com o mesmo raciocínio levou ao rápido crescimento de redes sociais,
como o Facebook, MySpace e YouTube, que por sua vez adicionou uma nova indústria
ao nosso economia.
Nosso campo antecipa naturalmente as tendências tecnológicas e abraça as
demandas e expectativas da sociedade; portanto, comecemos com os direcionadores de
tecnologia, então sociais e científicos.
a) Drivers de tecnologia
Começando no nível do substrato computacional, estamos prevendo o fim da lei de
Moore nos próximos 10 a 15 anos(Engadget 2006). A consequência imediata para a
tecnologia baseada em silício é a produção de máquinas com arquitetura de múltiplos
núcleos;
Phil. Trans. R. Soc. A (2008)
Computational thinking 3723

o desafio é entender como programá-los para usar efetivamente sua capacidade de


processamento paralelo.
Além do silício, observamos a nano-computação, a bio-computação e até a computação
quântica. Em certo sentido, eles já chegaram. Nano está aqui: a IBM (2006) anunciou que
seus pesquisadores construíram o primeiro circuito integrado completo em torno de uma
única molécula de nanotubo de carbono. A biografia está aqui: Adleman (1994) resolveu
o problema do caminho hamiltoniano de sete pontos com a computação de DNA; Benenson
et al.(2004) descreveu na Nature a construção de um computador de DNA. Agora
estamos construindo máquinas moleculares. Quantum está chegando? Os suíços
(Messmer 2007) usar criptografia quântica para garantir cédulas em suas eleições. O design
de nanoc-omputadores e computadores de inspiração biológica já deve levar em
consideração os efeitos quânticos (por exemplo, Heller et al. 2005).
No nível do dispositivo, Strukov et al. (2008) anunciaram que podem criar um
memristor (Chua 1971), o quarto elemento que faltava, juntamente com o resistor,
capacitor e indutor. Em escalas maiores, vemos um uso crescente de telefones celulares,
etiquetas de identificação por radiofrequência, sensores, atuadores e robôs. Nossos
automóveis estão cheios de computadores incorporados: um BMW é 'agora realmente uma
rede de computadores' (Economist 2007).
Em termos de dados, estamos nos afogando em dados (cf. §1b). Os sensores estão em toda
parte, o armazenamento é barato e estamos em constante estado de sobrecarga de informações.
Em termos de comunicação, a Web 3.0 ou a Web Semântica é uma área ativa de pesquisa.
Veremos mundos virtuais mais sofisticados; O Second Life é o mosaico de hoje. Os cientistas e
engenheiros de amanhã conduzirão seu trabalho através de organizações virtuais, facilitando a
colaboração internacional.
Em termos de máquinas tecnológicas de longo alcance, as pessoas aspiram a construir
máquinas que modelam o cérebro humano. A IBM e a EPFL Blue Brain Project (2005) O
objetivo é criar um modelo funcional e biologicamente preciso do cérebro. A empresa
iniciante Numenta (2005) está construindo uma plataforma de software para computação
inteligente modelada após o neocórtex humano.
Estas são apenas algumas tendências tecnológicas de hoje; será interessante ler esta seção
deste artigo em 10 anos para ver onde estávamos e até onde iremos.
b) Condutores sociais
O sucesso de nossa tecnologia da informação, incluindo computadores e
comunicações, aumentou as expectativas da sociedade em relação a nós. As pessoas agora
exigem disponibilidade, 24 horas por dia, todos os dias, 100% de confiabilidade, 100% de
conectividade, resposta instantânea, capacidade de armazenar tudo e qualquer coisa para
sempre e capacidade de qualquer pessoa acessar qualquer coisa de qualquer lugar a qualquer
momento.
As classes de usuários de nossa tecnologia não se limitam a cientistas e engenheiros.
Em vez disso, nossos usuários são jovens e idosos, capazes e deficientes, ricos e pobres,
alfabetizados e analfabetos.
Nossa tecnologia também deve suportar uma gama no número de usuários: de
indivíduos a grupos, a populações e a sociedade global. Os indivíduos querem dispositivos e
serviços altamente personalizados; as empresas de pesquisa realizam esse desejo rastreando
nossas consultas e personalizando os anúncios que vemos. Grupos de amigos levam a redes
maiores de conhecimento, como o LinkedIn, ou redes sociais, como o Facebook. Diferentes
populações podem usar a informação e a tecnologia de rede para preservar sua herança
cultural.
Phil. Trans. R. Soc. A (2008)
3724 J. M. Wing

A Internet e a World Wide Web juntas são um ótimo equalizador. Por outro lado,
permanecem desafios científicos e técnicos em relação à responsabilidade, anonimato,
gerenciamento de identidade e privacidade.

Desafio no. 2. Como tornamos nossa tecnologia e a riqueza de nossos aplicativos


acessíveis a todos? Como equilibramos abertura e privacidade?
c) Drivers científicos
Wing (2008) apresentou cinco 'questões profundas em computação', como uma
maneira de nos lembrar de que existem desafios científicos subjacentes às nossas
pesquisas individuais ou inovações em tecnologia. Repito esse conjunto (ou seja,
nenhuma ordem implícita) de perguntas para fins de completude neste artigo. Esse
conjunto deve ser um ponto de partida, com novas perguntas adicionadas por toda a
comunidade.
- P é igual a NP?
- O que é computável?
- O que é inteligência?
- O que é informação?
- (Como) podemos construir sistemas complexos simplesmente?
Pergunta final. Dada (i) a filosofia do §1a, que afirma que o pensamento
computacional é informado pelo nosso desejo de automatizar abstrações, onde o
computador pode ser humano e / ou máquina, e (ii) as tendências tecnológicas
descritas no §2a, que Para testar a adequação da teoria da informação de Shannon e da
máquina de Turing como modelo fundamental da computação, podemos até fazer a
pergunta mais básica de todas: o que é um computador?
Agradeço às muitas pessoas que leram meu ponto de vista do Communications of the ACM de março de
2006 ou me ouviram falar sobre o pensamento computacional. A manifestação de apoio de todos tem sido
gratificante. Agradeço também aos meus colegas da Carnegie Mellon e da Microsoft Research, que desde o
início apoiaram minha visão para tornar o pensamento computacional comum, e aos meus colegas da
National Science Foundation que ajudaram a aprimorar e aprofundar as idéias por trás dessa visão. Este
artigo foi baseado no trabalho parcialmente apoiado pela National Science Foundation, enquanto
trabalhava na Fundação. Qualquer opinião, conclusão e conclusão ou recomendação expressa neste
material são de responsabilidade do autor e não refletem necessariamente as opiniões da National Science
Foundation.

Referencias
Abraham, D., Blum, A. & Sandholm, T. 2007 Clearing algorithms for barter exchange markets:
enabling nationwide kidney exchanges. In Proc. 8th ACM Conf. on Electronic Commerce,
pp. 295–304. New York, NY: Association for Computing Machinery.
Adleman, L. M. 1994 Molecular computation of solutions to combinatorial problems. Science 266,
1021–1024. (doi:10.1126/science.7973651)
Benenson, Y., Gil, B., Ben-Dor, U., Adar, R. & Shapiro, E. 2004 An autonomous molecular
computer for logical control of gene expression. Nature 429, 423–429. (doi:10.1038/nature02551)
Blue Brain Project 2005 See http://bluebrain.epfl.ch/.
Bundy, A. 2007 Computational thinking is pervasive. J. Scient. Pract. Comput. 1, 67–69.
Chua, L. 1971 Memristor—the missing circuit element. IEEE Trans. Circuit Theory 18, 507–519.

Phil. Trans. R. Soc. A (2008)


Computational thinking 3725

Economist 2007 Quote from R. Achatz, Seimens, from ‘Revving up’. The Economist, 11 October
2007.
Engadget 2006 See http://www.engadget.com/2007/09/19/gordon-moore-predicts-end-to-moores-
law-in-10-years/.
Fisher, J. & Henzinger, T. A. 2007 Executable cell biology. Nat. Biotechnol. 25, 1239–1249. (doi:10.
1038/nbt1356)
Heller, M. J., Sullivan, B. & Dehling, D. 2005 Fabrication of photonic transfer DNA–quantum dot
nanostructures. In Technical Proc. 2005 NSTI Nanotechnology Conference and Trade Show,
vol. 1, ch. 12, pp. 769–772.
IBM 2006 See http://domino.watson.ibm.com/comm/pr.nsf/pages/news.20060324_carbonnano-
tube.html.
Machine Learning Department 2008 Research projects home page, Carnegie Mellon University. See
http://www.ml.cmu.edu/research/index.html.
Messmer, E. 2007 Quantum cryptography to secure ballots in Swiss election. Network World, 11
October 2007. See http://www.networkworld.com/news/2007/101007-quantum-cryptography-
secure-ballots.html.
Numenta 2005 See http://www.numenta.com.
Strukov, D. B., Snider, G. S., Stewart, D. R. & Williams, R. S. 2008 The missing memristor found.
Nature 453, 80–83. (doi:10.1038/nature06932)
Wing, J. M. 2006 Computational thinking. Commun. ACM 49, 33–35.
Wing, J. M. 2008 Five deep questions in computing. Commun. ACM 51, 58–60. (doi:10.1145/
1327452.1327479)

Phil. Trans. R. Soc. A (2008)