• Nenhum resultado encontrado

Capítulo 3 - Aprendizagem Baseada Em Jogos

3.6 Jogos para o Ensino da Programação e do Pensamento Computacional

O principal fator para promover a aprendizagem da programação é que o aluno pratique disciplinadamente e intensivamente (Robins et al., 2003). Mas, muitas vezes falta-lhes motivação para se envolverem nessas tarefas. A prática em resolver os problemas nos jogos, que podem ser mais motivadores do que os exercícios

tradicionais, promove a confiança e a experiência, construindo um conjunto estruturado de padrões de soluções, que lhes será muito útil quando se depararem com problemas usando linguagens de programação reais (Barnes et al., 2007).

Os jogos para programar misturam programação e jogabilidade fornecendo uma autêntica e rica experiência de programação (Weintrop & Wilensky, 2016b). Contudo, o uso de um jogo não tem sempre um impacto positivo, e é necessário considerar (Sung, 2009): mudanças no currículo, nos instrumentos e na forma de avaliação das atividades dos alunos; que o jogo seja simples, fácil e barato de ser implantado; que o jogo seja neutro quanto ao género e à perícia dos alunos, ou seja, que evite desencorajar tanto aqueles com pouco conhecimento prévio como os que já apresentam um certo domínio.

Existem essencialmente duas abordagens quanto à forma de integrar jogos na aprendizagem de programação: criar jogos ou jogá-los. Na primeira abordagem, é solicitado aos alunos que desenvolvam pequenos jogos ou pequenos programas em ambientes direcionados e restritos para aplicar os conceitos de programação (Bayliss & Strout, 2006; Leutenegger & Edgington, 2007). Na segunda abordagem experimentam os jogos para reforçar e praticar os conceitos de programação (Barnes et al., 2007; Muratet et al., 2010; Lee, Bahmani, et al., 2014). No capítulo anterior apresentámos alguns ambientes de autoria que são usados para a primeira abordagem. Nesta subsecção apresentamos uma lista de jogos direcionados para a segunda abordagem, que é o foco da nossa investigação.

Essa subsecção é baseada numa publicação prévia (Vahldick et al., 2014) e complementamos com novos trabalhos publicados posteriormente. Para orientar este levantamento formulámos três questões de pesquisa:

1) Que jogos estão disponíveis para ajudar na aprendizagem introdutória de programação publicados na literatura ou disponíveis na web nos últimos 10 anos?

2) Quais são as competências, introdutórias ou mais avançadas, desenvolvidas com esses jogos?

3) Quais são as lacunas que podem ser exploradas e não cobertas por esses jogos?

Para responder a estas perguntas é necessária uma amostra de jogos para programar. Procurámos em bibliotecas digitais como a ACM Digital Library, Science Direct e IEEE Xplore usando os termos game, introductory programming, computer

44 Capítulo 3 - Aprendizagem Baseada Em Jogos

programming e novice programming. Em seguida, examinámos os resultados e considerámos somente os artigos que descrevem jogos usados, propostos ou desenvolvidos para apoiar a aprendizagem de programação introdutória. O mesmo processo foi feito com os artigos que estes referenciavam, ou eram referenciados, possivelmente não indexados nessas bibliotecas. Também foram consideradas algumas conferências de informática.

Em seguida, foram pesquisados os termos jogos e programação em bases de dados comerciais, como a AppStore e Google Play, em websites com jogos em Flash e na Web. Apenas foram recolhidos os jogos explicitamente relacionados com programação de computadores. Diversos jogos de puzzle exercitam o raciocínio, porém não são o foco deste trabalho e por isso não foram adicionados à lista de jogos (Tabela 3.1).

Para cada jogo foram executados os seguintes passos: 1) ler o artigo, no caso de o jogo ser descrito numa revista ou atas de uma conferência; 2) ler a página web, quando o jogo estava disponível para descarregar e existia informação suficiente para o identificar; ou 3) jogar o jogo quando não existia informação suficiente.

