Un representador es un programa que toma la solución de un estudiante y devuelve una representación normalizada de ella. Luego usamos estas representaciones para optimizar la retroalimentación automatizada y la clasificación.
Un ejemplo ayuda a explicar mejor los representadores. Supongamos que dos estudiantes envían dos soluciones al ejercicio hello-world en Ruby:
# Student 1's submission
def self.hello(name = 'World')
"Hello, #{name}!"
end
# Student 2's submission
def self.hello(nom = 'World')
"Hello, #{nom}!"
end
Aunque el código de estas soluciones es diferente (distinta sangría, distintos nombres de variables y distinta sintaxis de string), en esencia son iguales. Así que, al crear una representación normalizada de ellas, podemos tratarlas como iguales a la hora de proporcionar retroalimentación. Esto reduce drásticamente la cantidad de mentoría duplicada que se necesita.
Cada track mantiene su propio representador, específico para ese lenguaje. No hay una salida estandarizada: solo pedimos que cada track sea coherente internamente.
Si te interesa crear un representador, consulta la documentación sobre representadores para obtener más información.