Os Exercícios de Conceito têm como objetivo ensinar ao estudante as habilidades essenciais para trabalhar em uma determinada linguagem. Eles abordam tanto como fazer coisas comuns nessa linguagem (por exemplo, como manipular strings) quanto como fazer coisas mais específicas dela (por exemplo, mônadas, POO, funções de ordem superior).
Os Exercícios de Conceito têm as seguintes características:
Os exercícios são desbloqueados com base nos conceitos ensinados e aprendidos. Cada Exercício de Conceito deve ensinar um ou mais conceitos. Ele também pode ter pré-requisitos em Conceitos, o que significa que só será desbloqueado quando os Exercícios de Conceito que ensinam esses conceitos pré-requisito tiverem sido concluídos.
Os Exercícios de Conceito não devem ficar inerentemente mais difíceis conforme a trilha avança. Um desenvolvedor experiente na linguagem X deve conseguir fazer todos os Exercícios de Conceito dessa trilha gastando no máximo 5 a 10 minutos para resolver cada um. Como cada exercício deve ter o foco em fazer alguém usar um conceito pela primeira vez, e como o desenvolvedor experiente já entende esse conceito na linguagem X, o exercício deve parecer relativamente trivial para ele. Exercícios mais avançados podem parecer mais difíceis para um desenvolvedor que não conhece a linguagem X, mas só porque o exercício mais avançado ensina um conceito que, por si só, é mais complicado (por exemplo, a maioria das pessoas concordaria que recursão é um tópico mais complexo de aprender pela primeira vez do que um laço é de remapear de uma linguagem para outra).
Os Exercícios de Conceito não têm mentoria. Quando um estudante envia uma solução que faz os testes passarem em um Exercício de Conceito, verificamos se há um Analyzer ou um Representer para dar feedback. Se nenhum for encontrado, a solução é aprovada. Isso transfere o peso do ensino para o exercício, que precisa oferecer um caminho claro para aprender o conceito que está sendo ensinado.