La autocorrección del código de programación

La autocorrección de los conocimientos de los alumnos ha demostrado ser una herramienta eficaz para el aprendizaje de los alumnos. Tradicionalmente, dicha autoevaluación se lleva a cabo mediante diversos sistemas como pueden ser: La elaboración de test autocorrectivos. En estos, aparecen preguntas de diversa índole con varias posibles respuestas siendo una o varías de ellas correctas. El alumno debe seleccionar la respuesta correcta. Al final del test, en función de los deseos del docente se puede devolver: la cantidad de preguntas acertadas, cuáles son las preguntas falladas o la solución del test.

Alternativamente, también se puede dar un conjunto de respuestas posibles al final de la lista de ejercicios. En este sistema, los alumnos deben buscar la solución que han obtenido en un conjunto de soluciones a los ejercicios.

Estos sistemas plantean la dificultad de que las respuestas tienen que quedar cerradas. En algunas áreas el alumno puede dar una respuesta que sea correcta pero no esté contemplada por el docente. Ejemplos de estos casos pueden ser sinónimos en el caso de asignaturas de lenguas o fórmulas equivalentes en asignaturas de matemáticas.

Así pues, se plantea el dilema de cómo corregir de forma automática, las actividades que por naturaleza son abiertas como pueden ser: narraciones, descripciones o desarrollos de temas. Hoy en día se podría llegar a corregir automáticamente la ortografía. Sin embargo los contenidos son más difíciles de evaluar (quizá todavía inalcanzables).

Sin embargo, existe un tipo de actividades que, aunque son abiertas, contienen un conjunto de características que pueden hacerlas corregibles. Se trata de las actividades relacionadas con el código de programación.
Cualquier lenguaje de programación tiene una sintaxis y una estructura muy firme. Además, el contenido puede ser evaluado mediante la ejecución de algunos casos test. Estos casos test pueden construirse de forma que se muestren los errores más comunes.

Se trata de una idea incipiente que todavía debe desarrollarse. Consistiría en establecer un sistema que permita la corrección de actividades de programación que pueda realizar un análisis de: resultados, sintaxis, formato. Y así ayudar a los alumnos a resolver los problemas que puedan originarse en sus códigos de forma automática/instantánea.

Shared by: Daniel Pérez
Image Credit: Ejemplo de código Python (Wikipedia)

← Previous item

Next item →

2 Comments

  1. Daniel Pérez Palau

    Buenos días,

    Para ampliar un poco más la información sobre el proyecto, adjunto a continuación las respuestas a algunas preguntas que pueden ser de interés:

    1.Nombre del proyecto (lo mas creativo, mejor): Creación de un corrector automático para código de programación (reconozco que podría ser más creativo, pero ahora mismo es lo que mejor se me ocurre, estoy abierto a sugerencias)

    2.Objetivo (a cuál necesidad real responde?): el objetivo es generar un código que pueda adaptarse a la plataforma virtual correspondiente (sakai, …) y permita realizar una primera corrección del código entregado por el alumno. Por un lado, el código deberá ser capaz determinar si el código entregado responde correctamente a lo solicitado. Por otro lado también sería interesante que se pudiera analizar el nivel de plagio.

    3.Resultado final (cual seria el resultado practico y tangible del proyecto?): El resultado final del proyecto sería un addon para una plataforma que permita la corrección automática.

    4.Herramientas (la idea se basa sobre algun software que existe? Se necesita trabajo tecnico?): desconozco si hay algún software. La idea se basa en un MOOC que cursé una vez. En él, se realizaba la entrega del código. El propio software respondía si el resultado es correcto y si no, daba algunas ideas de lo que podía estar mal. Para ello mi idea seria tener un conjunto de ejemplos que permitan la detección de los problemas típicos. La herramienta tendría que estar generada de manera que fuera sencillo adaptarla a varios problemas/ejercicios.
    Lo ideal sería basarlo en la propia plataforma en la que se deba implementar, esta parte es la principal herramienta técnica necesaria.

    5.Carga de trabajo (cuanto tiempo se necesita para desarrollar la idea? Qué tipo de competencias adicionales necesitarías?): El desarrollo de la herramienta debe ser a largo plazo. Difícilmente pueda realizarse en una tarde. En una primera instancia sería ideal definir un ejemplo de trabajo. Por ejemplo en un programa de resolución de sistemas de ecuaciones. En cuanto a nivel técnico, personalmente me falta experiencia en integración web.

    Un saludo,
    Daniel

  2. Daniel Pérez Palau

    Buenos días,

    Para ampliar un poco más la información sobre el proyecto, adjunto a continuación las respuestas a algunas preguntas que pueden ser de interés:
    1.Nombre del proyecto (lo mas creativo, mejor): Creación de un corrector automático para código de programación (reconozco que podría ser más creativo, pero ahora mismo es lo que mejor se me ocurre, estoy abierto a sugerencias)

    2.Objetivo (a cuál necesidad real responde?): el objetivo es generar un código que pueda adaptarse a la plataforma virtual correspondiente (sakai, …) y permita realizar una primera corrección del código entregado por el alumno. Por un lado, el código deberá ser capaz determinar si el código entregado responde correctamente a lo solicitado. Por otro lado también sería interesante que se pudiera analizar el nivel de plagio.

    3.Resultado final (cual seria el resultado practico y tangible del proyecto?): El resultado final del proyecto sería un addon para una plataforma que permita la corrección automática.

    4.Herramientas (la idea se basa sobre algun software que existe? Se necesita trabajo tecnico?): desconozco si hay algún software. La idea se basa en un MOOC que cursé una vez. En él, se realizaba la entrega del código. El propio software respondía si el resultado es correcto y si no, daba algunas ideas de lo que podía estar mal. Para ello mi idea seria tener un conjunto de ejemplos que permitan la detección de los problemas típicos. La herramienta tendría que estar generada de manera que fuera sencillo adaptarla a varios problemas/ejercicios.
    Lo ideal sería basarlo en la propia plataforma en la que se deba implementar, esta parte es la principal herramienta técnica necesaria.

    5.Carga de trabajo (cuanto tiempo se necesita para desarrollar la idea? Qué tipo de competencias adicionales necesitarías?): El desarrollo de la herramienta debe ser a largo plazo. Difícilmente pueda realizarse en una tarde. En una primera instancia sería ideal definir un ejemplo de trabajo. Por ejemplo en un programa de resolución de sistemas de ecuaciones. En cuanto a nivel técnico, personalmente me falta experiencia en integración web.

    Un saludo,
    Daniel

Provide Feedback

Your email address will not be published.