¿Existen herramientas para evitar que los estudiantes hagan trampa en un examen de programación administrado en computadoras?

Estoy enseñando un curso de Introducción a la Informática, donde hacemos principalmente programación en C. Me han asignado un laboratorio para impartir el curso, pero hay más alumnos que ordenadores disponibles. Además, no tengo control sobre esas PC allí, y casi todos los estudiantes tienen derechos de administrador sobre ellas. También es común que los estudiantes traigan su computadora portátil al salón de clases y se conecten al Wi-Fi del campus, que no tengo ningún control.

Los exámenes son pequeños algoritmos para resolver, e inicialmente estaba planeando, al igual que otros profesores en el curso, permitir el uso de una computadora (del laboratorio o la suya propia) para que los estudiantes verifiquen la corrección de sus algoritmos. Sin embargo, en el estado actual de las cosas, creo que es bastante fácil hacer trampa para los estudiantes: podrían usar Facebook, correo electrónico o cualquier herramienta de Internet para intercambiar código fuente o información.

¿Existen herramientas de software que puedan ayudar a permitir el uso de una computadora y aún así evitar la colaboración no autorizada?

+1 El mismo problema existe (típicamente) en los componentes del laboratorio de física computacional. Con ganas de leer las respuestas.
Lo siento, pero esta pregunta parece estar fuera de tema para mí por dos razones. 1. ¿Existen herramientas de software que puedan ayudar a usar una computadora y evitar el plagio? Si está buscando software para evitar que sus alumnos hagan trampa; puede hacer su pregunta en SoftwareRecommendations.SE . 2. Su pregunta no es específicamente sobre la academia, ¿qué pasa con el gerente de una empresa que quiere evaluar a sus empleados a través de un examen basado en computadora?
Esta pregunta parece estar fuera de tema porque es una solicitud de compra de software. Pruebe las recomendaciones de software , pero vea su meta primero, para obtener pautas sobre cómo preguntar, allí.
Esta pregunta podría ayudarte ya que se trata de software de plagio aunque no es para programar.
@Enthusiastic según esta meta publicación , la comunidad no considera las preguntas de software como inherentemente fuera de tema, si de lo contrario son preguntas correctas (enfocadas, no demasiado amplias)
Si su empleador no le brinda las instalaciones correctas, no es culpa suya y no puede ser responsable de las consecuencias de no tener las instalaciones correctas (suponiendo que las haya solicitado). En última instancia, todo lo que puede hacer es estar lo más atento posible y preguntar regularmente a los estudiantes qué está haciendo su código para asegurarse de que sepan lo que hace y que tengan confianza en lo que está haciendo.
Los exámenes son pequeños algoritmos para resolver, e inicialmente estaba planeando... permitir el uso de una computadora... para que los estudiantes verificaran la corrección de sus algoritmos. - ¿Por qué? ¿No deberían los estudiantes ser capaces de averiguar por sí mismos, antes de implementarlos, si sus algoritmos son correctos?
Totalmente en desacuerdo con los votos cerrados. Esta es una pregunta sobre la pedagogía de la informática , no solo sobre recomendaciones de software. Las preguntas pedagógicas están firmemente en el tema.
Examen escrito. En serio. Estás enseñando informática ( o eso dices) no alfabetización informática.
Conozco a algunos profesores que usan un programa llamado navegador bloqueado... Sin embargo, realmente no sé si funcionaría con las computadoras de los estudiantes. Si hubiera suficientes computadoras en el laboratorio, también podría desconectar el cable de ethernet... espero que ayude
Si usan su propia computadora, ciertamente nunca debería considerar forzarlos a instalar software allí...
Es posible que desee buscar 'PRAKTOMAT' en Google para ver qué es posible. Aunque creo que este proyecto está relacionado con Java, puede ayudarlo con su evaluación.
¿Me harías un favor? Cualquiera que encuentres 'engañando', envíalo a mi manera. En el mundo real de la programación lo llamamos 'resolución de problemas' y no puedo encontrar suficiente.
No se me permite responder directamente por alguna razón; sin embargo, se me permite comentar. Este problema no tiene solución. Las no soluciones comerciales hacen cosas desagradables a la máquina en cuestión, mientras que los tramposos simplemente han aprendido a usar otra computadora o teléfono móvil y escriben la respuesta.
A veces, un enfoque psicológico funciona mejor. Debe decirle a su estudiante que "MOSS" sus respuestas para encontrar un código similar: teoría.stanford.edu/~aiken /moss (como alguien señaló a continuación) Esto disuadirá la colaboración.
Un punto importante: los exámenes suelen tener un tiempo crítico, al menos en mis cursos siempre estábamos al límite para terminar todas las preguntas en el tiempo determinado. Por lo tanto, no necesita nada especial para que sea imposible que hagan trampa, solo hágalo un poco difícil y consuma mucho tiempo, ¡y la mayoría de las personas no se molestarán y preferirán invertir su valioso tiempo en resolver problemas!
'casi todos los estudiantes tienen derechos de administrador', entonces no hay nada en el software que pueda hacer. Puede resolver esto a nivel de red con firewalls apropiados, pero eso no lo ayudará si el estudiante usa su propio dispositivo y se conecta a una red que no controla, entonces en lo que respecta a las soluciones técnicas, no tiene opciones reales. . Derechos de administrador == haz lo que quieras con la computadora.

