Skip to main content
Skip to Main Content
Skip to main content
Navegação

Estratégias e dicas para ensinar a depuração

By Audra Selkowitz Feb 24, 2022

Independentemente do nível de habilidade do programador, a depuração é uma parte inevitável e integral da codificação” 1.

Isso pode parecer uma afirmação um tanto óbvia, no entanto, executá-la de maneira confortável e produtiva pode ser um desafio. Em muitos ambientes de educação formal, há um forte foco em produtos de aprendizagem completos e corretos. Embora possamos usar clichês como “meus erros são meus maiores professores”, raramente esses sentimentos são valorizados de uma forma que torne o pensamento dos alunos sobre o erro e sua solução realmente visível e uma parte da cultura da sala de aula. No entanto, STEM, e codificação e robótica em particular, oferecem maneiras autênticas de praticar o que pregamos. Os alunos terão bugs em seu código, erros lógicos no design do programa e outros erros à medida que aprendem a codificar e completar desafios na sala de aula. Então, como podemos aproveitar ao máximo essa oportunidade, para não apenas ensinar conceitos de codificação aos alunos, mas também como celebrar seus erros como passos importantes no caminho para a aprendizagem? Testar e depurar sempre será uma espécie de processo responsivo, para o qual não existe uma fórmula clara e concreta. No entanto, existem ‘etapas’ e estratégias gerais que podem ser implementadas com os alunos, para ajudá-los a se envolver com esse processo de maneira produtiva e colaborativa.

Começa com uma cultura de sala de aula positiva em torno da depuração e do pensamento conceitual sobre o código. Ter uma cultura de sala de aula mais ampla que enquadre os erros como produtivos, não punitivos, é incrivelmente importante se quisermos que os alunos estejam genuinamente envolvidos no processo de teste e depuração. Se eles estão tentando esconder erros ou têm medo de falar sobre sua lógica com os outros, o processo de depuração será muito mais difícil e menos útil para o aprendizado. Há muitas maneiras de fazer isso, desde celebrar erros com coisas como um "Museu de Bugs" ou "Hall da Fama de Bugs"1, onde alunos e professores postam erros de codificação e suas correções para que todos reflitam. Os professores recompensaram os alunos por encontrarem percevejos distribuindo brinquedos de plástico cada vez que um percevejo era "anunciado" para a turma, tornando a depuração não apenas necessária, mas divertida!

Além disso, referir-se continuamente ao objetivo conceitual de um projeto ou desafio ajuda os alunos a manter o panorama geral de seu projeto em mente enquanto trabalham. Ao falar com frequência sobre o que eles estão conceitualmente tentando fazer, ou escrever pseudocódigos, os alunos podem detectar possíveis bugs antes que eles cresçam em tamanho ou escopo. Estratégias como ‘reengajamento em grupo’ podem ser úteis para toda a turma analisar um projeto com bugs juntos, identificar o que está funcionando em relação ao objetivo do projeto e por quê, e depois quais são os bugs. Os alunos podem ver um projeto de codificação específico através de muitos olhos e aprender a falar sobre elementos interessantes de código e estratégias criativas para resolver problemas que podem ser aplicados aos seus próprios projetos.

O primeiro ‘passo’ para depurar é identificar que há um problema no projeto. Os alunos não podem resolver um problema se não souberem que ele existe e, para isso, devem ser capazes de articular qual é o objetivo do projeto e compará-lo com o que o projeto está realmente fazendo. Em projetos simples, como codificar um robô para conduzir num quadrado, isso é mais fácil de fazer. À medida que os projetos crescem em complexidade, como codificar um robô para identificar e mover um cubo vermelho, isso pode parecer mais assustador. No lado positivo, há um sinal muito visível e tangível de que um projeto não está funcionando – desde que os alunos saibam o que o projeto pretendia fazer.

alunos e professores em torno de um computador

  • Usar o pseudocódigo regularmente pode ser uma estratégia útil quando os alunos se deparam com um projeto que "não funciona". Escrever, em termos claros e específicos, o objetivo do projeto e o que o robô ou código precisa fazer para atingir esse objetivo pode dar aos alunos um ponto de partida para garantir que seu projeto e seu código estejam na mesma página. Por exemplo, se codificar um robô para conduzir num quadrado, e o robô estiver apenas a conduzir numa linha, há um erro claro e visível.

O próximo ‘passo’ é encontrar o bug no código. Agora que os alunos sabem que há um problema, eles podem tomar medidas para encontrar o problema dentro do código. Usando o que sabem sobre o objetivo do projeto, os alunos devem olhar primeiro para as partes do código que estão funcionando como pretendiam. Isso é particularmente importante para tarefas de várias partes, como codificar um robô para identificar um cubo vermelho e movê-lo. Aqui estão várias estratégias que podem ser usadas para ajudar os alunos a localizar um bug:

