Descripción
El Probador es una forma de aligerar el trabajo de los profesores de programación cuando ponen muchos ejercicios que deben ser resueltos con programas y al mismo tiempo para que los estudiantes puedan tener una retroalimentación inmediata. En el Probador hay dos momentos:
1. El profesor pone una tarea de programación especificando los casos de prueba con los cuales se va a probar el programa. Estos casos son las entradas a las cuales el programa va a ser sometido y las salidas correctas que el programa debe generar. 1. El estudiante prueba su programa, este entra al probador que la aplica inmediatamente varios filtros:
- El primero consiste en compilar el programa y si está mal le devuelve la salida del compilador, si está bien pase al siguiente filtro.
Se le aplican la serie de casos de prueba que el profesor especificó en el primer momento. Estos casos se le aplican al programa como caja negra, esto es, se ejecuta el programa con una entrada, se espera una salida que es comparada con la salida especificada por el profesor.
Hasta el momento solo hay estos dos de estos filtros.
Objetivos
Desarrollar un software que sirva para evaluar y retrolimentar fácil y rápidamente tareas de programación.
Estado del arte
Se que Alejandro Forero desarrolló uno similar, pero posterior, en Squeme pero no lo encontré en su Blog.
Antecedentes
El Probador nació de la necesidad de automatizar la prueba de ejercicios de programación. Las primeras versiones eran en Bash y funcionaban específicamente para cada programa, luego se generalizó, todavía en Bash y posteriormente se paso a C para poder tener más control sobre los programas que eran probados, por ejemplo para poder cortarlos cuando consumían mucho tiempo en ejecutarse, cuando se quedaban en un ciclo infinito.
En el momento el Probador es un API hecha en C y una serie de programas ejecutables en línea de comando. Como API puede invocarse desde cualquier programa que acepte librerías en C y como programas en línea de comando puede ser invocado por scripts de shell, CGIs, PHP, etc. El Probador se ha utilizado con maratones de programación y con diversos cursos de programación y funciona satisfactoriamente.
Cosas por hacer
Pero hay algunas cosas que hacer:
Que pueda aceptar varios lenguajes: Que al profesor pueda especificar en que lenguajes puede ser entregado el programa (o si es indiferente el lenguaje). Esto implica que debe haber alguna forma de que el Probador se pueda configurar fácilmente los lenguajes que acepta.
- Estándar para agregar filtros: La idea es que se puedan agregar los filtros que se quiera al probador. Algunas ideas de filtros son:
- Comparador de programas: Es un filtro que puede sacar los grafos de cada programa y comparar con una medida porcentual que tanto son parecidos, esta sería una forma de detectar copias.
- Verificador de documentación: Este filtro verifica que todos los elementos del programa están debidamente documentados y que sigan un estándar.
- Cualquiera que el profesor necesite para evaluar.
Módulos interfaz para Moodle, Dokeos y uno general en PHP: Estas son interfaces para que el Probador pueda funcionar con estas dos aulas virtuales y además pueda integrarse a cualquier página WEB.
- Seguridad: Hay que hacer varias cosas en este sentido, por ejemplo que el programa se ejecute en un shell seguro, una caja de arena.
--Luis Alejandro Bernal Romero 18:48 6 jun, 2005 (MDT)
