Script MATLAB para generar ejercicios/exámenes diferentes para cientos de alumnos

¡Compártelo!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Algunas veces hay que preparar ejercicios a realizar por alumnos en casa y cuya realización se evalúa, por lo que es deseable evitar (¡dentro de lo posible!) que se copien los resultados entre ellos. (*)

En muchos casos, sobre todo en ingeniería y ciencias, los problemas tendrán una serie de datos (que llamaré los parámetros del problema) de los cuales se pueden dejar unos fijos y variar otros. Por ejemplo, valores de una magnitud, la fórmula química de un compuesto, un método de resolución de entre un conjunto de posibilidades, etc.
Hoy voy a explicar una manera de decidir cuántos parámetros variar y de qué forma para asegurar que no existan dos ejercicios iguales, sin importar el número de alumnos.

Sea el número de alumnos N, y K el número de parámetros que queremos que varíen entre problemas individuales. Podría haber más parámetros, pero esos serán fijos y comunes para todos los alumnos.
Cada parámetro tendrá una serie de valores distintos. El primero tendrá n1 valores, el segundo n2 y el último nK. La idea es acabar con un reparto de problemas según esta estructura:

¿Qué tienen que cumplir los valores {n1,…,nK}?
Si queremos que todas las filas de la tabla sean distintas, se pueden buscar varias combinaciones, pero la que he escogido aquí es que todos los {n1,…,nK} sean números primos. Las combinaciones se repetirán después del mínimo común múltiplo de los {n1,…,nK}, que al ser primos es directamente Nmax= n1 · n2 · … · nK-1 · nK. El objetivo es que Nmax sea mayor o igual que el número de alumnos N.
En primera aproximación, todos los valores {n1,…,nK} deben estar en el orden de magnitud de:
n = N ^ (1/K)
Y como todos los {n1,…,nK} deben ser distintos, se puede usar n1 igual al primo más cercano a n, n2 igual al siguiente primo, y así sucesivamente. Esa sería una primera aproximación bastante conservadora. A partir de ahí, se puede ir retrocediendo de uno en uno a los primos más inferiores hasta que se encuentre la mínima secuencia de primos sucesivos {n1,…,nK} que cumpla que su producto es igual o superior a N, el número de alumnos.
En lugar de hacer todo esto a mano, ¡es más fácil usar un ordenador!. Por eso os dejo este script de MATLAB (compatible con Octave) que acepta dos argumentos. Invocándolo con:
repartoTareas(num_alumnos, num_parametros);
Dará una salida como esta:

Descargar script: repartoTareas.m
Espero que le sea útil a alguien más 🙂

(*) Una cosa es que los alumnos trabajen juntos y se ayuden entre sí para hacer ejercicios, estudiar, etc. Eso es una cosa buena. Pero lo que no está bien es que se puedan casi fotocopiar los resultados entre sí sin necesidad de entender absolutamente nada de lo que están haciendo.


¡Compártelo!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Etiquetado con: ,