Respuestas (9)

En mi universidad en el Reino Unido tenemos dos tipos de evaluación para los cursos de programación. 'Prácticas' de aprobación/reprobación en las que a los estudiantes se les asignan tareas de programación y se les permite explícitamente discutirlas entre ellos y buscar en línea. Cuando el estudiante esté listo para enviar su solución, un demostrador la revisará y hará preguntas, etc. para asegurarse de que el estudiante comprenda por qué escribió el código que escribió. Los estudiantes no obtienen una calificación por esto que cuente para su calificación general del año, pero se les exige que "aprueben" las prácticas para poder aprobar el año.

Luego están los exámenes escritos sin acceso a la computadora. Hay preguntas del tipo 'escriba algún código que resuelva este problema', y también más conceptuales '¿por qué es este el caso? ¿Cuándo usarías eso? preguntas. Para los bits de 'escribir código', los marcadores deducirán muy pocos puntos por errores de sintaxis simples y cosas por el estilo. La pregunta no es tanto '¿puede el estudiante escribir un programa que se compile en el primer intento?' como '¿puede el alumno idear un buen algoritmo que resuelva el problema y proporcione una expresión razonable del mismo en código?'. Tenga en cuenta que estos cursos (en mi universidad) nunca son para idiomas específicos; son cursos como 'programación funcional' o 'programación orientada a objetos' o 'aprendizaje automático', cada uno de los cuales utilizará un lenguaje particular,

Esto también alienta a los estudiantes a aprender formas de diseñar y escribir programas comprobablemente correctos: si pueden razonar sobre los programas en un nivel más profundo que la intuición, entonces escribir programas en papel es una mejor prueba de esto que permitirles experimentar y probar hasta el resultado. se ve bien' por las entradas que le han dado.

Esta parece ser una buena manera de evitar hacer trampa en las calificaciones importantes y fomentar una comprensión sólida del material importante del curso. Dicho esto, ¡muchos estudiantes odian tener que escribir código en papel sin acceso a SO o un compilador!

Habiéndome graduado de una universidad del Reino Unido donde tuvimos prácticas de aprobado/reprobado y exámenes escritos a mano, tengo que estar en desacuerdo con su último párrafo. No lo odiaba porque no tuviera acceso a Internet, lo odiaba porque una hoja de papel no es un buen IDE. A menudo me tomó 3-4 ciclos de "escribir un código -> ver una deficiencia que se puede corregir con una línea en el medio -> reescribir todo el ejercicio, porque no hay espacio". Esto es trivial de hacer incluso en el Bloc de notas, pero tan frustrante y lento en papel. Sin embargo, no puedo imaginarme a los supervisores aceptando un examen con ningún tipo de electrónica.
También común en Estados Unidos, e incluso en partes técnicas de entrevistas de trabajo. 2 de mis últimos 4 me hicieron escribir en papel o pizarra cómo haría ciertas acciones en un idioma, y ​​el último básicamente me hizo preguntas específicas del idioma. No tiene que compilar, ¡pero debería tener sentido!
Con respecto a las preguntas "¿por qué es este el caso?": Siempre odio cuando mi profesor hace una pregunta como "¿por qué se compila este código?" porque mi respuesta siempre es "¡porque no hay error!" :)Si vas a preguntar "¿Por qué ___ hace ___?" tipo de preguntas, por favor hágalas en un formulario que solo tenga una respuesta específica.
Mi universidad en Nueva Zelanda también se parecía mucho a esto, hasta las clases que usaban el idioma que les apetecía, excepto sin ningún componente de "razonamiento" o interacción directa con las personas que marcaban. Recuerdo que no me gustaba escribir código en papel en ese momento. Sin embargo, después de estar en el mundo real por un tiempo, descubrí que los exámenes universitarios son el único lugar donde querrías que un programador trabajara solo sin acceso a Internet. No es la mejor preparación para la realidad.
+1, esta puede ser una clase de introducción a CS, ¡pero eso solo significa que es el mejor momento para enseñar a los estudiantes que CS no se trata realmente de computadoras!
@Magus: pero entonces, los exámenes no están destinados a preparar a los estudiantes para la realidad, incluso si el curso que están examinando lo fue. Las formas en que se evalúa a los programadores en realidad probablemente no sean adecuadas para la evaluación de estudiantes universitarios, aunque sería divertido intentarlo. Ponga a 8 estudiantes en una sala con una base de código de ubicación de 200k y un montón de historias de usuarios, y dígales que tienen 2 semanas para cerrar tantas solicitudes de funciones pendientes como sea posible a satisfacción del equipo de control de calidad ;-)

