Estrategias y consejos para enseñar depuración
Independientemente del nivel de habilidad del programador, la depuración es una parte inevitable e integral de la codificación" 1.
Esto puede parecer una afirmación algo obvia, sin embargo, ejecutar esto de una manera cómoda y productiva puede ser un desafío. En muchos entornos de educación formal, hay un fuerte enfoque en los productos de aprendizaje completos y correctos. Si bien podemos usar clichés como "mis errores son mis mejores maestros", rara vez se valoran esos sentimientos de una manera que haga que el pensamiento de los estudiantes sobre el error y su solución sea realmente visible y forme parte de la cultura del aula. Sin embargo, STEM, y la codificación y la robótica en particular, ofrecen formas auténticas de practicar lo que predicamos. Los estudiantes van a tener errores en su código, errores lógicos en el diseño del programa y otros errores a medida que aprenden a codificar y completar desafíos en el aula. Entonces, ¿cómo podemos aprovechar al máximo esta oportunidad, no solo para enseñar a los estudiantes conceptos de codificación, sino también para celebrar sus errores como pasos importantes en el camino hacia el aprendizaje? Las pruebas y la depuración siempre serán un tipo de proceso receptivo, para el que no existe una fórmula clara y concreta. Sin embargo, hay "pasos" y estrategias generales que se pueden implementar con los estudiantes para ayudarlos a participar en este proceso de manera productiva y colaborativa.
Comienza con una cultura positiva en el aula en torno a la depuración y el pensamiento conceptual sobre el código. Tener una cultura de aula más amplia que enmarque los errores como productivos, no punitivos, es increíblemente importante si queremos que los estudiantes participen genuinamente en el proceso de prueba y depuración. Si están tratando de ocultar errores, o tienen miedo de hablar a través de su lógica con los demás, el proceso de depuración será mucho más difícil y menos útil para el aprendizaje. Hay muchas maneras de hacer esto, desde celebrar los errores con cosas como un "Museo de errores" o un "Salón de la fama de los errores"1 donde los estudiantes y maestros publican errores de codificación y sus correcciones para que todos reflexionen. Los maestros han recompensado a los estudiantes por encontrar errores repartiendo juguetes de plástico para insectos cada vez que se "anunciaba " un error a la clase, ¡lo que hace que la depuración no solo sea necesaria, sino también divertida!
Además, hacer referencia continuamente al objetivo conceptual de un proyecto o desafío ayuda a los estudiantes a tener en cuenta el panorama general de su proyecto mientras trabajan. Al hablar con frecuencia sobre lo que están tratando de hacer conceptualmente, o al escribir pseudocódigo, los estudiantes pueden detectar posibles errores antes de crecer en tamaño o alcance. Estrategias como el "compromiso grupal" pueden ser útiles para que toda una clase vea un proyecto con errores juntos, identifique qué está funcionando en relación con el objetivo del proyecto y por qué, y luego cuáles son los errores. Los estudiantes pueden ver un proyecto de codificación en particular a través de muchos ojos y aprender a hablar sobre elementos interesantes del código y estrategias creativas para resolver problemas que luego pueden aplicar a sus propios proyectos.
El primer "paso" para la depuración es identificar que hay un problema en el proyecto. Los estudiantes no pueden solucionar un problema si no saben que existe, y para hacerlo, deben ser capaces de articular cuál es el objetivo del proyecto y compararlo con lo que realmente está haciendo el proyecto. En proyectos simples, como codificar un robot para conducir en un cuadrado, esto es más fácil de hacer. A medida que los proyectos crecen en complejidad, como codificar un robot para identificar y mover un cubo rojo, esto puede parecer más desalentador. En el lado positivo, hay una señal muy visible y tangible de que un proyecto no está funcionando, siempre y cuando los estudiantes sepan lo que el proyecto estaba destinado a hacer.
- Usar pseudocódigo con regularidad puede ser una estrategia útil cuando los estudiantes se enfrentan a un proyecto que "no funciona". Escribir, en términos claros y específicos, el objetivo del proyecto y lo que el robot o el código deben hacer para lograr ese objetivo, puede dar a los estudiantes un punto de partida para asegurarse de que su proyecto y su código estén en la misma página. Por ejemplo, si la codificación de un robot para conducir en un cuadrado, y el robot sólo está conduciendo en una línea, hay un error claro y visible.
El siguiente ‘paso’ es encontrar el error en el código. Ahora que los estudiantes saben que hay un problema, pueden tomar medidas para encontrar el problema dentro del código. Usando lo que saben sobre el objetivo del proyecto, los estudiantes deben ver primero qué partes del código están funcionando como pretendían. Esto es particularmente importante para tareas de varias partes, como codificar un robot para identificar un cubo rojo y moverlo. Aquí hay varias estrategias que se pueden utilizar para ayudar a los estudiantes a localizar un error:
- Mire la ejecución del proyecto un bloque a la vez : esto puede ser útil para proyectos cortos, donde la secuencia y el flujo del proyecto son más simples, y los estudiantes pueden detectar más fácilmente cualquier irregularidad. Para ayudar con este proceso, la función ‘Step’ en VEXcode 123, VEXcode GO y VEXcode VR se puede utilizar para ejecutar el proyecto un bloque, o paso, a la vez. Al ejecutar un proyecto de esta manera, puede quedar muy claro cuándo y dónde un proyecto sale mal. Para proyectos más largos, la función de resaltado en VEXcode 123, VEXcode GO y VEXcode VR resalta cada bloque a medida que el robot lo ejecuta, para ayudar a que la conexión entre un bloque y el comportamiento del robot sea más visible. Los estudiantes pueden ver el robot y el resaltado, y pausar el proyecto en o alrededor del error a medida que lo ven ocurrir.
- Probar y depurar un proyecto en partes : esta es una estrategia útil cuando se desarrolla un proyecto más largo o más complejo, y es una buena manera para que los estudiantes desarrollen y creen sus proyectos. Los estudiantes deben probar y depurar temprano y con frecuencia mientras codifican, de modo que a medida que se codifica cada comportamiento o conjunto de comportamientos, se evalúe. De esta manera, los errores en el código se detectan más rápidamente y se solucionan más fácilmente. Trabajar en partes más pequeñas puede ayudar a los estudiantes a evitar la frustración y evitar desanimarse cuando un "proyecto completo" no funciona según lo previsto, lo que facilita que los maestros y los estudiantes mantengan altos los niveles de motivación y compromiso. Si los estudiantes prueban un proyecto complejo a la vez, pueden dividir el proyecto en partes más pequeñas para ejecutar y depurar una sección del código a la vez.
Por ejemplo, usando el ejemplo de codificar un robot para detectar y mover un cubo rojo, los estudiantes pueden probar partes individuales de toda esa tarea, como conducir al cubo, informar correctamente el color del cubo con el sensor, agarrar el cubo, etc. Idealmente, esto se completa a medida que se construye el proyecto, pero si llegan al final, dividir el proyecto en secciones les da a los estudiantes menos que procesar a la vez, y pueden moverse metódicamente a través del proyecto para solucionarlo. - Usar códigos de error : esta es una estrategia útil cuando se trata de proyectos basados en texto, como VEXcode VR Python, donde los errores de línea se imprimirán en la pantalla. Los estudiantes pueden usar esta información, como la línea de código problemática, como una forma de reducir su error. Tenga en cuenta que esto es bueno para los errores de sintaxis, pero no necesariamente identificará errores lógicos en el diseño del programa.
El ‘paso’ final ahora es corregir el error en el proyecto. Después de que los estudiantes hayan identificado que su proyecto no se está ejecutando según lo previsto y hayan localizado lo que está mal en el código, ahora pueden averiguar por qué existe ese error. ¿Es un simple error de sintaxis, como escribir mal parte de un comando? ¿O es un error lógico, donde el diseño o flujo del programa es incorrecto? Esto puede tomar varios intentos para encontrar una solución de trabajo, y eso no solo está bien, sino que puede alentar a los estudiantes a profundizar su comprensión de los conceptos y estructuras de codificación. Una vez más, con una actitud positiva en torno a la depuración, cada parte del proceso es una experiencia de aprendizaje. Estas son algunas estrategias que puede utilizar para ayudar a los estudiantes a encontrar posibles soluciones:
- Lea el código en busca de irregularidades : esto es especialmente útil cuando se trabaja con un código de error o un error de sintaxis. Prestar mucha atención a detalles como la ortografía, la puntuación y la sangría puede permitir a los estudiantes corregir un error con unos pocos golpes del teclado. En VEXcode, los estudiantes siempre pueden usar la Ayuda incorporada para obtener más información sobre cómo se escribe y se usa cada comando en los proyectos.
- Busca una pieza faltante : una estrategia útil para identificar errores lógicos en un proyecto proviene de hacer la simple pregunta de "¿Te estás perdiendo un paso?" Los estudiantes pueden omitir un paso que parece intuitivo para sus mentes, pero que es necesario para que el robot (que no puede intuir) complete la tarea. Volver al pseudocódigo que se alinea con esta parte del código puede ser útil, para asegurarse de que los estudiantes descompongan el proyecto en los pasos más pequeños posibles. Hablar de los comportamientos en voz alta en un grupo, o con el maestro, puede ayudar a los estudiantes a identificar cualquier "agujero" en su lógica o proyecto.
- Compare el código con un ejemplo de trabajo : los estudiantes pueden usar proyectos exitosos anteriores o proyectos de ejemplo integrados en VEXcode para ver cómo se construyen y compararlos con su código existente. La colaboración es clave aquí: anime a los estudiantes a mirar los proyectos de otros estudiantes en la clase para aprender de cómo otros grupos están dando sentido a la tarea y sus proyectos. Si varios grupos tienen el mismo problema, puede ser un buen momento para usar esta evaluación formativa para tener una discusión de toda la clase y depurar juntos.
- "Alejar" y dar un paso atrás : si los estudiantes tienen dificultades para encontrar una solución, puede ser útil para ellos alejarse del código en sí y observar el objetivo más amplio del proyecto y cómo han diseñado su proyecto para lograr esa tarea. "Moverse entre niveles de abstracción [puede] ayudar a los estudiantes a ver errores en el código que habían pasado por alto [y]... también pueden descubrir que el error no está en el código, sino en su enfoque del problema".1.
Como con cualquier cosa, cuanta más práctica tengan los estudiantes con las pruebas y la depuración, y hablando sobre el proceso de una manera positiva y constructiva, mayor será su comodidad y confianza en él. Dar a los estudiantes práctica adicional, fuera de la depuración que ocurre naturalmente en un desafío de codificación, ayuda a desarrollar la capacidad colectiva no solo para estrategias y habilidades en torno a la depuración, sino también para desarrollar una cultura positiva en torno a la resolución colaborativa de problemas. Independientemente de la estrategia que utilice, encontrar formas de fomentar e incorporar celebraciones de aprendizaje, incluso aquellas tan simples como depurar un proyecto, ayuda a los estudiantes a involucrarse y enorgullecerse del proceso de aprendizaje, no solo del producto.