¿Se podría usar el control de versiones para mitigar las trampas académicas en informática?

Como muchos ya han mencionado, esta es una gran idea; y como muchos han mencionado, muy correctamente, que enseñar el control de versiones a un curso introductorio general de CS crea una ofuscación innecesaria del contenido del curso realmente importante.

Aquí hay algunos puntos adicionales que aún no se han tocado.

Como mencionó Anon, las herramientas basadas en la comparación como MOSS son extremadamente efectivas y no requieren que los estudiantes tomen ninguna acción específica. Generalmente son capaces de detectar la similitud incluso después de intentos maliciosos de ofuscación novata, como renombrar, reordenar, descomponer, etc., que generalmente se encuentra en los cursos introductorios de CS.

Si realmente quieres aprovechar al máximo el control de versiones para atrapar trampas, ¿por qué no presionas los cambios todo el tiempo ? ¿Como minuciosamente ? De hecho, ¿qué tal si configuramos algo para insertar código automáticamente, tal vez como un complemento en el IDE utilizado por el curso? Entonces, un amigo mío, Chris Piech, después de obtener el permiso de los estudiantes, usó un complemento Eclipse para empujar automáticamente el Árbol de sintaxis abstracta (AST) compilado por Eclipse a un repositorio git en cada guardado. Luego utilizó modelos gráficos para analizar la riqueza de datos, y descubrió que los estudiantes a menudo tomaban caminos comunes para llegar al producto final terminado, y que ciertos caminos generalmente conducían a mejores productos finales que otros. Esto es obviamente cierto en la codificación de la vida real: un programador tomará decisiones importantes de diseño clave en unos pocos puntos, y luego el resto del código generalmente se colocará en su lugar con pequeñas variaciones. Sin embargo, con estos datos, también podría elegir valores atípicos. Y dado que tiene el AST completo en cada guardado (que a menudo es así, ya que Eclipse fuerza un guardado antes de cada ejecución, por lo que debe guardar si quiere probar), puede ver casi exactamente lo que cambió casi minuciosamente. Podrías adaptar esto fácilmente para detectar automáticamente posibles tramposos, y luego seleccionarlos manualmente para determinar rápidamente con bastante certeza los que hicieron trampa.

Sin embargo, creo que esta es una muy, muy mala idea . Creo que este método potencial de detección de tramposos al mirar constantemente constantemente por encima del hombro de los estudiantes es exageradamente exagerado, es una violación de lo hablado (en el caso de las escuelas con códigos de honor) o una confianza tácita entre el instructor y el estudiante, y resta valor a Un buen ambiente de aprendizaje centrado, en primer lugar, en el contenido del curso y motivando el material. He descubierto que la mejor manera de disuadir a las trampas es diseñar un curso desafiante, pero accesible e inspirador.

Los estudiantes generalmente hacen trampa de dos maneras: (1) es trampa maliciosa y premeditada. Nunca me he encontrado con un estudiante interesado y motivado que participe en este tipo de trampas de docenas con las que he estado involucrado de una forma u otra. Por lo tanto, tener una buena clase y tener buenas relaciones entre instructor y alumno parece ser, con mucho, el mejor elemento de disuasión. (2) un estudiante se está volviendo loco en el último minuto porque la tarea no está completa el día en que se debe entregar la tarea, y por lo tanto, apresuradamente copia el código de alguien, haciendo algunos cambios para encubrir el trabajo. Este tipo de casos generalmente se detectan fácilmente con herramientas basadas en la comparación como MOSS. Entonces, por la pequeña ganancia que algo como esto le daría, y el tiempo que tomaría implementar y monitorear, además de los problemas éticos y de confianza, generalmente tiene más sentido dedicar tiempo a trabajar en el contenido y la presentación del curso.

Esta es una muy, muy buena idea: una solución simple a un problema muy extendido, y más o menos el equivalente al “mostrar tu trabajo” que tu maestro de primaria te hizo hacer en la clase de matemáticas.