Considere dos cosas que son (casi) exclusivas de la informática:

  • investigar métodos de programación en Internet es una práctica estándar, siendo stackexchange.com el número 1 para muchas búsquedas. Requerir que alguien memorice los detalles no es una práctica de la industria. No consideraría aceptar un trabajo de programación en ningún lugar que diga "sin acceso a Internet". Y presiono las referencias de función 10 veces al día para verificar cosas como nombre_función versus nombre_función o reemplazar (aguja, pajar) / reemplazar (pajar, aguja) dolores de cabeza.

  • Es bastante probable que 10 estudiantes devuelvan resultados casi idénticos para algoritmos simples. Simplemente no hay muchas formas de responder "escribir una función para promediar los valores en una matriz". Veamos: bucle, suma, cuenta. vars i, s, c. Si enseñó el formato de código estándar, es muy posible que obtenga 8/10 respuestas absolutamente idénticas pero cero trampas. Este es un problema común para los procesadores de trampas/plagios que no están ajustados para CS.

Buena suerte, y vuelve con cualquier solución que te haya resultado.

"Es muy probable que 10 estudiantes devuelvan resultados casi idénticos para algoritmos simples". No subestimes la imaginación de los estudiantes ;-)
"Exigir que alguien memorice los detalles no es una práctica de la industria". Hmmm ... exigir que el estudiante conozca la sintaxis y el idioma del idioma es una práctica estándar. Así mismo para conocer las características identificativas y aplicaciones más comunes de estructuras de datos y algoritmos estudiados en una clase introductoria.
Con un límite de tiempo estricto, no hay tiempo suficiente para buscar todo en Google.
@dmckee - modismos, seguro. Pero sintaxis? Busco sintaxis en Google todos los días y se me considera uno de los mejores programadores, si no el mejor, de mi empresa.
Él está enseñando c. No lo uso regularmente y lo único que necesito buscar es la precedencia de los operadores menos utilizados. Estoy de acuerdo en que es posible que deba buscar la sintaxis en un idioma grande, pero c es tan pequeño que podría llamarlo "lindo". Bueno, también busco la sintaxis del puntero de función si (FSM no lo permita) tengo que ir por ese camino.
@MassimoOrtolano, como alguien que ha calificado el trabajo de estudiantes de informática de primer año, Peter está muy concentrado. Me resultó fácil calificar las tareas rápidamente, ya que casi todas eran iguales. "Sí, este es igual que el anterior, ¡100%!" Obviamente, no todos los estudiantes tenían un código idéntico carácter por carácter, pero las similitudes fueron sorprendentes en el transcurso de los 3 años que hice el trabajo. Solo tuve que iniciar una investigación por mala conducta académica durante todo el período, y resultó ser un simple error con una imprenta comunal.
@BrianS: En realidad, su comentario contiene indirectamente varios puntos interesantes que valdría la pena discutir, que también dependen del país, pero esto llevaría la discusión demasiado lejos. Todo lo que puedo decir aquí es que en mi primer examen como profesor, antes de calificar los trabajos, preparé una tabla enumerando lo que pensé que serían errores concebibles, con las marcas correspondientes a restar; hoy, unos 15 años después, es evidente que siempre he fallado en predecir posibles errores y que la imaginación de los alumnos está mucho más desarrollada que la mía. PD: Estoy en un campo diferente de CS.
@peter: "No consideraría aceptar un trabajo de programación en ningún lugar que dijera "sin acceso a Internet"", aunque hay algunos trabajos bastante respetables en los que el acceso a Internet es un esfuerzo tan importante que tienes que dejar de hacerlo por razones triviales. Por ejemplo, una empresa AV puede tener un laboratorio sin acceso a Internet, punto final. Si quieres buscar algo, pasas por seguridad y usas una máquina diferente. O quizás sea algo más relajado, con dos máquinas diferentes que al menos estén en la misma habitación.
@SteveJessop No tendría ninguna objeción a una política de seguridad que dijera "este cuadro es para codificar, este otro cuadro es para Internet". Funciona para mí, funciona para ellos, muestra que tienen un buen sentido del equilibrio.

