A decomposição é uma habilidade fundamental da ciência da computação essencial para desenvolver a compreensão de longo prazo dos alunos sobre como resolver problemas de codificação. Este artigo explora o que é decomposição, por que ela é importante e como facilitar o aprendizado da decomposição pelos alunos.
O que é decomposição?
A decomposição é o processo de quebrar um problema complexo em partes menores e mais gerenciáveis. Isso simplifica o processo de criação de um projeto de codificação, permitindo que os alunos resolvam um componente do problema por vez.
Por que a decomposição é importante?
Quando os alunos começam a aprender a programar, eles se deparam com a necessidade de pensar sobre a linguagem de uma maneira nova e desafiadora. Eles devem passar da comunicação na linguagem falada, que é cheia de inferências e nuances, para a estrutura precisa e lógica exigida na codificação. Esse ajuste é extremamente difícil para os alunos e muitas vezes atrapalha seu sucesso. A decomposição é uma habilidade crítica da ciência da computação que os alunos devem adquirir para codificar com sucesso, pois permite que os alunos comecem com a linguagem falada e a refinem até que seja algo que possa ser usado em um projeto de codificação.
A decomposição de um problema permite que ele seja resolvido em pequenos incrementos, ajudando a evitar que se torne opressor para os alunos. Quando os alunos decompõem os problemas em partes menores antes de começarem a codificar, eles podem construir cada pequena seção de um projeto e testá-la para ter certeza de que funciona conforme o esperado, antes de passar para a próxima parte. Isso é muito mais fácil do que tentar codificar todas as etapas necessárias para atingir uma meta de uma só vez e evita que os alunos fiquem frustrados ao se perderem em um longo projeto ao tentar solucionar erros.
O processo de decomposição também proporciona aos alunos uma abordagem sistemática para a construção de um projeto, eliminando a tentação que os alunos podem ter de adivinhar e verificar o caminho para uma solução. Adivinhar e verificar é uma forma ineficiente de resolver um problema e torna-se ineficaz à medida que os alunos começam a se envolver com desafios de codificação cada vez mais complexos.
Além disso, a decomposição de um projeto permite que os alunos identifiquem padrões em seu código e desenvolvam, modifiquem e reutilizem seções de código. Isso facilita a construção e a solução de problemas de projetos, ao mesmo tempo que proporciona aos alunos uma compreensão mais profunda do código que estão criando, permitindo-lhes usar esse entendimento em projetos futuros.
Finalmente, a decomposição também facilita a colaboração entre os alunos à medida que trabalham juntos para criar projetos de robótica em grupos. Um projeto decomposto registrado em um caderno de engenharia fornece um artefato para os alunos usarem ao discutir projetos em grupo ou compartilhar com outros grupos.
Facilitando a decomposição
A decomposição ocorre quando os alunos estão na fase de planejamento, antes mesmo de começarem a desenvolver seus projetos. Os alunos devem registrar seu processo de decomposição em seus cadernos de engenharia e compartilhá-lo com você antes de começarem a codificar. Para obter mais informações sobre o uso de cadernos de engenharia com alunos, consulte este artigo.
Forneça aos alunos esta estrutura simples de três etapas para abordar a decomposição:
- Identifique o objetivo principal do projeto , declarando o resultado que o robô demonstrará quando o projeto for bem-sucedido. Registre esse objetivo no caderno de engenharia.
- Determine os principais passos que o robô deve realizar para atingir o objetivo. Considere e registre as etapas principais ou gerais que o robô precisará concluir para atingir a meta. Registre essas etapas de alto nível no caderno de engenharia.
-
Divida as etapas principais nos menores incrementos possíveis de comportamento do robô. Divida cada uma das etapas principais no menor comportamento que o robô pode realizar. Registre essas etapas decompostas no caderno de engenharia.
- Cada um dos comportamentos do robô deve poder ser combinado com um bloco ou comando correspondente. Caso contrário, as etapas podem ser decompostas ainda mais.
Neste exemplo, os alunos estão decompondo um projeto para completar um labirinto no VEXcode VR Wall Maze + Playground.
Etapa 1: Identifique o objetivo principal do projeto. Registre a meta no caderno de engenharia.
Passo 2: Determine as principais etapas que o robô deve realizar para atingir o objetivo.
- Aqui, o aluno pensou em todos os comportamentos que o robô precisará adotar para dirigir do ponto inicial ao ponto final do labirinto e os listou em ordem no caderno de engenharia.
Etapa 3: divida as etapas principais nos menores incrementos de comportamento do robô.
- Os alunos podem começar a determinar os valores aproximados necessários para concluir cada etapa. Esses valores precisarão ser testados e ajustados na construção do projeto no VEXcode.
- Os alunos devem verificar se cada etapa decomposta corresponde diretamente a um bloco VEXcode. Caso contrário, a etapa precisa ser decomposta ainda mais.
Depois que os alunos tiverem decomposto seu projeto até o nível de blocos ou comandos individuais, eles poderão passar do estágio de planejamento do projeto para o estágio de implementação. Eles devem transferir as principais etapas determinadas na etapa 2 para os Comentários e, em seguida, adicionar os blocos ou comandos correspondentes para cada comportamento totalmente decomposto da etapa 3 a cada um desses Comentários para construir seus projetos.
Os alunos devem construir seus projetos em uma etapa decomposta de cada vez, testando cada comportamento (ou conjunto de comportamentos agrupados logicamente) antes de passar para o próximo. É nesta fase que os alunos precisarão usar os recursos de que dispõem para determinar os valores corretos dos parâmetros. Por exemplo, no exemplo VEXcode VR acima, os valores de distância foram determinados usando o conhecimento de que cada quadrado do labirinto tem 300 mm de diâmetro. O método de determinação dos valores irá variar dependendo da circunstância, mas será sempre necessário testar e ajustar os valores durante o processo de criação de um projeto de codificação.
Apoiando os alunos enquanto eles aprendem a decomposição
Antes que os alunos comecem a trabalhar em um desafio de um Laboratório STEM ou outro projeto VEXcode, reserve um tempo para trabalhar na decomposição para estar pronto para responder às perguntas que os alunos possam ter. Incentive os alunos a mostrarem o plano decomposto do projeto antes de começarem a codificar, para que você possa reforçar o processo de decomposição e verificar se eles dividiram a tarefa nos menores comportamentos possíveis do robô. Lembre aos alunos que eles devem ser capazes de identificar um bloco ou comando que corresponda a cada comportamento.
- Se os alunos estiverem tendo dificuldade em visualizar as etapas principais ou gerais que o robô precisa realizar para atingir o objetivo do projeto, incentive-os a:
- Desenhe o caminho que o robô precisa seguir para atingir o objetivo.
- Representar as etapas que o robô precisa seguir para atingir o objetivo.
- Fale sobre as etapas que o robô precisa seguir para atingir a meta.
- Se os alunos estiverem com dificuldades para determinar se suas etapas foram decompostas até o bloco individual ou nível de comando, pergunte-lhes:
- Quantos blocos ou comandos seriam necessários para o robô completar esse comportamento?
- O robô pode completar essa etapa usando apenas um bloco ou comando?
- Como você pode decompor esse comportamento em ações robóticas ainda menores?
Apoiar seus alunos enquanto eles aprendem a se decompor garantirá que eles tenham uma base sólida para futuras soluções de problemas em ciência da computação.
Você tem mais dúvidas sobre como facilitar o aprendizado da decomposição pelos alunos em sua sala de aula? Peça a eles na Comunidade PD+ou para agendar uma sessão individual para conversar com um especialista VEX.