Os Exercícios de conceito têm como objetivo ensinar ao estudante as competências essenciais para trabalhar numa determinada linguagem. Abordam tanto as tarefas comuns nessa linguagem (por exemplo, como manipular strings) como as tarefas mais específicas da linguagem (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 tem de ensinar um ou mais conceitos. Também pode ter pré-requisitos de conceitos, ou seja, só é desbloqueado quando estiverem concluídos os Exercícios de conceito que ensinam esses conceitos pré-requisitos.
Os Exercícios de conceito não devem tornar-se intrinsecamente mais difíceis à medida que o percurso avança. Um programador experiente na linguagem X deve conseguir fazer todos os Exercícios de conceito desse percurso sem dedicar mais de 5 a 10 minutos a resolver cada um. Como cada exercício deve centrar-se em levar alguém a usar um conceito pela primeira vez, e como o programador experiente já compreende esse conceito na linguagem X, o exercício deve parecer-lhe relativamente trivial. Os exercícios mais avançados podem parecer mais difíceis a um programador que não conheça a linguagem X, mas apenas porque o exercício em questão ensina um conceito que, por si só, é mais complicado (por exemplo, a maioria das pessoas concordaria que a recursão é um tema mais complexo de aprender pela primeira vez do que um ciclo é de transportar de uma linguagem para outra).
Os Exercícios de conceito não têm mentoria. Quando um estudante submete uma solução e os testes de um Exercício de conceito passam, verificamos se há um Analisador ou um Representador para dar feedback. Se não houver, a solução é aprovada. Isto transfere o ónus do ensino para o exercício, que tem de proporcionar um caminho claro para a aprendizagem do conceito que está a ser ensinado.