Introducción
En ingeniería es habitual encontrar asignaturas relacionadas con el aprendizaje de lenguajes de programación, ya que su uso, y la programación como tal, se considera una competencia imprescindible para el futuro profesional de un ingeniero, de cualquier especialidad. Por este motivo, el diseño de actividades que involucren herramientas para la evaluación sumativa y formativa es de ayuda para impulsar cambios en el proceso de enseñanza y aprendizaje de la programación.
Es importante conocer las competencias adquiridas por cada estudiante, cada curso de programación contiene las competencias antes nombradas, habilidades, sensibilidades, logros de aprendizaje y criterios de evaluación que se espera que el estudiante reconozca y alcance al finalizar un curso. Para lograr que el estudiante alcance las competencias, se proponen actividades, proyectos y exámenes. Sin embargo, evaluar a los estudiantes es una tarea complicada y no está bien detallada. En este sentido, aparecen las rúbricas que permiten evaluar las partes del desempeño del estudiante, desglosando sus componentes para obtener una calificación total, además de determinar el estado del desempeño e identificar fortalezas y debilidades que permitan al estudiante mejorar su desempeño (Dümmel, Westfechtel y Ehmann, 2018).
La colaboración como estrategia de aprendizaje en el aula ha tenido buenos resultados en los cursos de programación (Chen et al., 2020; Mehennaoui et al., 2014), mejorando desde aspectos académicos hasta habilidades a nivel personal. Sin embargo, identificar las habilidades que adquieren los estudiantes en el trabajo individual es una tarea complicada para el profesor (Böhne, Faltin y Wagner, 2007; Kardan y Sadeghi, 2015). Por esta razón es necesario apoyar este proceso colaborativo a través de herramientas que permitan evaluar y retroalimentar, considerando los logros de aprendizaje y las competencias académicas propuestas en el curso (Pereira et al., 2019).
En la literatura uno de los enfoques de aprendizaje con mayor acogida es Computer Supported Collaborative Learning (CSCL) (Mehennaoui et al., 2014; Stahl, Koschmann y Suthers, 2006), surge como apoyo al aprendizaje tradicional (Demaidi, Qamhieh y Afeefi, 2019; Lee, Fong y Gordon, 2013), busca controlar el proceso para lograr que los estudiantes obtengan conocimientos de aprendizaje de manera colaborativa (Ayala, Ortiz y Osorio, 2005; Lämsä et al., 2021). Este enfoque se basa en la formación de grupos y cómo estos se pueden apoyar en la tecnología para mejorar el aprendizaje y la enseñanza, que sirven de apoyo al aprendizaje basado en la colaboración, pero estos procesos se pueden intervenir para adaptarlos a las necesidades (Chen et al., 2018; Coto, Mora y Collazos, 2014).
En este artículo se propone una rúbrica para evaluar el proceso de enseñanza y aprendizaje en un curso de programación que desarrolla actividades colaborativas, la cual permite que los estudiantes conozcan los objetivos de aprendizaje, junto con los criterios de evaluación necesarios para alcanzar las competencias del curso.
Este artículo está organizado de la siguiente manera. La segunda sección presenta los trabajos relacionados. La tercera sección describe la metodología, se presentan en detalle las preguntas de interés, la selección de la muestra del curso CS1 y las fases de las pruebas experimentales realizadas. La cuarta sección presenta los resultados de las pruebas experimentales desarrolladas. La quinta sección discute los resultados del trabajo y, por último, se concluye el trabajo realizado.
Los resultados del aprendizaje se expresan como declaraciones de conocimiento y habilidades individuales que los estudiantes deben poseer al final del curso en el que se inscribieron. Es un enfoque integral para organizar y operar un sistema educativo que se centra en el éxito buscado por los estudiantes al final del ciclo de aprendizaje (Goss, 2022).
Los resultados de aprendizaje de un programa están establecidos por varios niveles del equipo de gestión académica. Hay tres componentes principales: resultado de aprendizaje del programa, resultado de aprendizaje del estudiante y resultado de aprendizaje del curso. Este artículo se centra en el resultado de aprendizaje del estudiante, que es el centro del aprendizaje y a quien están ligados los resultados esperados de un curso y de un programa (Alhazbi y Hassanh, 2013; Blikstein et al., 2014; Clancy et al., 2003).
La evaluación de resultados de aprendizaje en cursos de programación enfatiza la importancia de que cuando un estudiante alcanza las competencias y los logros necesarios, queda con bases sólidas que permiten continuar con la formación del plan de estudios y seguramente se forma un buen profesional para la industria. Sin embargo, la forma de evaluar las competencias no suele ser una tarea sencilla, ya que involucra diferentes elementos que pueden representar una tarea de mucho tiempo. En este sentido, se realiza una revisión de la literatura en la cual se encuentran diferentes estrategias para evaluar resultados de aprendizaje.
Una de las formas tradicionales de evaluar las competencias es a través de indicadores de logros, que son actividades evaluativas que tienen porcentaje que sumados dan el total del indicador de logro (TrainCom, s.f.). Si el estudiante cumple con más del 50 % quiere decir que ha logrado el resultado de aprendizaje. Sin embargo, esta forma requiere mucho tiempo y esfuerzo por parte del profesor; además de dejar sesgos entre lo que el estudiante entrega y lo que se evalúa objetivamente. Algunas propuestas son las de OECD ILibrary, (s.f.), Sadler (2016) y Zlatkin-Troitschanskaia, Pant y Coates (2016).
Por otro lado están los evaluadores de logros de aprendizaje a través de listas de chequeo, las cuales permiten identificar si el estudiante logra un criterio de evaluación o no. Este método ha sido uno de los más usados, pero también uno de los más criticados, ya que al ser dicotómico es difícil conocer el porcentaje exacto que el estudiante alcanza en un logro de aprendizaje. Algunos trabajos en la revisión son Carbonaro (2019), Powell y Wimmer (2015) y Tiantong y Teemuangsai (2013).
En este mismo sentido, aparece la evaluación por semáforo, donde se puede medir si el estudiante alcanza una competencia o un logro de aprendizaje basado en tres niveles: bajo, medio y alto. Este método ha sido probado en diferentes trabajos (Collins, Weber y Zambrano, 2014; Fiesler, Garrett y Beard, 2020; Ishii, Gilbride y Stensrud, 2009; Saunders, 2012) y ha sido modificado usando cuatro categorías (Means et al., 2009), también usando anotaciones y calificaciones dentro de las categorías (Michel, Cater y Varela, 2009), aplicación de autoevaluación por categorías (Bhuyan y Tamir, 2020).
También se encuentran las rúbricas, en las cuales se proponen diferentes niveles que pertenecen a un criterio de evaluación. La evaluación de la competencia o el logro de aprendizaje se alcanza en porcentaje con la suma de todos los criterios de evaluación. Este método de evaluación requiere un diseño que puede llevar mucho tiempo, pero es el que presenta mejores resultados para conocer el estado actual de los estudiantes. Algunos trabajos presentados son: Cateté, Snider y Barnes (2016), Lakas y Belkacem (2021), Saito et al. (2021), Wei, Saab y Admiraal (2021), en otros trabajos han usado rúbricas evaluativas (Mustapha et al., 2016), rúbricas basadas en realimentación (Allen y Tanner, 2006), rúbricas basadas en razonamientos lógicos de competencias académicas (Palmer, Bach y Streifer, 2014).
Así mismo aparecen nuevas estrategias que combinan rúbricas con trabajo colaborativo. En Kilgour et al. (2020) se propone una rúbrica que permite evaluar las competencias académicas en un grupo, donde cada estudiante logre un criterio de evaluación y si es necesario puede recibir ayuda de sus compañeros de grupo. Por otro lado, Fleming (2008) muestra que el trabajo colaborativo aporta significativamente a la evaluación por competencias. Finalmente, en Allen y Knight (2009) se propone un método que integra el trabajo colaborativo, la formación de grupos y la evaluación de resultados de aprendizaje para mejorar un curso de programación. En todos los casos que se usó una rúbrica y la colaboración, se indicó que el estudiante logra identificar cuáles fueron sus falencias y mejorar su calificación.
Metodología
En esta sección se identifican las preguntas de interés que motivaron a integrar una rúbrica para evaluar resultados de aprendizaje de estudiantes de programación CS1. La rúbrica se implementó en dos grupos, uno para evaluar las competencias donde se usa la colaboración y otro para el trabajo individual. Se hizo la selección de los grupos de control y experimental que permitieron realizar experimentos para obtener los resultados.
Preguntas de interés
Este trabajo se realiza sobre el curso CS1, donde algunas actividades evaluativas son colaborativas, lo cual tiene cierto grado de dificultad para el profesor a la hora de evaluar los logros de aprendizaje que adquiere cada estudiante, en este sentido es importante que se integren nuevas estrategias que permitan evaluar actividades de programación individual y colaborativas, con el fin de apoyar a los estudiantes en su desempeño formativo. En este artículo surge la pregunta de interés: ¿cómo evaluar competencias de aprendizaje en tareas de programación colaborativas de un curso CS1?
Población y muestra
El CS1 es el primer curso de programación del plan de estudios del programa de Ingeniería de Sistemas de la Universidad del Valle (Cali, Colombia). Este curso consta de 4 horas de clase por semana (2 teóricas y 2 prácticas) y 8 horas de trabajo autónomo. En total, los estudiantes tienen que estudiar 128 horas cada semestre (16 semanas). El objetivo general de este curso es aprender e implementar estructuras de datos y estructuras de control, así como desarrollar el pensamiento algorítmico para resolver problemas computacionales. El lenguaje de programación del curso es C++. La estructura curricular del curso se compone de 3 competencias académicas (C), 4 indicadores de logro (IL) y 19 criterios de evaluación (CE).
Cada semestre, aproximadamente 50 estudiantes toman el curso, en el semestre l del año 2019, 40 estudiantes se matricularon al curso CS1, los cuales fueron seleccionados para el experimento presentado en este artículo. Los 40 estudiantes fueron divididos en dos grupos de forma aleatoria: 24 estudiantes de control (grupo de control = GC) y 16 estudiantes de experimento (grupo experimental = GE).
Rúbrica para una actividad del curso CS1
Estructura de la rúbrica
En la Tabla 1 se propone la estructura de la rúbrica, en la cual se presentan jerárquicamente de mayor a menor: competencia, logro de aprendizaje y criterios de evaluación del curso CS1. Este diseño curricular se toma del curso de la Escuela de Ingeniería de Sistemas y Computación de la Universidad del Valle (García Retana, 2011). Cada competencia está ligada a uno o varios logros de aprendizaje, y estos están sujetos a los criterios de evaluación que los define el profesor del curso.
Los niveles de evaluación serán acordes al criterio de evaluación, donde en cada nivel se presente claramente el concepto que se está midiendo. Teniendo en cuenta que esta rúbrica es diseñada para estudiantes de programación, hemos puesto niveles (ascendentes) que sean del agrado de los estudiantes, con el fin de hacer divertida la evaluación, definimos 5 niveles:
Nivel 1. Novato: el estudiante que no tiene los conocimientos necesarios para lograr el mínimo del criterio de evaluación (su solución aparentemente no está relacionada con el problema en cuestión).
Nivel 2. Memento Quod Genus: el estudiante necesita revisar las guías y presentaciones de clase para mejorar (muestra cierta comprensión de una parte del problema).
Nivel 3. Puro Stack Overflow: es una comunidad, en la cual los desarrolladores pueden encontrar soluciones a problemas comunes de programación en diferentes lenguajes (la solución presenta algunos errores / parcialmente correcta).
Nivel 4. Teikirisi: (del inglés take it easy, muchas veces en programación por el afán de entregar nos queda faltando o sobrando instrucciones sintácticas propias de los lenguajes de programación “”,.;’’. (algunos errores “tontos” en el código para pasar los casos de prueba).
Nivel 5. Programador: llega a este nivel cuando la solución es completamente correcta y eficiente.
Cada CE, dentro de la rúbrica, debe tener un porcentaje. En este caso, asignaremos los valores a cada nivel (nivel 1: 0 %, nivel 2: 35 %, nivel 3: 65 %, nivel 4: 85 %, nivel 5: 100 %). El promedio de todos los CE nos da el porcentaje del LA. Si el LA es mayor de 80 %, el estudiante alcanza la competencia.
Cada competencia equivale a un 100 %, este se divide en LA, donde cada L da un porcentaje dependiendo del aporte a la competencia; la suma de todos debe ser el 100 %. Asimismo, cada LA tiene un peso en el curso. En la Tabla 2 se muestra el LA y el porcentaje de evaluación.
Cantidad de competencias, logros de aprendizaje y criterios a evaluar por actividad
Por cada actividad a evaluar se deberá elegir un número de criterios a evaluar por logros de aprendizaje. Según Carvajal-Ortiz, Florian-Gaviria y Díaz (s.f.), elegir estos criterios debe ser una tarea en la cual el profesor piense la forma más simple de que el estudiante entienda el criterio, y que no se agote leyendo y evaluando, por ello es bueno contar entre 4 y 8 criterios de evaluación. Asimismo, los logros de aprendizaje deberán ser elegidos teniendo en cuenta la actividad propuesta, donde sea afín el conocimiento técnico con el conocimiento teórico, en Powell y Wimmer (2015), por cada competencia al menos debe haber entre 1 y 3 logros de aprendizaje. Por otro lado, para elegir el número de competencias, no se define un límite, sin embargo, en Wei et al. (2021) se menciona que las competencias por lo general están definidas en orden de conocimientos y tiempo de curso, así que dependiendo de eso, se puede elegir el número de competencias.
En este artículo se diseñaron 3 actividades, las cuales se relacionan con 3 competencias, 4 logros de aprendizaje y 20 criterios de evaluación que se especifican a continuación:
Actividad 1: identificar la reproducción de una bacteria.
Actividad 2: en un mundo virtual existen cuatro personajes, cada uno con diferente funcionalidad de ataque y defensa. Cada personaje deberá tener una cantidad de peleas para poder ganar y conquistar el mundo.
Actividad 3: identificar el crecimiento y el decrecimiento entre predador y presa o presa y predador usando las ecuaciones de Lotka-Volterra.
Evaluación
Se seleccionó el evaluador automático de código fuente INGInious M-iDEA (Hidalgo y Bucheli, 2019) porque esta plataforma tiene una interfaz apropiada para administrar cursos y tareas de programación de computadoras. Tiene un juez virtual que permite a los estudiantes presentar soluciones de código fuente, evaluar y recibir comentarios automáticamente en tiempo real. La evaluación automática del código se basa en un método de comparación entre casos de prueba (entradas) y casos de prueba esperados (salidas). Además, la plataforma permite guardar registros sobre las calificaciones logradas, el número de intentos de respuesta, los tiempos promedio, el puntaje de calificación y el indicador de estado de cada actividad presentada por los estudiantes.
Luego de que el estudiante envía su código fuente al evaluador automático, el profesor descarga todas las entregas de los estudiantes. Posteriormente, usando la rúbrica, el profesor evalúa de forma manual cada entrega de cada estudiante.
Colaboración
Con base en Llanos, Hidalgo y Bucheli (2022) se implementó una estrategia de colaboración para un curso de programación CS1, donde el profesor propone una actividad de programación con un límite de tiempo. Los estudiantes que transcurrido un tiempo no hayan avanzado o terminado, tienen la posibilidad de solicitar ayuda de un compañero ya que haya logrado resolver la actividad de programación. El estudiante que ayuda, solo lo puede hacer a través del lenguaje natural, no puede mostrar o pasar el código de solución.
Experimentos
Con la definición previa de las actividades (ver sección Cantidad de competencias, logros de aprendizaje y criterios a evaluar por actividad), se plantean tres experimentos. Para cada actividad, ambos grupos tienen un tiempo límite de 2 horas de forma individual en el caso del GC, y de forma colaborativa en el caso del GE. Cada estudiante debe enviar su solución a través del evaluador automático INGInious M-iDEA. Posteriormente el profesor evalúa por cada estudiante los CE alcanzados. En la Tabla 6 se detallan los experimentos realizados.
Resultados
En este artículo se diseñó y probó una rúbrica que permitió evaluar las competencias de aprendizaje en actividades de programación. La rúbrica permite evaluar en dos diferentes contextos, tanto para la forma colaborativa como para la forma tradicional, donde los estudiantes trabajan de forma individual. En la Figura 1 y la Figura 2, forma colaborativa e individual respectivamente, se muestran los estudiantes que participaron en cada grupo y por cada uno se muestran los criterios de evaluación que alcanzaron en cada competencia, además, en las figuras se observan cinco colores con una letra, el verde es el nivel 5 (programador) y el rojo el nivel 1 (novato), los otros colores representan los niveles 2, 3 y 4. Por último en las figuras aparece la columna de porcentaje (%), la cual indica la medida lograda por cada estudiante, si es mayor al 80 %, quiere decir que el estudiante logró adquirir la mayoría de los CE esperados y con esto se evidencia que obtuvo la competencia de aprendizaje.
Los resultados de usar la colaboración (GE) en comparación con la forma individual (GC) muestran que el trabajo colaborativo apoya en adquisición de conocimientos y competencias de aprendizaje, se observa que más estudiantes del GE adquieren el nivel más alto de “programador (P)” y “teikirisi (T)” (ver Figura 1), mientras que en el GC se aprecia que los estudiantes en su mayoría adquieren el nivel medio “memento quod genus (M)” y “puro stack overflow” (S).
En investigaciones previas (Llanos, Hidalgo y Bucheli, 2022; Hidalgo et al., 2021) se ha evidenciado que la colaboración mejora tres aspectos importantes: 1) las calificaciones del estudiante, 2) el conocimiento homogéneo en el grupo y 3) las habilidades blandas del estudiante. En este artículo se encuentra que la colaboración también logra que los estudiantes alcancen las competencias académicas, que los estudiantes mejoran significativamente sus conocimientos y que todo el curso mejora, esto se observa en la media de cada competencia (Tabla 7)
Finalmente, el uso de la rúbrica en los cursos de programación puede ser un recurso para que el estudiante tome decisiones y tomar medidas a tiempo para alcanzar las competencias. Por otra parte, el profesor puede identificar a tiempo los estudiantes que no estén adquiriendo una competencia de aprendizaje, y así puede crear estrategias y mejorar los métodos de enseñanza propuestos en el curso, con el fin de mejorar la dinámica y prevenir que los estudiantes no tengan las capacidades en programación. Desde el curso, se puede evaluar si los logros de aprendizaje y criterios de evaluación están ajustados al contenido del mismo, además de identificar el aporte de las competencias de un curso al futuro profesional.
Discusión
Este trabajo presenta una rúbrica para estimular las habilidades en la programación y alcanzar competencias académicas de estudiantes del curso CS1. Al usar esta rúbrica, fue posible probar y evaluar la estrategia propuesta, permitiendo realizar seguimiento sobre el proceso de aprendizaje, identificando si se logran los conceptos propuestos de programación en el código fuente, que permitirán a futuro obtener información para desarrollar estadísticas descriptivas sobre la calificación del grupo y el tiempo de entregas por cada taller de programación.
Por otro lado, el uso de la estrategia colaborativa apoyada con la herramienta de evaluación automática, integra la evaluación formativa y la sumativa. Por un lado, la evaluación automática permite identificar el nivel alcanzado en el logro de aprendizaje de una actividad y, por otro lado, los resultados de la rúbrica permiten identificar claramente los resultados esperados, además, sirve de apoyo al profesor para tomar decisiones oportunas que beneficien el aprendizaje de los estudiantes.
El trabajo colaborativo entre estudiantes surge como apoyo para conseguir un resultado que resulta más difícil de conseguir individualmente. Además, el trabajo colaborativo permite que haya mayor homogeneidad de los estudiantes en los logros de aprendizaje del curso. La estrategia planteada centra el aprendizaje del estudiante en la experiencia de colaboración y reflexión individual, mejorando habilidades sociales de comunicación, liderazgo, confianza en los demás, capacidad de intercambio de roles, entre otras. Esto transforma el espacio académico tradicional en un espacio lúdico y divertido.
En el aprendizaje de la programación, especialmente en el curso CS1, es necesario que el estudiante sea constante en la práctica para lograr alcanzar las competencias necesarias del curso. Para esto la academia cuenta con profesores idóneos que enseñan las bases necesarias; sin embargo, el tiempo limitado de interacción entre el profesor y el estudiante no permite que el estudiante reciba retroalimentación permanente sobre sus procesos de aprendizaje. En este sentido, contar con herramientas que permitan evaluar un código fuente y dar realimentación inmediata es un insumo muy importante para la enseñanza de la programación. Esto logra acelerar el proceso de aprendizaje, facilitar la adquisición de competencias académicas e incentivar actitudes de aprendizaje autónomo en los estudiantes.
Conclusiones
El diseño de rúbricas que integren la colaboración y permitan evaluar las competencias de aprendizaje mejora significativamente el entendimiento y las calificaciones del estudiante, además de las habilidades interpersonales que incentivan a mejorar los cursos de programación.
En el desarrollo y diseño de la rúbrica es importante que haya iteraciones que permitan observar la relación entre los contenidos del curso y el estudiante, esto se puede evidenciar a través de herramientas de evaluación de código fuente, donde se guardan los registros de las entregas, que al analizarse permiten tomar decisiones oportunas que beneficien al estudiante.
Cuando el estudiante se encuentra con actividades de programación retadoras es necesario que cuente con apoyos, y es preciso que un compañero de curso sea quien brinde la ayuda, permitiendo así integrar a los estudiantes para encontrar una solución colaborativa, además de fomentar el aprendizaje y el apoyo mutuo.