Foram considerados jogos apenas aqueles que contém desafios, ou missões, embutidos no jogo e que o próprio jogo consegue verificar as respostas. Isso significa que o aluno consegue autonomamente jogar (e aprender) sem a intervenção de um professor. Existem alguns jogos publicados que necessitam da mediação de professores para analisar as respostas dos alunos. Esses jogos não foram considerados neste estudo por não suportarem o trabalho autónomo dos alunos.

Encontrámos 54 jogos e organizámo-los em três géneros:

 LOGO-Like: (23 jogos) é um tipo de jogo de ação em que se programa o movimento de um robô, uma tartaruga, ou qualquer outro tipo de personagem, em que existem missões como, por exemplo, alcançar uma posição no mundo, ou recolher uma quantidade de objetos. Esses movimentos são comandados através de uma linguagem de programação simplificada, tal como a linguagem LOGO de Seymour Papert (Papert, 1988);

 Aventura: (11 jogos) o jogador controla uma personagem responsável por explorar um mundo, recolher objetos e conversar com outras personagens controladas pelo jogo (Wassila & Tahar, 2012);

 Geral: (20 jogos) foi encontrada uma pequena quantidade de vários géneros, como simulações, de estratégia em tempo real e jogos de desafio. Por essa razão, resolvemos agrupá-los num único género. Para cada jogo, a Tabela 3.1 indica se é disponível para descarregar e usar, ou se foi obtido de um artigo, a plataforma onde o jogo é executado (não identificamos essa informação nos jogos indicados com “?”), e a forma como o aluno resolve os problemas: alguns através de linguagem de programação, e outros por arrastamento de blocos textuais ou iconográficos; os indicados como linguagem proprietária implicam que foram inventadas pelos autores do jogo.

Tabela 3.1 – Lista de Jogos

Nome do Jogo Tipo Plataf. Linguagem

1. AlgoGame (Debabi & Bensebaa, 2016) G Web -

2. APIN (Dim & Edson, 2011) L Win Blocos Textuais

3. BootLogic

http://botlogic.us/play

L Web Blocos Gráficos

4. Baralho das Variáveis (Kahwage et al., 2013) G Web -

5. Bomberman (Chang & Chou, 2008) G Win,

Linux C

6. Cargo-Bot

http://twolivesleft.com/CargoBot

L iOS Blocos Gráficos

7. Catos Hike

http://hwahba.com/catoshike

L iOS Blocos Gráficos

8. (Chao, 2016) L ? Blocos Textuais

9. CheckIO

http://js.checkio.org

G Web JavaScript

10. CMX (Malliarakis et al., 2013) A Win Java

11. Coddy Luck

http://appike.com/coddy

L iOS Blocos Gráficos

12. Code.org

http://learn.code.org

L Web Blocos Textuais

13. Code Combat

http://codecombat.com/

L Web JavaScript

14. Code Factory (Gomes et al., 2017) G ? Blocos Textuais

15. Code Hunt

http://www.codehunt.com/

G Web Java ou C#

16. Code Monkey

http://www.playcodemonkey.com

L Web Linguagem proprietária

17. Code Spells (Esper et al., 2014)

https://sites.google.com/a/eng.ucsd.edu/codespells

A Win Java

18. Codin Game

http://www.codingame.com

G Web 26 linguagens comerciais

19. Colobot

http://www.ceebot.com/colobot/index-e.php

A Win Proprietário inspirado em C++, C# and Java

20. Cube Game (Piteira & Haddad, 2011) L Web Blocos Gráficos

21. Daisy the Dino

http://www.daisythedinosaur.com

L iOS Blocos Textuais

22. Dragon Architect (Bauer et al., 2015) G Web Blocos Textuais

23. Dream Coders (Chang et al., 2012) A Java Java

24. EleMental: The Recurrence (Chaffin et al., 2009) G Win C# 25. Elevator Saga

http://play.elevatorsaga.com

G Web JavaScript

26. Empire of Code

http://empireofcode.com

G Web Python ou JavaScript

