Ejercicios de concepto


Los Ejercicios de concepto tienen como objetivo enseñar al estudiante las habilidades clave que necesita para trabajar con un lenguaje determinado. Cubren tanto cómo hacer cosas habituales en ese lenguaje (por ejemplo, cómo manipular strings) como cómo hacer cosas más específicas del lenguaje (por ejemplo, mónadas, POO, funciones de orden superior).

Los Ejercicios de concepto tienen las siguientes características:

  • Cada uno tiene un objetivo de aprendizaje claro.
  • Son específicos de cada lenguaje, no genéricos.
  • Se usan stubs y plantillas para evitar que el estudiante tenga que aprender o escribir código innecesario en los ejercicios.

Conceptos

Los ejercicios se desbloquean en función de los conceptos que se enseñan y se aprenden. Cada Ejercicio de concepto debe enseñar uno o más conceptos. También puede tener conceptos como requisitos previos, lo que significa que no se desbloqueará hasta que se hayan completado los Ejercicios de concepto que enseñan esos conceptos previos.

Dificultad

Los Ejercicios de concepto no deberían volverse intrínsecamente más difíciles a medida que avanza el track. Un desarrollador con experiencia en el lenguaje X debería poder completar todos los Ejercicios de concepto de ese track sin dedicar más de 5-10 minutos a resolver cada uno. Como cada ejercicio debe centrarse en que alguien use un concepto por primera vez, y dado que el desarrollador con experiencia ya entiende ese concepto en el lenguaje X, el ejercicio debería resultarle relativamente trivial. Es posible que los ejercicios posteriores les parezcan más difíciles a los desarrolladores que no estén familiarizados con el lenguaje X, pero solo porque el ejercicio posterior enseña un concepto que en sí mismo es más complicado (por ejemplo, la mayoría estaría de acuerdo en que aprender recursión por primera vez es un tema más complejo que trasladar un bucle de un lenguaje a otro).

Comentarios

Los Ejercicios de concepto no tienen mentoría. Cuando un estudiante envía una entrega que hace que los tests pasen en un Ejercicio de concepto, comprobamos si hay un Analyzer o un Representer que puedan dar comentarios. Si no hay ninguno, se aprueba la solución. Esto traslada la carga de la enseñanza al ejercicio, que debe ofrecer una vía clara para aprender el concepto que se enseña.