Resumen: [ES] La evaluación es una parte fundamental de la enseñanza. Permite tanto a los estudiantes como a los profesores medir el grado de éxito obtenido en el proceso de aprendizaje. De hecho, la evaluación no debería usarse solo para puntuar, sino que debe ser parte integral de la educación, y proporcionar a los alumnos retroalimentación inmediata. Obviamente, la evaluación debe ser objetiva y justa, y tratar a todos los alumnos por igual. Esto ocurre, p.e., en exámenes de respuesta múltiple, pero, desafortunadamente, no está asegurado en la evaluación de código programado por alumnos, puesto que su corrección es todavía un proceso manual y propenso a errores e interpretaciones. En este artículo proponemos un sistema semi-automático de evaluación de código que utiliza técnicas de caja negra (basadas en output-comparison) y técnicas de caja blanca (que observan las propiedades internas del código). El método propuesto incluye nuevas ideas y técnicas que le permiten evaluar incluso código que no compila.