27. Entrando pelo Cano (Scaico et al., 2012) G Web -

46 Capítulo 3 - Aprendizagem Baseada Em Jogos 29. Glitchspace http://www.glitchspace.com L Win, Mac Blocos Textuais

30. IA Game (Adamo-Villani et al., 2012) A iOS,

Win -

31. Kodable

http://www.surfscore.com

L iOS Blocos Gráficos

32. Light-Bot 2

http://armorgames.com/play/6061/light-bot-20

L Web Blocos Gráficos

33. Machinist-Fabrique http://learntocode.biz/

G Win Blocos Textuais

34. Move the Turtle http://www.geekkids.me

L iOS Blocos Gráficos

35. Prog & Play (Muratet et al., 2010) G Win,

Linux

C, C++, Java, Ocaml, Ada e Compalgo

36. ProGame (Dantas et al., 2011) A Win -

37. Program your robot (Kazimoglu et al., 2012) L Web Blocos Gráficos

38. Project Orion (Coelho et al., 2011) A Win Configurado pelo professor

39. RoboBUG (Miljanovic, 2015) G Win C++

40. RoboCom http://www.cubesteam.com/Game-RoboComBasic.html L Win, iOS, Android, Linux Blocos Gráficos 41. RoboLogic http://www.digitalsirup.com/apps/app_robologic.html

L iOS Blocos Gráficos

42. Robotimov (Dantas et al., 2013) A Win -

43. Robot ON! (Miljanovic & Bradbury, 2016) G Win C++

44. Robozzle http://robozzle.com L Web, iOS, Android Blocos Gráficos 45. Ruby Warrior https://www.bloc.io/ruby-warrior G Web Ruby

46. Saving Sera (Barnes et al., 2007) A Win Linguagem proprietária

47. Space Goats (Wahner et al., 2012) G iOS,

Android

Visual através de blocos

48. Takkou (Barbosa et al., 2011) L ? Blocos Textuais

49. TALENT (Maragos & Grigoriadou, 2011) L Web Blocos Textuais

50. The Catacombs (Barnes et al., 2007) A Win -

51. Train B&P (Liu et al., 2011) G Win Linguagem proprietária

52. Tynker Lost in Space

http://www.brainpop.com/games/tynkerlostinspace

L Web Blocos Gráficos

53. World of Variables (Zapušek & Rugelj, 2013) http://hrast.pef.uni-lj.si/~svet_spremenljivk/

G Win -

54. Wu’s Castle (Eagle & Barnes, 2009) A Win -

Pode-se observar que apenas sete dos jogos do tipo LOGO-Like provêm de publicações. Esses trabalhos podem contribuir com lições aprendidas em relação às suas experiências.

A experiência de Lee & Ko (2011), com o jogo Gidget, envolveu a participação de 116 aprendizes de programação utilizando um sistema de monetização chamado Amazon´s Mechanical Turk em que o jogador recebia valores monetários de acordo com a quantidade de fases jogadas. Diferente dos demais jogos desta categoria, no jogo Gidget a personagem não anda um passo de cada vez, mas vai diretamente para onde estão os objetos ou outras personagens. A Figura 3.3 ilustra o ambiente de desenvolvimento, execução e depuração do jogo. O objetivo do estudo foi avaliar se representar emoções na personagem, por exemplo, os estilos dos diálogos e as

expressões faciais, contribuíam para a resolução dos exercícios. Foi utilizado um grupo de controlo onde a representação da personagem era desprovida de emoções. O estudo demonstrou que aspetos emocionais representados na personagem aumentaram a motivação para resolver os problemas.

Figura 3.3 – Ambiente do Jogo (Lee & Ko, 2011), p. 3

A avaliação na experiência com a utilização do jogo Program your robot (Figura 3.4) (Kazimoglu et al., 2012) teve como objetivo verificar qual a impressão que os 25 alunos tiveram, através de comentários e sugestões sobre a mecânica e usabilidade do jogo. Os alunos acharam o jogo adequado para ajudá-los a entender as estruturas na programação e o desenvolvimento de suas capacidades de resolução de problemas.

