Ejercicios de conceptos


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

Los ejercicios de conceptos tienen las siguientes características:

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

Conceptos

Los ejercicios se desbloquean según los conceptos que se enseñan y se aprenden. Cada ejercicio de conceptos debe enseñar uno o más conceptos. También puede tener requisitos previos de conceptos, lo que significa que no se desbloqueará hasta que se hayan completado los ejercicios de conceptos que enseñan esos conceptos previos.

Dificultad

Los ejercicios de conceptos 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 resolver todos los ejercicios de conceptos de ese track dedicando como máximo entre 5 y 10 minutos a cada uno. Como cada ejercicio debe estar enfocado en lograr que alguien use un concepto por primera vez, y como el desarrollador con experiencia ya entiende ese concepto en el lenguaje X, el ejercicio debería resultarle relativamente trivial. Los ejercicios posteriores pueden resultarle más difíciles a un desarrollador que no esté familiarizado 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 remapear un bucle de un lenguaje a otro).

Retroalimentación

Los ejercicios de conceptos no se mentorizan. Cuando un estudiante envía una solución que hace que las pruebas pasen en un ejercicio de conceptos, buscamos un Analyzer o un Representer que dé retroalimentación. Si no se encuentra ninguno, la solución se aprueba. Esto traslada la carga de la enseñanza al ejercicio, que debe ofrecer una ruta clara para aprender el concepto que se enseña.