ARTÍCULO ORIGINAL
Leonardo Cardona Luque
leonardo.cardona@uic.cu • https://orcid.org/0000-0003-3787-6834
INSTITUTO PREUNIVERSITARIO DE CIENCIAS ExACTAS JOSÉ MACERLINO MACEO GRAJALES, CUBA
Recibido: 2022-10-21 • Aceptado: 2023-03-30
Se presenta el portal web «Sistema en línea para la evaluación de los problemas de concurso», para la preparación de los estudiantes de concurso en la provincia de Guantánamo, que no es más que un jurado automático para la calificación de concursos de programación a nivel provincial, sistema que permite la organización y celebración de concursos de programación en línea, además de la calificación automática de las soluciones de los concursantes y la actualización en tiempo real de la tabla de posiciones. El sistema se desarrolla utilizando el lenguaje de programación PHP y PYTHON, que permite obtener un producto multiplataforma. Consta de dos aplicaciones independientes que funcionan de manera conjunta, una web para interactuar con los concursantes y otra encargada de la calificación de las soluciones enviadas por los clientes.
It is presented the Portalweb Online System for the evaluation of contest problems for the preparation of contest students in Guantanamo province, which is nothing more than an “Automatic Jury for the qualification of programming contests” at provincial level, system that allows the organization and holding of online programming contests, in addition to the automatic qualification of the
REVISTA CUBANA
DE TRANSFORMACIÓN DIGITAL
RNPS 2487 • ISSN 2708-3411
Vol. 4 • Nro. 2 • abril-junio 2023 • 187
contestants’ solutions and the real time updating of the table of positions. Re
system is developed using PHP and PYTHON programming language, which allows to obtain a multiplatform product. It consists of two independent appli-cations that work together, a Web application to interact with the contestants and another one in charge of the scoring of the solutions sent by the clients.
Las competencias de programación fomentan y motivan el estudio de la programación y del diseño y análisis de algoritmos, fundamentalmente en estudiantes de nivel medio y superior; tanto es así que en el mundo existen actualmente varios sitios dedicados a este tipo de competencias. Con el aumento de la interconectividad de las redes de computadoras, los evaluadores automáticos han evolucionado hacia la web y son conocidos como jueces en línea (Revilla, Manzoor & Liu, 2008).
La cantidad de estudiantes de informática y las necesidades sociales no están completamente alineadas. Tener conocimientos sobre la informática como profesión es un reto que puede ser abordado por distintas iniciativas (Ortiz, Molina & Benavides, 2019).
El movimiento de los concursos de programación se ha visto por estos años inmerso en un período de intensa actividad en Cuba. Sin embargo, este auge aún no ha dado todos los resultados esperados y la principal causa es la ausencia de una adecuada preparación de estudiantes y entrenadores que no son capaces de asimilar el flujo de información que sobreviene hacia ellos (Yera, 2009).
De forma general, en estas competencias se publica en la web un conjunto de problemas que resuelven los programadores que se registran en el sitio de la competencia. Las soluciones a los problemas se pueden enviar en los lenguajes permitidos por el jurado de la competencia, en este caso: C++. La principal deficiencia en todas estas aplicaciones es la naturaleza de los problemas que pueden soportar.
El propósito trazado en este artículo es implementar un sistema al estilo de los jurados internacionales, que se pueda utilizar en las competencias internas de un centro de estudios o entre varios a través de la red nacional, así como configurar y adaptar acorde las características de la competencia y de la institución, y fundamentalmente a ampliar la variedad y la naturaleza de los problemas soportados por la aplicación. Entre ellas, destaca Hayes (2019), donde este tipo de prueba se utiliza para la promoción y atracción de estudiantes a que participen en los diferentes concursos de informática, y Junco-Vázquez (2007), en el cual esta prueba sirve como herramienta sustitutiva de los exámenes parciales en una asignatura de ofimática.
El entrenamiento en nuestro IPVCE José Marcelino Maceo Grajales se realiza en el sistema operativo Windows, mientras que todos los jurados en línea, tanto nacional como el DMOJ u otros internacionales, tienen su base sobre el sistema operativo LINUX, por este motivo los entrenamientos para el entrenador y los concursantes se hace muy trabajoso a la hora de hacer concursos para evaluar los contenidos de entrenamientos, así como eventos de concursos masivos y provinciales. Todo esto lo debe evaluar el entrenador, uno por uno, y anotarlo en su cuaderno o en una tabla. Debe evaluar de forma independiente todos los envíos de los concursantes, tratando de dar repuesta a cuestiones del evento, como preguntas, comentarios, problemas técnicos, etcétera. Esto ahorra mucho tiempo al entrenador para su preparación de los concursos, así como poner puntos a estos tipos de competencias, por ejemplo, el jurado en línea de Cuba, el Caribbean Online Judge (COJ), un juez en línea desarrollado por la Universidad de la Ciencias Informáticas (UCI). El entrenador de concurso Arteaga Salgado (2016), de las Tunas, desarrolló un módulo que incrementó las funcionalidades del COJ, permitiendo la evaluación parcial, tanto en su archivo de 24 horas como en la ejecución de un nuevo formato de competencias con reglas IOI para los estudiantes de preuniversitario, pero sustentado bajo la misma plataforma donde se encuentra instalado en un servidor LINUX.
El sistema está concebido para la realización de diferentes competencias de programación, como los concursos masivos municipales y provinciales. En estas se proponen los problemas que los concursantes deben solucionar y se especifica en cuáles de los lenguajes soportados por la aplicación (hasta el momento C++) pueden ser resueltos, siendo además muy sencillo adicionar nuevos lenguajes al sistema. A cada problema se le asigna un tiempo máximo de ejecución y se le otorga una puntuación acorde a su complejidad (Hernández, 2008).
El primer paso de la metodología se desarrolla de forma tal, que cada competencia se debe programar con una fecha de comienzo y una fecha de terminación, de modo que los problemas nunca estarán accesibles hasta el momento indicado, sí pudiendo, antes de iniciada la competencia, visitar las noticias acerca de esta y realizar la inscripción por parte de los equipos a través de la misma aplicación; esta inscripción puede ser cancelada por los usuarios. Para que finalmente tenga validez esta inscripción, debe ser aprobada por el jurado o moderador de la competencia.
El segundo paso de la metodología es que el sistema permite publicar noticias de interés a todos los concursantes independientes para cada competencia, así como la navegación anónima por páginas que solo muestran información y estadísticas; para las páginas protegidas permite la autenticación de los equipos registrados en la aplicación, así como a los usuarios del dominio. Lleva el historial de todas las competencias realizadas y admite ver la planificación de competencias próximas.
El último paso incluye un sistema de mensajería básico para que los concursantes puedan solicitar aclaraciones al jurado y el autor de los problemas no permite la comunicación entre equipos o individuales.
Para la evaluación de la calidad de las funcionalidades antes mencionadas, y otras tantas, son soportadas por la aplicación Web, con la que el usuario interactúa directamente para ver los problemas y enviar sus soluciones al servidor. Los sistemas interactivos de respuesta son herramientas de aprendizaje muy populares en todos los niveles educativos. Desde sus versiones originales, basadas en el uso de dispositivos específicos llamados clickers, hasta las actuales plataformas en la nube, que hacen uso de los dispositivos móviles, han sido una tecnología ampliamente adoptada en la educación superior. Potencialmente, hay diversas maneras de emplear estas herramientas con fines pedagógicos y estas metodologías persiguen en ocasiones objetivos muy distintos entre sí.
No obstante, muchas de las soluciones comerciales existentes suelen publicitar únicamente dinámicas competitivas basadas en la gamificación, en forma de concursos; los datos recolectados en este trabajo, a partir de un grupo multidisciplinar de profesorado, también arrojan que ese es el uso claramente predominante. Por otra parte, está la aplicación encargada de realizar la calificación automática de cada una de las soluciones enviadas por los concursantes, a lo que llamamos jurado (Cánovas Reverte, 2021).
En todos los sistemas de evaluación automática, después de escribir un programa en la máquina del concursante, el código fuente se carga en el servidor de evaluación, se compila y se ejecuta en el servidor. El juez automático lo prueba con algunas entradas y salidas (comparación de cadenas) o con una herramienta de juez específica para problemas más complicados. Tras el proceso, el servidor devuelve un feedback simple o detallado (Németh, Zsakó, 2018). La respuesta simple es: «aceptado» o «no aceptado» (en ese caso devuelve el primer mensaje de error).
La respuesta detallada es una de las siguientes. Mostramos la notación utilizada por casi todos los sitios (HackerEarth, SPOJ, TopCoder, CSAcademy...), la utilizada por USACO y la utilizada por CodeChef, respectivamente, entre paréntesis para cada posible feedback. A veces se da feedback para todos los casos de prueba, a veces solo hasta el primer error.
Los resultados obtenidos en las pruebas, así como la satisfacción de los estudiantes y el profesorado, revelan el aumento de la motivación de los estudiantes en la materia, así como las potenciales posibilidades de este tipo de actividades implementadas a largo plazo (López, Rodrigo, Carrasco & Mata, 2020).
El jurado es una aplicación independiente a la aplicación web, pudiendo haber en ejecución varios jurados para competencias, donde la cantidad de envíos recibidos sea numerosa. Cada jurado se comunica con un servicio web que controla que una misma solución no sea calificada por distintos jurados. El jurado se comporta de manera robusta ante pérdidas de conexión y soluciones de ejecución infinitas, dejándolas solo en ejecución el tiempo establecido como máximo para el problema en cuestión.
En función del concurso para el que se preparen los alumnos y de la fase de formación en la que se encuentren, los profesores responsables podrán promover distintos tipos de actividades,
por grupos o individuales, para evitar en la medida de lo posible las consecuencias negativas del aprendizaje competitivo. Desde este punto de vista, probablemente las competiciones por equipos en general estén un nivel por debajo de las individuales, como la de la Olimpiada Informática Internacional (IOI), ya que los criterios de «equipo de aprendizaje» exigen que el trabajo común y el esfuerzo individual deben ir de la mano (Cánovas, 2021).
El jurado comienza con la compilación de las soluciones. Si se detectan errores de compilación la solución es calificada como CE (error de compilación); en caso contrario, se procede a la ejecución de los juegos de datos definidos para el problema en cuestión. La solución es calificada como RE (error en ejecución), si durante la ejecución ocurre algún error, como puede ser división por cero, acceso a una posición indebida en un arreglo o excesivo empleo de la memoria, entre otros.
El tiempo límite que se define para cada problema es el tiempo máximo que puede emplear el programa para resolver todos los juegos de datos; si en un tiempo mayor no ha terminado la ejecución de la solución, entonces es calificada como TLE (excedido el tiempo límite) y se interrumpe su ejecución, evitando ejecuciones infinitas.
En caso de que la ejecución termine en el tiempo permitido, entonces se realiza el chequeo de si la respuesta dada es la esperada para los juegos de datos. En caso afirmativo la solución es calificada como AC (aceptado). En otro caso puede suceder que la respuesta sea correcta, pero sin cumplir con el formato descrito para la salida, por ejemplo, la adición de espacios o líneas fuera de lugar y la solución sería calificada como PE (error de presentación). Finalmente, si la respuesta es incorrecta se otorga la calificación de WA (respuesta equivocada).
Existen varios jurados en línea:
Codeacademy: Si lo tuyo es aprender de forma tradicional y siguiendo un curso concreto, esta plataforma es justo la que necesitas. Tras registrarte, será la propia web la que te pregunte qué quieres aprender y la que te asesorará para que elijas el curso que mejor encaje con tus necesidades. Una vez que comiences, apenas tardarás unos minutos en descubrir los secretos de cada código. Conseguirás programar con facilidad al tratarse de un temario escrito en un lenguaje tan didáctico como eficaz. Asimismo, tras cada ejercicio te enviarán una corrección para indicarte cuáles son tus errores. A buen seguro, no tardarás en familiarizarte con su funcionamiento y tampoco en ir evolucionando como programador casi sin darte cuenta.
Coursera: ¿Prefieres aprender directamente de las mejores universidades del mundo? En
esta web encontrarás cursos de todo tipo y, por supuesto, también de programación. Las empresas más importantes y las instituciones académicas de mayor renombre se unen para crear una oferta educativa sin coste de excelente calidad. Solo tendrás que pagar si quieres un certificado que confirme que has terminado el curso correspondiente. Por lo demás, contarás con un diseño adaptativo, unos cursos estructurados en unidades didácticas y con todo el apoyo de los profesores. Las plataformas de pago son una opción que debes valorar no porque su calidad sea superior a las plataformas arriba explicadas, sino
porque si pagas por algo, lo lógico es que quieras sacarle el rendimiento correspondiente a tu dinero. Como beneficio añadido, podrás contar con un certificado que confirme tu formación. Repasamos ya las propuestas más recomendables.
Udemy: Su tarjeta de presentación es incontestable: más de 185 000 cursos en video de todos los lenguajes de programación. Cada mes generan nuevo contenido. Solo tienes que seleccionar la opción que te interese para comprobar los cursos disponibles. Su precio es bastante competitivo. Hay cursos de dos horas, pero también de más de 100, lo que te confirma la especialización del profesorado y la preocupación por crear una formación a medida de cada alumno. Podrás aprender HTML, Python, Java o SQL, por citar algunos ejemplos, a tu ritmo y con total garantía de éxito.
Platzi: Los cursos de programación de esta web abarcan todos los lenguajes existentes
desde un punto de vista práctico. En lugar de presentar toda la oferta y ser tú quien elija, la oferta se presenta dividida según el nivel de conocimiento del usuario. El apartado para principiantes incluye algún curso gratuito que te permitirá conocer mejor el enfoque que le da la plataforma a su oferta educativa. El pago es por suscripción mensual que puede ser individual, para dos o para cuatro personas. Si abonas la cuota anual ahorrarás bastante. Así te evitas el tener que pagar por cada curso y puedes aprovechar al máximo tu suscripción.
Como hemos mostrado, una de las desventajas de estos jurados online de programación es que se necesita tener acceso a Internet; en muchos casos el registro debe contener una cuenta de correo, teléfono y determinadas especificaciones que nuestros estudiantes no poseen; la otra es que hay que pagar para los cursos y a veces participar en determinadas competencias. Otra desventaja es que, en ocasiones, las explicaciones no son tan didácticas como deberían.
Esta amigable aplicación web permite ver en cada momento el estado de las soluciones enviadas por los concursantes, la lista de los concursantes inscriptos, los detalles de cada concursante, así como la tabla de posiciones en tiempo real. Tiene un módulo muy básico para la búsqueda de concursantes, útil fundamentalmente para la administración de los concursantes en la aplicación. Está implementada utilizando un sistema de roles, de modo que cada concursante pueda acceder solo a las opciones que su rol le permita y tiene implementado un módulo para la administración de los concursantes, las inscripciones, las competencias y las noticias entre otras facilidades (figura 1).
Después de una gran búsqueda y exitosa investigación encontramos la forma de cómo ha-
cer un jurado en línea en el sistema operativo de Windows. El sistema está montado sobre un sistema web con un servidor PHP (Lenguaje del lado del servidor), con base de datos MYSQL; Sistema Gestor de Bases de Datos (SGDB), y otros framework como JQUERY y AJAX (Asyn-chronous JavaScript and XML) para que la comunicación sea más rápida, archivos que leen
Fig. 1 El sistema muestra el perfil del concursante una vez registrado, que solo podrá ver él en su navegación por el portal.
funciones del sistema como PYTHON. El sistema PHP no daba la opción de poder ejecutar el archivo .EXE, o sea, el código ejecutable del estudiante para ser evaluado en el sistema, pero este sí podía leer un fichero por lotes revisador.bat, logrando esto con la instrucción SHELL_ EXEC ($cmd) (Monier, Nogales, 2008). De esta forma, en el archivo por lotes evaluar.bat se podía leer el código del estudiante y con el comando en línea de compilación del C++ hacer el ejecutable y con ayuda de un código en PYTHON hacer la corrida de este. En el mismo fichero generamos un fichero PHP, que después es incluido en el evaluador y pasamos los datos procesados a la base de datos que en tiempo programado ya el concursante, en ese mismo instante, puede saber la nota de su respectivo envío al sistema evaluador.
Uno de los principales aportes de esta implementación con respecto a los jurados que se
encuentran en Internet, es la posibilidad de definir nuevos reglamentos para establecer los ganadores de una competencia. Si hoy se quiere realizar una competencia donde gane el que más problemas resuelva y luego desea que por la naturaleza de la competencia gane el que resuelva todos los problemas en el menor tiempo, se puede hacer debido a las facilidades que se implementaron en la aplicación para la definición de los rankings (tablas de posiciones)
El jurado comienza con la compilación de las soluciones. Si se detectan errores de compi-
lación la solución es calificada como CE (error de compilación); en caso contrario se procede a la ejecución para los juegos de datos definidos para el problema en cuestión (figura 2).
La solución es calificada como RE (error en ejecución), si durante la ejecución ocurre algún error como puede ser división por cero, acceso a una posición indebida en un arreglo o excesivo empleo de la memoria, entre otros. El tiempo límite que se define para cada problema, es el tiempo máximo que puede emplear el programa para resolver todos los juegos de datos; si en un tiempo mayor no ha terminado la ejecución de la solución, entonces es calificada como TLE (excedido el tiempo límite) y se interrumpe su ejecución, evitando ejecuciones infinitas.
Fig. 2 El sistema muestra cuando el usuario hace los envíos por cada uno de los ejercicios planificados, obteniendo de cada uno el veredicto alcanzado.
En caso de que la ejecución termine en el tiempo permitido, entonces se realiza el chequeo de si la respuesta dada es la esperada para los juegos de datos; en caso afirmativo la solución es calificada como AC (aceptado). En otro caso, puede suceder que la respuesta sea correcta, pero sin cumplir con el formato descrito para la salida, por ejemplo, la adición de espacios o líneas fuera de lugar, y la solución sería calificada como PE (error de presentación). Finalmente, si la respuesta es incorrecta se otorga la calificación de WA (respuesta equivocada).
De forma general, el sistema tiene un conjunto de estadísticas que el usuario podrá irse midiendo con él y los demás concursantes de su grado, ya que sirve para sacar los que nos re-presentarán en las copas inter IPVCE y los que después formarán la preselección provincial al concurso nacional (figura 3).
Fig. 3 Estadísticas generales del sistema en las distintas competencias que están programadas durante todo el curso y otras ediciones anteriores.
El sistema posee por cada concurso un sistema de estadísticas que van conduciendo al estudiante usuario a su mejor desempeño en el concurso dado (figura 4).
Fig. 4 Estadísticas del ranking general de la competencia, en este caso la PRINCIPIANTE.
Como se ha explicado por cada concurso propuesto se muestra un conjunto de problemas que se deben resolver entre cuatro y ocho problemas, dependiendo del tipo de competencia. Al seleccionar el problema lo conduce a la siguiente figura, donde el concursante hace su envío para que el sistema evalúe su solución de forma automática, dándole el resultado para su corrección o aceptación del ejercicio (figura 5).
Fig. 5 Presentación de un problema de este concurso, para resolver, donde el usuario debe hacer el envío de su solución para su evaluación por el sistema en línea.
A continuación, dos posibilidades que da el sistema cuando se hace la evaluación en línea, mostrando todos los casos de prueba del problema y cuáles de ellos le dio correcto o incorrecto. De ser correcto, en todos los casos de prueba se podrá saber que tiene el problema resuelto, mientras que si al menos uno de los casos falla tendrá solución parcial y debe seguir mejorando su solución algorítmica (figuras 6 y 7).
Fig. 6 Evaluación por parte del sistema en línea, de la solución enviada, donde en diez casos de juegos de datos la solución no alcanzó a resolver ninguno.
Fig. 7 Evaluación por parte del sistema en línea de la solución enviada, donde en diez casos de juegos de datos la solución alcanzó a resolver todos.
Por último, se muestra cómo desde la sección del administrador, quien tiene el rol también de ser el entrenador, puede ver el desarrollo de la competencia, ya sea de un grado especifico o una competencia conjunta (figura 8).
Fig. 8 Rol del administrador del sistema en línea con acceso a ver el comportamiento de la competencia de forma general.
El jurado ha sido utilizado desde 2018, en competencias oficiales del concurso provincial con resultados satisfactorios, entre ellas, varias versiones del concurso municipal de Guantánamo. La aplicación ha tenido una gran aceptación por los estudiantes y otro personal que ha sido cliente de esta.
Se han recibido evidencias de que ha sido una importante motivación para los estudiantes de entrenamiento del IPVCE José Marcelino Maceo Grajales en el estudio de la programación y la profundización e investigación de algoritmos eficientes para diversos problemas. La aplicación fue utilizada también el portal web de entrenamiento de informática, en el Centro Provincial de Entrenamiento, en la que participan todos los estudiantes de entrenamiento del centro, más aquellos que se captan en las diferentes escuelas de los preuniversitarios urbanos de la provincia, con una magnifica aceptación, y varios de los centros se interesaron por esta.
Agradecemos de forma general a todos los entrenadores y preparadores provinciales de los distintos preuniversitarios del municipio, que desde su centro pudieron contactar con la aplicación del sistema y dan crédito a su buen funcionamiento en cuanto a tiempo y evaluación de los concursos presentados, también la forma de llevar este sistema a todo tipo de competencia, así como que lo conozcan todos los entrenadores de la provincia para su uso y preparación de los estudiantes de concurso.
Arteaga Salgado (2016). Módulo para juzgar soluciones con las reglas de la Olimpiada Internacional de Informática en el Juez Caribeño en Línea. Trabajo de Diploma para optar por el título de Ingeniero Informático.
Cánovas Reverte, O. (2021). Sistemas interactivos de respuesta: hay vida más allá de los concursos. En Actas de las XXVII Jornadas de Enseñanza Universitaria de Informática, Jenui 2021, pp. 251-258, Valencia, julio.
Hayes, B. (2019). Programming Languages Most Used and Recommended by Data Scien-tists, businessoverbroadway.com, [Online]. Recuperado de: http://businessoverbroadway. com/2019/01/13/programming-languages-mostused-and-recommended-by-data-scien-tists/. [Accesed: Feb. 20, 2019].
Hernández González, F (2008). Metodología para el entrenamiento de los estudiantes de preuniversitario que participan en concursos de informática. Tesis en opción del grado científico de doctor en Ciencias Pedagógicas Universidad Central Marta Abreu, Las Villas, Cuba.
Junco Vázquez, H (2007). Un jurado online, una nueva forma de ejercitación y evaluación en las asignaturas de Programación, UCIENCIA.
López Gómez J. A., Rodrigo-Rubio, R., Carrasco García, A. & Mata Cabrera, F. (2020). La Escape Room como actividad de formación, evaluación y mejora de la motivación del estudiante: una experiencia en Ofimática Aplicada a la Ingeniería. En Actas de las XXVI Jornadas de Enseñanza Universitaria de Informática, Jenui 2020, páginas 237-244, Valencia,
Németh, Á. E., Zsakó, L. (2018). Grading Systems for Algorithmic Contests. Olympiads in In-formatics,12, 159-166. DOI: 10.15388/ioi.
Ortiz-Prieto, C., Molina-Pineda, E. y Benavides, D. (2019). Software room: una experiencia docente para atraer nuevos estudiantes. En Actas de las XXV Jornadas de Enseñanza Universitaria de Informática, Jenui 2019, pp. 377-380, Murcia, julio 2019.
Revilla, M. A., Manzoor, S., Liu, R. (2008). Competitive Learning in Informatics: The UVa Online Judge Experience. Olympiads in Informatics, pp. 131-148
Yera Toledo, R. (2009). Concepción de una estrategia para un sistema adaptativo de preparación de estudiantes en los concursos de programación, COMPUMAT 2009.
Copyright © 2023 Cardona Luque, L.
Este obra está bajo una licencia de Creative Commons Atribución-No Comercial 4.0 Internacional