48 Capítulo 3 - Aprendizagem Baseada Em Jogos

Figura 3.4 – Ambiente do Program your Robot (Kazimoglu et al., 2012), p. 5

Em Maragos & Grigoriadou (2011), são descritas duas experiências. Na primeira, com uma população de 122 alunos de licenciatura do quarto ano, os autores estavam interessados em analisar a usabilidade, levantar sugestões e comentários sobre o jogo como ferramenta de ensino. A segunda, com 65 estudantes do ensino médio, usou pré e pós testes para verificar as melhorias na aprendizagem. O grupo de controlo permaneceu com o método tradicional e o experimental utilizou o jogo. Como resultado da análise das médias do pós-teste, os autores concluíram que existem evidências de que o jogo contribuiu positivamente para a aprendizagem.

Chao (2016) tentou identificar o comportamento na resolução de problemas de 158 alunos de um curso introdutório de C++. As aulas decorreram durante sete semanas. Na oitava semana o professor aplicou o jogo (Figura 3.5) com a turma. O estudo identificou quatro grupos comportamentais de alunos que podem ser usados futuramente para adaptar o jogo e oferecer suporte respeitando essas diferenças individuais. O grupo dos alunos que usam uma abordagem sequencial tende a não usar estruturas avançadas e aninhadas. O grupo da abordagem seletiva tende a usar maior complexidade (desnecessária) dentro das estruturas de repetição. O terceiro grupo é composto por alunos que seguem a abordagem repetitiva que percebem padrões de repetição no código e conseguem criar estruturas simples para atender esses padrões. Finalmente, o grupo dos alunos com abordagem de consecutivas tentativas que costumam experimentar várias combinações de estruturas demonstrando dificuldades em implementar as estruturas de controlo.

Figura 3.5 – Ambiente do Jogo (Chao, 2016), p. 5

Os trabalhos de Piteira & Haddad (2011), Dim & Edson (2011) e Barbosa et al. (2011) não apresentaram resultados de experimentação.

Em relação aos jogos disponíveis para usar, sete deles têm versões exclusivas para a plataforma iOS. Quando uma turma apresenta restrições quanto à disponibilidade de equipamentos (tablets e smartphones), os jogos acessíveis pela Web são a melhor alternativa. Destacam-se três na Web: LightBot 2 (Figura 3.6), Robozzle (Figura 3.7), Code.org e Code Combat (Figura 3.8). Os dois primeiros contam com funcionalidades muito semelhantes na forma como o aluno resolve os problemas, pois não possuem um comando específico para repetições, o que é resolvido através de chamadas recursivas às funções (Figuras 3.9 e 3.10). Além disso, ambos possuem editores de níveis, permitindo que o professor possa introduzir os seus próprios problemas. Robozzle tem a vantagem de ter versões também para iOS e Android. Code.org já foi discutido no capítulo anterior por ser um ambiente com várias opções de atividades, incluindo o tipo de missões discutidas neste capítulo.

50 Capítulo 3 - Aprendizagem Baseada Em Jogos

Figura 3.6 – LightBot 2

Figura 3.8 – Code Combat

52 Capítulo 3 - Aprendizagem Baseada Em Jogos

Figura 3.10 – Exemplo de recursão no Robozzle

Code Combat evoluiu desde 2014 para se tornar num jogo para um ambiente de aprendizagem, tanto que mudámos a sua classificação de um jogo de aventura para um jogo LOGO-Like. O jogo descreve um mundo medieval em que o herói luta contra ogros. As personagens interagem com o ambiente à medida que o jogador programa os seus comportamentos. Essa interação e codificação é efetuada no mesmo ecrã. As ações das personagens são baseadas em movimentação, ataque, conversa, construção de cercas e invocação de magias. O jogo suporta programação em JavaScript, Python, CoffeeScript e Lua. Existe um modo para jogar independentemente das aulas, um modo para professor e outro para aluno. No primeiro modo existem 8 campanhas para aprender assuntos básicos de programação, desenvolvimento Web, desenvolvimento de jogos, e práticas avançadas de programação. No modo professor, criam-se salas de aula e acompanha-se o progresso dos alunos (mostra apenas que missões cada aluno terminou e o tempo gasto para concluir contra a média da sala para concluir). No modo aluno, cada um é associado a uma sala de aula criada pelo professor.