alunos e professores em torno de um computador
  • Olhe para a execução do projeto um bloco de cada vez – Isso pode ser útil para projetos curtos, onde a sequência e o fluxo do projeto são mais simples, e os alunos podem detectar mais facilmente quaisquer irregularidades. Para ajudar nesse processo, o recurso ‘Etapa’ no VEXcode 123, VEXcode GO e VEXcode VR pode ser usado para executar o projeto um bloco ou etapa por vez. Ao executar um projeto dessa maneira, pode ficar muito claro quando e onde um projeto dá errado. Para projetos mais longos, o recurso de destaque no VEXcode 123, VEXcode GO e VEXcode VR destaca cada bloco à medida que é executado pelo robô, para ajudar a tornar a conexão entre um bloco e o comportamento do robô mais visível. Os alunos podem observar o robô e o destaque e pausar o projeto sobre ou em torno do erro à medida que o veem ocorrer.
  • Testar e depurar um projeto em partes – Esta é uma estratégia útil ao desenvolver um projeto mais longo ou mais complexo e é uma boa maneira de os alunos desenvolverem e criarem seus projetos. Os alunos devem testar e depurar cedo e com frequência durante a codificação, de modo que, à medida que cada comportamento ou conjunto de comportamentos é codificado, ele seja testado. Dessa forma, os bugs no código são detectados mais rapidamente e corrigidos com mais facilidade. Trabalhar em partes menores pode ajudar os alunos a evitar a frustração e evitar desanimar quando um "projeto inteiro" não funciona como pretendido, tornando mais fácil para professores e alunos manter altos níveis de motivação e engajamento. Se os alunos testarem um projeto complexo de uma só vez, eles podem dividi-lo em partes menores para executar e depurar uma seção do código de cada vez.
    Por exemplo, usando o exemplo de codificação de um robô para detectar e mover um cubo vermelho, os alunos podem testar partes individuais de toda essa tarefa – como dirigir até o cubo, relatar corretamente a cor do cubo com o sensor, agarrar o cubo, etc. Idealmente, isso é concluído à medida que o projeto está sendo construído, mas se eles chegarem ao fim, dividir o projeto em seções dá aos alunos menos para processar de uma só vez, e eles podem metodicamente percorrer o projeto para corrigi-lo.
  • Use códigos de erro – Esta é uma estratégia útil ao lidar com projetos baseados em texto, como o VEXcode VR Python, onde os erros de linha serão impressos na tela. Os alunos podem usar essas informações, como a linha de código problemática, como uma maneira de restringir seu erro. Esteja ciente de que isso é bom para erros de sintaxe, mas não necessariamente identificará erros lógicos no design do programa.

A ‘etapa’ final é agora corrigir o erro no projeto. Depois que os alunos identificarem que o projeto não está sendo executado como pretendido e localizarem o que está errado no código, eles agora podem descobrir por que esse bug existe. É um simples erro de sintaxe, como escrever incorretamente parte de um comando? Ou é um erro lógico, onde o design ou fluxo do programa está incorreto? Isso pode levar várias tentativas para encontrar uma solução de trabalho, e isso não é apenas ok, mas pode incentivar os alunos a aprofundar sua compreensão dos conceitos e estruturas de codificação. Novamente, com uma atitude positiva em relação à depuração, cada parte do processo é uma experiência de aprendizado. Aqui estão algumas estratégias que você pode usar para ajudar os alunos a descobrir possíveis soluções:

  • Leia o código para irregularidades – Isso é especialmente útil ao trabalhar com um código de erro ou um erro de sintaxe. Prestar muita atenção a detalhes como ortografia, pontuação e recuo pode permitir que os alunos corrijam um bug com alguns toques no teclado. No VEXcode, os alunos sempre podem usar a Ajuda integrada para aprender mais sobre como cada comando é escrito e usado em projetos.
  • Procure uma peça em falta – Uma estratégia útil para identificar erros lógicos num projeto vem de fazer a simples pergunta de "Está a perder um passo?" Os alunos podem pular uma etapa que parece intuitiva para suas mentes, mas é necessária para que o robô (que não pode intuir) conclua a tarefa. Voltar ao pseudocódigo que se alinha com esta parte do código pode ser útil para garantir que os alunos decomponham o projeto nas menores etapas possíveis. Falar sobre os comportamentos em voz alta em um grupo, ou com o professor, pode ajudar os alunos a identificar quaisquer "buracos" em sua lógica ou projeto.
  • Compare o código com um exemplo de trabalho – Os alunos podem usar projetos bem-sucedidos anteriores ou projetos de exemplo incorporados ao VEXcode para ver como eles são construídos e compará-los com o código existente. A colaboração é fundamental aqui – incentive os alunos a olhar para os projetos de outros alunos na turma para aprender com a forma como outros grupos estão a dar sentido à tarefa e aos seus projetos. Se vários grupos estão tendo o mesmo problema, pode ser um bom momento para usar esta avaliação formativa para ter uma discussão de classe inteira e depurar juntos.

aluno e professor

  • ‘Diminuir o zoom’ e dar um passo para trás – Se os alunos estiverem com dificuldades para encontrar uma solução, pode ser útil que eles se afastem do código em si e olhem para o objetivo maior do projeto e como eles projetaram seu projeto para realizar essa tarefa. “Mover-se entre níveis de abstração [pode] ajudar os alunos a ver erros no código que haviam negligenciado [e]...eles também podem descobrir que o bug não está no código, mas sim em sua abordagem do problema.”1.

Como em qualquer coisa, quanto mais prática os alunos tiverem com testes e depuração, e falando sobre o processo de uma maneira positiva e construtiva, maior será seu conforto e confiança nele. Dar aos alunos prática adicional, fora da depuração que ocorre naturalmente em um desafio de codificação, ajuda a desenvolver a capacidade coletiva não apenas para estratégias e habilidades em torno da depuração, mas também para o crescimento de uma cultura positiva em torno da resolução colaborativa de problemas. Independentemente da estratégia que você usa, encontrar maneiras de incentivar e incorporar celebrações de aprendizagem, mesmo aquelas tão simples quanto depurar um projeto, ajuda os alunos a se envolverem e se orgulharem do processo de aprendizagem, não apenas do produto.


Referências

1Grover, Shuchi. Computer Science in K-12: An A to Z handbook on teaching programming. Edfinity, 2020.