En una de mis asignaturas de programación, nos permitieron los apuntes de clase, nuestros propios ejercicios resueltos e internet; pero no hay comunicación con otros estudiantes (correo electrónico, facebook...). Realmente no había nada que los bloqueara, solo el profesor deambulando.

Realmente, no es tan difícil de verificar: un estudiante debe estar la mayor parte del tiempo trabajando en el IDE, y solo navegando esporádicamente. Si alguien parece navegar demasiado, puede hacer una inspección más cercana. GMail o Facebook brillarán descaradamente en la pantalla.

Por supuesto, puede ser más astuto, como usar Lynx para ingresar su correo. Pero realmente, si puedes hacer eso, probablemente puedas escribir un algoritmo simple sin hacer trampa.

Es muy fácil intercambiar código entre los estudiantes o incluso con un tutor externo. Todo lo que un estudiante tiene que hacer es guardar un archivo en el buzón, Google Drive... que se comparte. Ningún maestro que camine por el salón se dará cuenta.

Aunque es posible que no cuente esto como una herramienta de software: una distribución en vivo de Linux personalizada, que se inicia directamente desde un medio extraíble y contiene solo las herramientas de desarrollo necesarias (sin navegador, tal vez incluso elimine los controladores de ethernet/wifi) lo haría; solo haz que lo arranquen para el examen.

(Si alguien es capaz, dentro del límite de tiempo y con las herramientas provistas, de escribir los controladores y un navegador, no solo obtiene una calificación aprobatoria sino también una oferta de trabajo).

Sí, un Linux personalizado cuenta como una herramienta de software. O herramientas, si quieres profundizar más. Además, si desea profundizar más, coloque Linux en un medio regrabable y configure el IDE para escribir en ese medio. Luego, los estudiantes pueden entregar los medios al final de la tarea si lo desean. Desactive también el montaje de los discos duros.
Nuestro administrador simplemente bloqueó la distribución de Linux instalada, deshabilitando las rutas de red no locales (y esto fue en un curso de redes, por lo que necesitábamos acceso a servidores específicos para probar nuestro trabajo). Por supuesto, los estudiantes no tenían derechos de administrador, eso suena como una muy mala idea...

La solución empleada por mi profesor es permitir el libro de texto en el aula (o cualquier otra hoja de papel), pero sin acceso a Internet; ni siquiera el acceso a la computadora. Todo el examen fue en papel.

El examen en sí era para desarrollar algunos algoritmos, o tal vez crear algunas clases; cosas para las que el libro de texto es inútil, pero aún así te da la oportunidad de buscar nombres y conceptos básicos.

Como estudiante, creo que no hay nada de malo en este método. Por supuesto, otros pueden estar en desacuerdo.

+1 Estaba a punto de sugerir papel. Creo que hacer que los estudiantes hagan algunos exámenes de computación en papel es un buen método de enseñanza. Además de prevenir las trampas, ayuda a desafiar la dependencia excesiva del mundo moderno en Internet (sin decir que soy mejor, por supuesto). También es una excelente manera de asegurarse de que los estudiantes hayan estado asimilando el conocimiento; los estudiantes no pueden esperar usar Internet cada 5 minutos si obtienen un trabajo de programación real; tendrán que saberlo de memoria.
Este. De todos modos, no aprenderán programación del mundo real en la universidad, entonces, ¿por qué molestarse? Enséñeles los conceptos e ignore los "errores" de sintaxis.