Em relação aos restantes 31 jogos (aventura e gerais), pode-se observar uma participação maior de trabalhos publicados, e maior disponibilidade para serem usados: 10 jogos são de uso livre para o público.

Como já mencionado, para promover a aprendizagem, o aluno necessita de praticar muito, com problemas de natureza diferente. Os jogos encontrados nas

publicações contêm poucas fases (e por consequência exercícios para praticar). Por sua vez, os jogos acessíveis ao público contam com várias fases. Por exemplo, Machinist-Fabrique tem 64 fases; as missões em Code Spells são baseadas em realizar tarefas para gnomos espalhados por uma vila, e podem-se contar mais de 20 visíveis.

Em relação aos objetivos da investigação, devemos destacar os jogos Machinist-Fabrique (Figura 3.11), e Ruby Warrior (Figura 3.12), pois são organizados para promover a aprendizagem de programação de principiantes. Os primeiros desafios são fáceis para o jogador entender a linguagem de programação e os recursos do jogo.

Figura 3.11 – Machinist-Fabrique

54 Capítulo 3 - Aprendizagem Baseada Em Jogos

O jogo Machinist-Fabrique é baseado em desafios para o aluno programar o comportamento de máquinas. A programação é realizada com uma linguagem de blocos gráficos como no Scratch. As máquinas possuem eventos, guardam variáveis e a linguagem aceita condições e ciclos. Também se destaca por ser um jogo não violento.

Em Ruby Warrior o jogador programa o comportamento de um guerreiro inserindo código no método de uma classe em Ruby. O jogo serve-se de uma mecânica diferente de execução do comportamento, quando comparado com os outros jogos. Possui um ciclo principal que invoca de cada vez o método principal da classe. Logo, o aluno tem que programar o guerreiro tal como numa máquina de estados. A personagem possui ações para caminhar, olhar e atacar. Em cada iteração o guerreiro pode atacar ou caminhar uma única vez. Cada ação dessas gasta energia que desafia o jogador a cumprir a missão limitando a quantidade de código.

Quanto às publicações, 23 descrevem os recursos do jogo e somente seis descrevem a metodologia aplicada na experimentação, avaliação e validação da experiência de jogo. Connolly et al. (2012) analisaram as publicações de jogos sérios e perceberam a tendência em usar métodos quase experimentais e praticamente a ausência de estudos randomizados controlados. Esses estudos poderiam fornecer evidências mais fortes sobre o impacto dos jogos na educação, pois somente após um longo período de utilização se pode concluir concretamente sobre a melhoria da aprendizagem. A Tabela 3.2 apresenta a descrição das experiências dos seis artigos.

Tabela 3.2 – Análise de artigos que descreveram a experimentação Autores Objetivos Métodos Resultados e conclusões

(Chaffin et al., 2009) Desenvolver um jogo para aprender a recursividade. 43 participantes. Aplicado um pré-teste somente a 16 participantes. Depois, para todos, 40 minutos de jogo em laboratório e, em seguida, um pós-teste e uma pesquisa para descrever a experiência. Ambos os testes tinham 5 questões e cada questão estava relacionada com o mesmo conceito/conteúdo entre os testes.

A comparação foi entre as questões dos testes, onde concluíram que com exceção de uma das questões, nas demais questões os alunos tiveram desempenho melhor. Concluíram que existiu uma significativa melhoria no desempenho. A diferença da pontuação do pós-teste entre ambos os grupos foi muito próxima indicando que não houve interação entre ambos os grupos. Analisando o log do jogo concluíram que não existiu correlação significativa entre o tempo gasto e a pontuação no pós-teste.

