¿Qué técnicas se pueden usar para evitar hacer trampa en las tareas de programación?

Solo hazlos opcionales. Entonces, las personas que de otra manera engañarían pueden saltearlos y seguir con su vida normal.

Más importante aún, diseñe los exámenes de tal manera que las personas que abandonan el proceso de aprendizaje fracasen miserablemente. En MIT, he visto esto hecho de dos maneras, las cuales son bastante efectivas.

  1. Para conceptos fáciles, imponga una restricción de tiempo desafiante. Puede saber rápidamente si alguien se practica al ver qué tan rápido puede resolver problemas fáciles. Por ejemplo, alguien que copia sus tareas de programación no tiene ninguna posibilidad en el infierno de resolver 10 problemas de 250 puntos de TopCoder Div2 en una sesión de 1 hora, mientras que alguien que constantemente pasa unas pocas horas / semana en problemas de práctica debería encontrarlo razonablemente fácil. Ambos estudiantes eventualmente pueden resolver los problemas, pero la velocidad y la fluidez de la ejecución solo vienen con la práctica repetitiva.
  2. Para conceptos más difíciles, requieren una visión. A veces, la experiencia valiosa al hacer la tarea no es el resultado final (es decir, lo que finalmente imprime el programa), sino los errores que se toman en el camino. Si puede destilar cuidadosamente un examen para requerir tales conocimientos, las personas que copian la solución y, por lo tanto, pierden el proceso, están jodidos. Para las clases introductorias, esto será difícil ya que las “ideas” son muy básicas. Para clases de nivel superior, definitivamente es posible. En particular, las clases de probabilidad castigan brutalmente a quienes solo leen soluciones a conjuntos de problemas. Sospecho que para las clases de programación, lo mismo es cierto para saber cuándo aplicar DP y recursividad.

En ambos casos, es posible que a algunas personas que hacen trampa en la tarea les vaya bien en los exámenes. Pero estas son las personas que menos le importan, claramente son competentes y sus exámenes son triviales para ellos. Obligarlos a hacer su tarea no solo es una pérdida de tiempo, sino también el tiempo de su TA para calificar. Para las personas que no están excesivamente calificadas, la elección de reducir los escombros en la tarea disminuye sus posibilidades de salir bien en la clase. Si puede eliminar el incentivo para hacer trampa sin castigo, incluso los que no son éticos no querrán hacerlo.

EDITAR:

Quiero agregar que no defiendo este enfoque en la educación K12. En el sistema descrito anteriormente, el estudiante asume la responsabilidad final de sus calificaciones. Antes de la universidad, el maestro y el alumno comparten esta responsabilidad. En los sistemas escolares de bajo rendimiento, el enfoque de no intervención puede causar mucho dolor y arrepentimiento.

Presión social

Fui a una escuela donde la mayoría de los profesores daban exámenes cronometrados para llevar a casa. Que yo sepa, muy pocas personas hicieron trampa. Creo que esto se debió a que la gente sabía qué privilegio era tener esta confianza, por lo que hacer trampa se convirtió en un tabú social. En Caltech nunca vi a personas copiar conjuntos de soluciones o trabajar juntos en los exámenes. En otras escuelas, este comportamiento sería ampliamente aceptado y se hablaría abiertamente.

Si hacer trampa es parte de su cultura escolar, también podría hacer que la tarea sea un porcentaje muy pequeño de la calificación (alrededor del 15-20%). Muchos estudiantes harán toda la tarea de todos modos, y los tramposos no recibirían un gran impulso a su calificación final.

En su charla en PyCon Asia Pacific 2012, Chris Boesch habla sobre su experiencia en la implementación de la “enseñanza basada en torneos”. Recomiendo ver el video de la charla, ya que está lleno de ideas interesantes y divertidas. Los torneos de programación (a diferencia de la programación de tareas) recompensan a los estudiantes por tener una respuesta mejor que la de los demás. Los ganadores obtienen premios geniales y derechos de fanfarronear. Es posible que esto no evite todos los casos de trampa, pero alienta la diferenciación de respuestas y penaliza a quienes comparten sus respuestas.