Las facultades de derecho han estado resolviendo este problema durante muchos años al hacer que los estudiantes compren software para exámenes que bloquea sus sistemas y solo les permite usar el software de examen durante el tiempo de examen. Sin embargo, ha habido problemas . Además, los exámenes de la facultad de derecho son generalmente ensayos u otras preguntas no funcionales, mientras que un examen de programación también podría requerir un compilador. No tengo conocimiento de una versión de esto que exista para permitir un editor de texto, terminal y compilador.

¿Los estudiantes tienen que pagar por un software que realiza una función que uno esperaría de un virus? Creo que prefiero escribir mi ensayo sobre la mesa con sangre.
@Pharap, no hace tal cosa. No me gusta la práctica, pero es un dispositivo anti-trampa bastante efectivo que permite a los estudiantes escribir un ensayo en un dispositivo con el que están familiarizados. Es razonablemente eficiente y hace que calificar sea más fácil que pasar por exámenes escritos a mano escritos a toda prisa. Si tiene una solución mejor, puede ganar algo de dinero.
Diría que la capacidad de bloquear un sistema es algo que sería algo beneficioso para un virus. Si se trata simplemente de un procesador de textos/paquete ofimático de pantalla completa que no se cierra hasta que haya transcurrido una cierta cantidad de tiempo, eso no es tan malo. Personalmente, sigo pensando que no hay sustituto para hacer que los estudiantes usen las computadoras proporcionadas (con dichas computadoras con una estricta gestión de derechos aplicada).
@Pharap, el sello distintivo de un virus es que su invocación no es voluntaria y que tiene un propósito malicioso. Ser capaz de ejecutar también es beneficioso para un virus, pero no todos los ejecutables son virus. El simple hecho de no poder dejar de fumar no es suficiente para evitar hacer trampa; el resto de la máquina también debe bloquearse. Algunos permiten que se realicen exámenes con lápiz y papel si no tiene el software, pero la mayoría de los estudiantes en estos días trabajan de manera más efectiva en su propio teclado. Tener suficientes laboratorios llenos de computadoras para los exámenes de la facultad de derecho y no mucho más es un costo prohibitivo para muchas facultades de derecho.
Claro, Blackboard CMS proporciona un navegador bloqueado (utilizado para realizar pruebas y exámenes) que tiene un propósito similar: solo se puede acceder al navegador.

¿Existen herramientas de software que puedan ayudar a usar una computadora y evitar el plagio?

No puedo responder a la pregunta anterior y me sorprendería la efectividad de tal herramienta. Entonces, sugiero otra solución: haga los exámenes en papel, escanee los documentos al final de los exámenes, envíe las copias a los estudiantes y déles un par de días para depurar sus programas. Las diferencias entre la versión en papel y la de trabajo pueden así tenerse en cuenta para decidir la nota final.