(Eagle & Barnes, 2009)

Desenvolver um jogo para ciclos e navegação em

arrays.

92 participantes. Usaram a estratégia de amostra estratificada. Os grupos foram divididos em dois de acordo com um questionário demográfico e um pré-teste. Um dos grupos usou primeiro

Os pontos no pré-teste não foram significantemente diferentes para os dois grupos. os dois pós-testes demonstraram diferenças significativas em favor do grupo que teve o jogo como primeira tarefa, concluindo que o jogo contribuiu para a aprendizagem. A partir

o jogo e depois o exercício tradicional, e o outro grupo

realizou as mesmas

atividades em ordem inversa. Após cada atividade foi aplicado um pós-teste. Os alunos tinham uma semana para fazer cada atividade e pós-teste. Toda a experiência foi conduzida à distância. Os logs do jogo foram enviados

por e-mail aos

pesquisadores.

dos logs puderam avaliar o tempo gasto e a quantidade de tentativas no jogo. Uma das questões demográficas pedia para o jogador se identificar como casual ou hardcore. Os jogadores hardcore alcançaram desempenho melhor no jogo.

(Kahwage et al., 2013)

Desenvolver um jogo para tipos de variáveis e operações.

28 participantes, 14 usaram o jogo. Houve uma sessão de 50 minutos de jogo em laboratório. Noutro instante foi aplicado um questionário com 7 questões sobre o conteúdo e para os 14 que jogaram, ainda mais 7 questões específicas sobre a usabilidade e funcionalidade do jogo.

80% dos alunos avaliaram a

funcionalidade do jogo como boa ou muito boa. Não realizaram análise estatística para verificar a significância da diferença das médias. Mas os autores concluíram que como a média dos que jogaram foi superior o jogo melhorou a aprendizagem.

(Liu et al., 2011) Entender a experiência de aprendizagem e exploração em atividades de resolução de problemas em programação. 117 participantes. Todos jogaram durante duas semanas em laboratório. Foi aplicado um formulário para avaliar o fluxo de interesse

entre as atividades

tradicionais em sala e as tarefas do jogo. Foi aplicado um questionário (MSLQ) para medir a motivação em aprender. Foi utilizado o log

do jogo.

Através do questionário do fluxo de interesse puderam constatar que os alunos se sentem mais desafiados no jogo do que nos exercícios tradicionais. A motivação intrínseca é significantemente maior e a extrínseca menor usando o jogo. A análise do log serviu para investigar o comportamento, ou seja a sequência de ações que os alunos realizaram durante o jogo. Os autores apresentaram grafos direcionados onde os nós representam as ações (ler tutorial, reutilizar solução, desenvolver a solução, experimentar e rever a solução) e as arestas a sequência em que os nós são executados. Estes grafos representam os padrões de comportamento dos alunos ao resolver problemas. O artigo ilustrou três comportamentos de acordo com o sentimento do aluno em relação ao jogo: ansiedade, tédio e dentro do fluxo de interesse. (Muratet et al., 2010) Desenvolver um jogo que complemente as aulas sem modificar as escolhas da instituição. 15 participantes. A experiência de jogo aconteceu em dois momentos: no primeiro os participantes jogaram sem programar e no segundo aprenderam e usaram a API do jogo. Aplicaram um questionário para avaliar a motivação dos participantes quanto a jogar e quanto a aprender a programar. Filmaram e avaliaram o tempo despendido pelo professor durante as explicações. Aplicaram um

pré-teste antes da

experimentação e um

questionário sobre a

O pré-teste foi comparado contra um exame da disciplina para posteriormente identificar melhorias nas habilidades quando comparado com aqueles que não usaram o jogo. Os autores não realizaram essa comparação, pois tinham somente 15 participantes, o que consideraram estatisticamente insuficiente. As observações durante a experiência serviram para identificar o nível de dificuldade das missões, no que concluíram que não estavam na ordem correta (da mais fácil para a mais difícil). O jogo pode ser usado com ou sem