Computational thinking (Portuguese)

Abordagens Computacionais
Uma estratégia de solução de problemas relacionada a abordagens computacionais. No contexto do projeto Scalable Game Design usamos o termo raciocínio computacional para nos referirmos a uma forma de integrar o design de jogos escaláveis (i.e. que podem ser expandidos) à própria ciência da computação. Ambos requerem noções de análise, projeto (design), uso de representações e visualizações. O AgentSheets é uma ferramenta para o raciocínio computacional que permite aos usuários embarcarem em um processo fluido de design, que permite tanto abordagens bottom up quanto top down.

Clayton Lewis, em palestras que deu nos Denver and Boulder Cafes Scientifiques, esboçou uma definição de raciocínio computacional que é baseada na natureza representacional dos sistemas computacionais.

Em um sistema representacional as coisas, atributos, relações, mudanças, comportamentos e questões de um domínio-alvo estão associados com elementos de um domínio de representação ... de tal forma que as questoes de interesse do domínio-alvo podem ser respondidas no domínio de representação.

Os elementos que há em representações computacionais são dois: estruturas de dados e programas.

Estes elementos oferecem benefícios em termos de armazenamento, interação, automatização e comunicação.

O raciocínio computacional é então ver a possibilidade de representação computacional em várias situações. Ou seja, alunos (ou professores) estarão pensando computacionalmente quando puderem reconhecer em uma determinada situação de interesse a possibilidade de representar importantes aspectos dela com o uso compbinado de elementos computacionais. Por exemplo, alunos que tiverem visto que podem representar interações entre predador e presa em um programa do AgentSheets terão demonstrado a capacidade de raciocínio computacional.

No seu blog em http://comprep.blogspot.com, Clayton desenvolve esta visão representacional da computação em maior profundidade.

Um Inventário de Raciocínio Computacional
Nossa meta é desenvolver um Inventário Raciocínio Computacional universal. O termo raciocínio computacional está ganhando força rapidamente como forma de identificar processos cognitivos que estão relacionados à computação. Situado em algum ponto intermediário entre as aptidões altamente concretas tais como a de programar e modelos de competências mais abstratas tais como a fluência em IT &lt;ref NAS fit&gt;, o raciocínio computacional está se estabelecendo como um termo que atinge o equilíbrio certo entre o concreto e o abstrato. Entretanto, fica a questão de o que é na realidade o raciocínio computacional, como pode ser estimulado, e como pode ser avaliado.

A noção de raciocínio computacional muitas vezes aparece no contexto de desafios motivacionais na formação em ciência da computação. O design de jogos &lt;refs: SIGCSE 08, VL 08&gt;, a robótica &lt;ref including LEGOsheets&gt;, e em menor escala a ciência computacional, têm sido usados como aplicações computacionais para atrair alunos, especialmente os mais novos que estão no ensino médio, para participarem em atividades construtivas relacionadas à computação. Se eles puderem fazer um jogo ou programar um robô, argumenta-se, é porque devem ter atingido um certo nível de fluência em relação a tecnologias de informação. O problema com esta linha de raciocínio pode ser, no entanto, que a esta altura não conseguimos distinguir totalmente o que a National Academy of Sciences &lt;fit&gt; chama de capacidades intelectuais e aptidões para TI contemporânea. Ou seja, será que os alunos realmente adquiriram aptidões de raciocínio computacional que podem ser transferidas para outros domínios, ou será que aprenderem a usar programas específicos para controlar robôs e fazer jogos? A transferência de aptidões para outros domínios é um tópico complexo de pesquisa, mas constitui a base do raciocínio computacional. De maneira geral, os pesquisadores concordam &lt;ref -- which one??&gt; que a trabsferência não se dá simplesmente de maneira automática. A analogia entre conceitos que, para o olhar treinado, podem ser idênticos embora em domínios diferentes, pode ser difícil de reconhecer para aprendizes novatos.

A estratégia é integrar sistematicamente três aplicações computacionais distintas - o design de jogos, a robótica e a ciência computacional – com o objetivo de criar um inventário universal de raciocínio computacional:


 * o inventário vai ser alimentado inicialmente com padrões de raciocínio computacional tais como o transporte (transportation), o empilhar (push), desempilhar (pulling), e a difusão (diffusion), que foram usados no projeto de jogos escaláveis. Os padrões descrevem interações entre objetos as quais são comuns a uma ampla gama de aplicações, podendo também aplicar-se a todos os três domínios.


 * usar uma abordagem gradual, consistindo de cursos nos níveis de iniciante, intermediário e avançado, em todas as três aplicações para desenvolver incrementalmente as aptidões de raciocínio computacional. Padrões avançados de raciocínio computacional, tais como difusão colaborativa (collaborative diffusion) ou a hierarquia de múltiplas necessidades de Maslow permitirão aos alunos não apenas criar jogos sofisticados do tipo Sims, como também criar robôs avançados com comportamentos estratificados tais como arquiteturas por subordinação (subsumption architectures).


 * os cursos serão equiparados uns aos outros. Por exemplo, um curso para iniciantes em ciência computacional vai reforçar conceitos aprendidos pelo iniciante no curso de projeto de jogos escaláveis que ele tiver feito antes. O reforço vai incluir referências explícitas a matérias tratadas anteriormente a fim de promover a transferência.


 * as fronteiras entre aplicação/domínio serão enfraquecidas. Se é verdade que em cada domínio de aplicação teremos um foco bem forte, incluiremos também desde cedo exemplos e explorações em outras aplicações. Por exemplo, os cursos em ciência computacional vão incluir versões de padrões aprendidos no projeto de jogos.

Parte essencial de nossa estratégia é desenvolver mecanismos de sustentação (scaffolding) para estimular o uso de padrões de raciocínio computacional e também criar instrumentos de avaliação para aferir se o inventário de raciocínio computacional foi aprendido. Para a estratégia funcionar, definimos sucesso como evidência de aprendizado de transferência, por exemplo, "agora que você pode construir um jogo do tipo Space Invaders, você consegue construir uma simulação de deslizamento de terra?". Isto é, o escopo da avaliação não precisa passar por todos os três domínios de aplicação, mas precisa investigar a transferência de aprendizado.

Links Externos

 * CSTA, ISTE, NSF operational definition of computational thinking
 * Computational Thinking summer camp for girls, using AgentSheets, at the University of Memphis, 2009
 * Seymour Papert, An Exploration in the Space of Mathematics Educations, International Journal of Computers for Mathematical Learning, Vol. 1, No. 1, pp. 95-123, in 1996
 * Wing, J. M. (2006). Computational Thinking, CACM 49(3), pp. 33--35.
 * wikipedia definition of computational thinking
 * CSTA view of computational thinking
 * CSTA slide + speech presentation (this is a zipped wmv movie file, Mac users can use the VLC media player)
 * Fletcher, G. H. and Lu, J. J. 2009. Education, Human computing skills: rethinking the K-12 experience. Commun. ACM 52, 2 (Feb. 2009), 23-25.
 * Repenning, A., Webb, D., Ioannidou, A., Scalable Game Design and the Development of a Checklist for Getting Computational Thinking into Public Schools, The 41st ACM Technical Symposium on Computer Science Education, SIGCSE 2010, (Milwaukee, WI), ACM Press.
 * 2010 NSF Broadening Participation meeting breakout session on Computational Thinking led by Jill Denner, Alexander Repenning, and Irene Lee
 * Computational Thinking for Everyone: A Workshop Series, The National Academies