El único inconveniente de esto que puedo ver es que el tiempo y el esfuerzo involucrados en enseñar a los estudiantes cómo usar el control de versiones, especialmente en las clases de primer año, donde es una tarea lo suficientemente difícil como para enseñarles a descifrar un rastro de pila y sangrar su codifique correctamente (sin siquiera tocar la batalla que tendría con el departamento de TI).

Para agregar otra capa de conocimiento requerido además de esto, creo que casi sería un puente demasiado lejos para al menos el 90% de los estudiantes típicos. Por estas razones, esta podría ser una solución más práctica para estudiantes de segundo o tercer año, donde estoy de acuerdo en que sería algo realmente útil para ellos aprender.

Finalmente, también agregaría que detectar trampas generalmente no es tan difícil. Dos o más trabajos similares se destacan como una luz de neón, y también generalmente tienes una muy buena idea de la habilidad de un estudiante antes de hacer la tarea. Sin embargo, si usaran un VCS, ciertamente sería mucho más fácil demostrar que realmente hubo trampa, algo que no es tan simple de lo contrario, y generalmente es el obstáculo que impide que se lleve a cabo cualquier acción contra los tramposos.

Participé en la enseñanza de un curso para estudiantes de MS de informática que usa Subversion para colaboración y presentación de tareas. Este semestre, con 115 estudiantes, detectamos 9 casos de trampas que involucraron a unos 20 estudiantes, por lo que hacer trampa es un gran problema. Hablamos mucho sobre la honestidad académica en la primera conferencia. Les decimos que sus confirmaciones SVN pueden proporcionar evidencia de que escribieron su propio código, y les exigimos que se comprometan a menudo, no menos que después de cada sesión de codificación. Además, no permitimos específicamente el uso de correo electrónico o dispositivos de almacenamiento portátiles para mover su código.

Desafortunadamente, muchos de ellos simplemente no lo entienden o no se dan cuenta hasta que el semestre casi ha terminado. Muchos de ellos se comprometen solo una vez a entregarnos su código. Tenía algunos que estaban trabajando fuera de su copia de trabajo, y luego, antes de registrar el código cambiado, svn rm editó los archivos antiguos y svn add los nuevos. Intentamos aplicar mejores prácticas de control de versiones, pero acoplarles varios puntos cada semana no es suficiente motivación, y cualquier cosa más allá de eso parecía excesivamente draconiana.

Si bien un estudiante que usa el control de fuente correctamente puede manejar eso como evidencia de que hizo su trabajo, no creo que tenga sentido usar el historial para detectar trampas por varias razones. Primero, mientras los estudiantes no entiendan cómo usarlo, cualquier análisis simple producirá demasiados falsos positivos para ser útiles. En segundo lugar, los patrones más comunes de trampa no implican una copia mayorista. La mayoría de las trampas son el resultado del pánico de última hora. Los estudiantes intentan hacer lo correcto, lo que significa que pueden construir un historial de control de fuente bastante bueno antes de pedirle a un compañero de habitación que les permita “mirar” la solución del compañero de habitación. Luego pueden copiar solo unas pocas porciones que no funcionan. Tercero, la detección de trampas basada en correlación funciona realmente bien . Los estudiantes pueden reordenar, renombrar e incluso hacer una refactorización simple, y todavía los atrapo. (Por supuesto, no sé cuántos extraño, pero en cualquier caso atrapo más de lo que me gustaría manejar).

Supongo que ocasionalmente podría ayudar a probar trampas, pero eso no es terriblemente difícil la mayor parte del tiempo. Suele haber pistas obvias, como la coincidencia de espacios en blanco al final, incluso cuando piensan que han hecho un buen trabajo ocultando las cosas. En realidad, tener que demostrar que no aparece con frecuencia, ya que generalmente no es demasiado difícil obtener una confesión. Este semestre, obtuvimos nueve confesiones en nueve casos.