En el contexto de la educación universitaria, corregir manualmente prácticas de programación supone un reto importante, especialmente cuando se trata de asignaturas con muchos estudiantes. La ausencia de un sistema automatizado y unificado para gestionar estas prácticas hace que los profesores tengan una gran carga de trabajo, retrasando considerablemente la retroalimentación que reciben los estudiantes. Además, cuando se utilizan plataformas distintas y desconectadas entre sí para gestionar cada entrega, se hace difícil seguir adecuadamente el progreso de los alumnos y promover buenas prácticas de desarrollo. Este Trabajo de Fin de Grado plantea el diseño y desarrollo de un sistema automatizado para la corrección de prácticas académicas, utilizando GitHub Actions y GitHub Classroom, herramientas ampliamente empleadas tanto en contextos educativos como profesionales. La idea principal es proporcionar un entorno que permita realizar evaluaciones continuas y escalables de las prácticas, aprovechando las ventajas del ecosistema GitHub para introducir a los estudiantes en metodologías de trabajo modernas como las prácticas DevOps. El sistema planteado facilita la gestión centralizada de prácticas, soporta múltiples lenguajes (se mostrará principalmente Java, por ser el lenguaje vehicular de la Escuela) y contempla desde prácticas sencillas hasta proyectos complejos que involucren arquitecturas completas. Además, permite incluir pruebas automatizadas personalizadas y scripts externos para abordar casos específicos. El flujo de trabajo está diseñado para que cada vez que un estudiante realice una entrega, se ejecuten automáticamente las pruebas definidas, proporcionando un feedback inmediato y detallado. Para evaluar la viabilidad del sistema propuesto, se ha llevado a cabo una investigación exhaustiva del estado del arte, comparando plataformas existentes como Deliverit, GitLab CI, Jenkins, Gradescope y Codeboard. Los resultados muestran que GitHub Actions, combinado con GitHub Classroom, ofrece una integración más natural con el entorno educativo universitario, fomentando tanto el aprendizaje continuo como el acercamiento a herramientas profesionales del ámbito industrial.
ABSTRACT
Manually grading programming assignments is a major challenge in the context of university education, especially in courses with a large student body. Instructors are overwhelmed and feedback to students is greatly delayed due to the absence of an automated and centralised system to handle these assignments. Furthermore, it is challenging to efficiently monitor student progress and encourage best practices for development when distinct and disjointed platforms are used for every submission. This Bachelor’s Thesis proposes the design and implementation of an automated grading system for academic programming assignments, using GitHub Actions and GitHub Classroom, tools widely adopted in both educational and professional environments. The main goal is to provide an environment that enables continuous and scalable evaluation of programming assignments, leveraging the GitHub ecosystem to introduce students to modern workflows and DevOps methodologies. The proposed system facilitates centralized management of assignments, supports multiple programming languages (primarily Java, as it is the vehicular language of the school), and covers simple tasks as well as complex projects involving complete architectures. Additionally, it allows for the inclusion of customized automated tests and external scripts to address specific cases. The workflow is designed so that every time a student submits the code, the defined tests are automatically executed, providing immediate and detailed feedback. To evaluate the feasibility of the proposed system, an exhaustive state-of-the-art analysis was carried out, comparing existing platforms such as Deliverit, GitLab CI, Jenkins, Gradescope, and Codeboard. The results indicate that GitHub Actions, combined with GitHub Classroom, provides a more natural integration within the university educational environment, fostering both continuous learning and the adoption of professional tools from the industrial domain.
En el contexto de la educación universitaria, corregir manualmente prácticas de programación supone un reto importante, especialmente cuando se trata de asignaturas con muchos estudiantes. La ausencia de un sistema automatizado y unificado para gestionar estas prácticas hace que los profesores tengan una gran carga de trabajo, retrasando considerablemente la retroalimentación que reciben los estudiantes. Además, cuando se utilizan plataformas distintas y desconectadas entre sí para gestionar cada entrega, se hace difícil seguir adecuadamente el progreso de los alumnos y promover buenas prácticas de desarrollo. Este Trabajo de Fin de Grado plantea el diseño y desarrollo de un sistema automatizado para la corrección de prácticas académicas, utilizando GitHub Actions y GitHub Classroom, herramientas ampliamente empleadas tanto en contextos educativos como profesionales. La idea principal es proporcionar un entorno que permita realizar evaluaciones continuas y escalables de las prácticas, aprovechando las ventajas del ecosistema GitHub para introducir a los estudiantes en metodologías de trabajo modernas como las prácticas DevOps. El sistema planteado facilita la gestión centralizada de prácticas, soporta múltiples lenguajes (se mostrará principalmente Java, por ser el lenguaje vehicular de la Escuela) y contempla desde prácticas sencillas hasta proyectos complejos que involucren arquitecturas completas. Además, permite incluir pruebas automatizadas personalizadas y scripts externos para abordar casos específicos. El flujo de trabajo está diseñado para que cada vez que un estudiante realice una entrega, se ejecuten automáticamente las pruebas definidas, proporcionando un feedback inmediato y detallado. Para evaluar la viabilidad del sistema propuesto, se ha llevado a cabo una investigación exhaustiva del estado del arte, comparando plataformas existentes como Deliverit, GitLab CI, Jenkins, Gradescope y Codeboard. Los resultados muestran que GitHub Actions, combinado con GitHub Classroom, ofrece una integración más natural con el entorno educativo universitario, fomentando tanto el aprendizaje continuo como el acercamiento a herramientas profesionales del ámbito industrial.
ABSTRACT
Manually grading programming assignments is a major challenge in the context of university education, especially in courses with a large student body. Instructors are overwhelmed and feedback to students is greatly delayed due to the absence of an automated and centralised system to handle these assignments. Furthermore, it is challenging to efficiently monitor student progress and encourage best practices for development when distinct and disjointed platforms are used for every submission. This Bachelor’s Thesis proposes the design and implementation of an automated grading system for academic programming assignments, using GitHub Actions and GitHub Classroom, tools widely adopted in both educational and professional environments. The main goal is to provide an environment that enables continuous and scalable evaluation of programming assignments, leveraging the GitHub ecosystem to introduce students to modern workflows and DevOps methodologies. The proposed system facilitates centralized management of assignments, supports multiple programming languages (primarily Java, as it is the vehicular language of the school), and covers simple tasks as well as complex projects involving complete architectures. Additionally, it allows for the inclusion of customized automated tests and external scripts to address specific cases. The workflow is designed so that every time a student submits the code, the defined tests are automatically executed, providing immediate and detailed feedback. To evaluate the feasibility of the proposed system, an exhaustive state-of-the-art analysis was carried out, comparing existing platforms such as Deliverit, GitLab CI, Jenkins, Gradescope, and Codeboard. The results indicate that GitHub Actions, combined with GitHub Classroom, provides a more natural integration within the university educational environment, fostering both continuous learning and the adoption of professional tools from the industrial domain. Read More