Por favor, no. Ya estamos produciendo muchos "programadores" que no pueden programar de por vida. Déjelos usar literatura durante el examen, pueden usarla en el lugar de trabajo de todos modos...
@Davor No he escrito nada sobre no permitir que los estudiantes usen literatura durante el examen. De hecho, no podrán utilizar la literatura en línea, pero seguramente podrán traer sus propios libros al examen.
Ya estamos produciendo muchos "programadores" que no pueden programar de por vida. Permítales usar literatura durante el examen, pueden usarla en el lugar de trabajo de todos modos. - Oh, la ironía.
Si el objetivo de diseño de un curso de ciencias de la computación es producir artesanos (programadores), entonces algo anda muy mal.
@Raphael Al igual que con muchas disciplinas, CS tiene programas que tienen varios objetivos. Uno, por supuesto, es avanzar en el estado del arte, pero como efecto secundario se convierte en un cuerpo de personas que encontrarán trabajo como programadores pero (con suerte) aportarán un conocimiento teórico más profundo que sus pares menos educados. Una gran cantidad de trabajo técnico se puede hacer muy bien con personas que tienen una educación y capacitación muy enfocada en la tarea, pero a menudo es útil tener algunos pensadores profundos dando vueltas por el lugar.
@dmckee Si bien estoy de acuerdo con su última oración, la implicación "los informáticos a veces trabajan como programadores, por lo tanto, tenemos que enseñarles a programar" es una falacia. ¿Enseña a los ingenieros mecánicos a soldar oa los ingenieros eléctricos a soldar? (No creo que debamos discutir esto más aquí, ya que nos aleja del tema de la pregunta).
@Davor Sus suposiciones (y conclusiones) son incorrectas. Los aspirantes a programadores no tienen por qué estar en una universidad con orientación científica. ¿Por qué llamar a la torre de marfil y pedir un carpintero? Haga que los programadores enseñen a los futuros programadores (se llama "aprendizaje") y tanto su problema como el mío están resueltos. Es gracioso que supongas que los investigadores podrían hacer el trabajo.
@Raphael: el problema es que las universidades no tienen una orientación científica, solo profesores arrogantes individuales que encuentran que enseñar "artesanía" está por debajo de ellos. Y su sugerencia de que a los ingenieros de software se les enseñe como a los plomeros me dice cuánto no tiene idea de lo que está hablando. Una vez más, deténgase, por favor.
@Davor Tal vez necesites algo de experiencia intercultural. Su afirmación es definitivamente incorrecta aquí en Alemania. Incluso tenemos nuestra propia pista de educación superior para ciencias aplicadas, nuestras universidades están orientadas a la investigación. Pero de acuerdo, parece que no vale la pena "discutir" con usted, ya que no puede distinguir la diferencia entre programador, ingeniero de software e informático.
El objetivo de diseño de una educación en informática no debe ser enseñar programación, al igual que el objetivo de diseño de una literatura inglesa. la educación no debe ser para enseñar ortografía. Esas son simplemente la forma natural en que se expresa el contenido real de la educación. Y para permanecer en el tema, ¿prohibirías un Lit. estudiante de usar el corrector ortográfico en Word?!

Bueno, no he comprobado si existen herramientas de software reales para eso, pero les diré lo que solía hacer. El número de aproximaciones a una solución correcta es bastante limitado; si se trata de un problema de tipo examen, debe esperar recibir muchas respuestas casi idénticas, o incluso realmente idénticas, como señala @Peter . Pero

el ingenio del error es infinito, y la creatividad de los descarriados es ilimitada...

Así que errores + copiar = fácil de atrapar. Si desea mecanizar, verifique si hay errores de análisis/compilación iguales o similares, o opciones idénticas de identificadores de programas que no se compilan o ejecutan como se esperaba.

El problema parece ser la colaboración no autorizada (es decir, los estudiantes pueden ayudarse mutuamente compartiendo información), no necesariamente los estudiantes entregando un código idéntico.
Es difícil, si no imposible, detectar (o evitar) que los estudiantes conversen en el laboratorio de computación. El estudiante que entienda los conceptos entregará un código similar pero funcional (normal), el estudiante que no lo haga entregará un código roto similar, lo que debería generar una bandera roja.

Dos de estos programas son MOSS y JPlag:

http://theory.stanford.edu/~aiken/moss/

Moss (para una medida de similitud de software) es un sistema automático para determinar la similitud de los programas. Hasta la fecha, la principal aplicación de Moss ha sido la detección de plagio en las clases de programación. Desde su desarrollo en 1994, Moss ha sido muy eficaz en este papel. El algoritmo detrás de moss es una mejora significativa con respecto a otros algoritmos de detección de trampas (al menos, con respecto a los que conocemos).

http://jplag.ipd.kit.edu/

JPlag es un sistema que encuentra similitudes entre múltiples conjuntos de archivos de código fuente. De esta manera puede detectar el plagio de software. JPlag no solo compara bytes de texto, sino que conoce la sintaxis del lenguaje de programación y la estructura del programa y, por lo tanto, es robusto frente a muchos tipos de intentos de disfrazar similitudes entre archivos plagiados. JPlag actualmente es compatible con Java, C#, C, C++, Scheme y texto en lenguaje natural.

Se usaron herramientas similares a estas (no estoy seguro exactamente de cuáles) en las dos escuelas en las que he estado. Los estudiantes fueron atrapados y penalizados incluso después de que cambiaron el nombre de las variables y cambiaron el orden de las funciones en el archivo.

El problema parece ser la colaboración no autorizada (es decir, los estudiantes pueden ayudarse mutuamente compartiendo información), no necesariamente los estudiantes entregando un código idéntico.
Las soluciones a cualquier problema de examen de alcance razonable están destinadas a ser similares. La similitud sintáctica es, por lo tanto, un mal indicador de trampa.