Pensar Sério
Gamificar para aprender a programar
por Ricardo Queirós*
Sou professor do Ensino Superior na área de programação de computadores há 15 anos. Como é de conhecimento público, trata-se de um domínio complexo e que oferece muitos desafios relativamente ao processo de ensino-aprendizagem, nomeadamente: os diferentes níveis de aptidão e capacidade de aprendizagem dos estudantes; a escassez de recursos e ambientes educacionais para o processo de ensino-aprendizagem, a natureza complexa do domínio (por exemplo, problem-solving, abstração); e a consequente dificuldade em motivar os alunos a aprender a programação de computadores. Foi perante estas dificuldades, ligadas diretamente ao meu dia-a-dia enquanto professor, que tomei a decisão de investir o meu tempo de investigação, nesta última década, à procura de soluções que resolvessem de forma eficaz as dificuldades apresentadas.
Aprender a programar resume-se, muitas vezes, a resolver exercícios de programação. Contudo, o fardo de os avaliar manualmente é pesado para os professores. Nesse sentido, são usados sistemas de avaliação automática que produzem feedback atempado e rico para os estudantes de forma a que possam evoluir na sua aprendizagem. Um excelente exemplo é o Sistema Mooshak desenvolvido pelo Professor José Paulo Leal (Faculdade de Ciências). Contudo não basta ter um sistema automatizado com avaliação automática. De forma a manter o interesse, motivação e envolvimento dos estudantes, e até mesmo espicaçar o seu espírito competitivo, têm surgido nos últimos anos novas tendências, como o uso da gamificação.
A gamificação (ou ludificação) consiste na utilização de elementos de design de jogos em contextos que não são de jogos. Um dos contextos com enorme potencial é o da educação. A gamificação surge assim como um meio para aumentar o envolvimento dos alunos e inspirá-los a continuar a aprender.
Para perceber bem como os outros estavam a aplicar a gamificação em domínios de aprendizagem de programação de computadores, editei em 2016 o livro “Gamification-Based E-Learning Strategies for Computer Programming Education” [1] que reúne testemunhos de investigadores de todo o mundo sobre experiências, tendências, metodologias e sistemas relacionados com o uso da gamificação na aprendizagem da programação de computadores. Os resultados foram unânimes: a automatização de todo este processo, combinada de forma equilibrada com elementos de gamificação, são uma mais valia para o processo de aprendizagem. Por outro lado, o uso excessivo de elementos de gamificação (por exemplo, leaderboards) revelou-se prejudicial para grande parte dos estudantes, principalmente para aqueles que se posicionavam sempre nos últimos lugares dos rankings.
Ao mesmo tempo, temos vindo a assistir, nos últimos anos, a uma grande procura de programadores qualificados nos países da União Europeia. Um dos grandes obstáculos para satisfazer esta demanda é a dificuldade em promover um processo de ensino-aprendizagem da programação de computadores mais eficaz. Pessoalmente, acredito que um progresso nesta área pode ser alcançado com o uso combinado: avaliação automatizada - fornecendo feedback rico e rápido aos alunos baseado em análise estática e dinâmica do código produzido; gamificação - proporcionando uma motivação adicional para os alunos intensificarem o seu esforço de aprendizagem.
A disponibilidade de cursos de programação com base nesta abordagem combinada pode não apenas melhorar a eficácia da aprendizagem em programação, mas também permitirá ampliar o grupo de pessoas que se sentem capazes de aprendê-la efetivamente. No entanto, até esta data, não há coleções abertas disponíveis de exercícios de programação gamificada, nenhum ambiente de aprendizagem de programação interativa aberta que suporte tais exercícios, e mesmo nenhum padrão aberto para a representação de tais exercícios, para que possam ser desenvolvidos em diferentes instituições educacionais e partilhadas entre eles. Ao mesmo tempo, são escassos os serviços online capazes de mimificar elementos de gamificação transversais a vários ambientes educacionais (por exemplo, rankings temáticos, conquistas, sistemas de recompensas, sequenciação e recomendação automática de exercícios, geração de dicas, coaching bots, etc.).
Foi assim que nasceu o projeto Erasmus+ "Framework for Gamified Programming Education" [2], que engloba investigadores de quatro países: Uniwersytet Szczeciński (Polónia), a Aalborg Universitet (Dinamarca), a Universita Degli Studi Di Napoli Parthenope (Itália) e o INESC TEC (Portugal). O projeto tem como objetivo a criação de uma framework de gamificação para facilitar o processo de ensino-aprendizagem de programação de computadores.
O projeto está planeado para fornecer vários resultados: dois documentos de especificação (um esquema de gamificação e a especificação de um formato de descrição de exercícios de programação gamificados) e dois tipos de software (ferramentas para autoria e conversão de exercícios e um ambiente de aprendizagem interativo composto por cursos gamificados). Todos os resultados do projeto estarão disponíveis gratuitamente na Internet sob licenças de código aberto. O impacto esperado do projeto é uma melhoria na eficiência da educação em programação.
O projeto tentará produzir o que for necessário produzir, e reutilizar/consumir serviços de qualidade existentes na cloud. Nesse aspeto, dar-se-á uma atenção especial às novas tendências do cloud gamification. Relacionados com esta temática, aconselha-se uma leitura atenta nos seguintes eventos:
- Sessão especial “Cloud Gamification” (integrada na Conferência ICIST) [3]
- Edição especial "Cloud Gamification 2019" (revista científica Information - MDPI) [4]
[2] - http://fgpe.usz.edu.pl/
[3] - https://icist.ktu.edu/wp-content/uploads/sites/317/2018/10/2nd_CFP_2019_CGam.pdf
[4] - https://www.mdpi.com/journal/information/special_issues/Cloud_Gamification_2019
* Colaborador do Centro de Sistemas de Computação Avançada (CRACS)