Gli esercizi concettuali hanno l'obiettivo di insegnare a uno studente le competenze chiave necessarie per lavorare in un determinato linguaggio. Coprono sia come fare le cose comuni in quel linguaggio (ad esempio come manipolare le stringhe) sia come fare cose più specifiche del linguaggio (ad esempio monadi, OOP, funzioni di ordine superiore).
Gli esercizi concettuali hanno le seguenti caratteristiche:
Gli esercizi vengono sbloccati in base ai concetti insegnati e appresi. Ogni esercizio concettuale deve insegnare uno o più concetti. Può anche avere prerequisiti su altri concetti: in quel caso non viene sbloccato finché non sono stati completati gli esercizi concettuali che insegnano quei concetti prerequisiti.
Gli esercizi concettuali non dovrebbero diventare intrinsecamente più difficili man mano che si procede nel track. Uno sviluppatore esperto in Linguaggio X dovrebbe riuscire a completare tutti gli esercizi concettuali di quel track impiegando non più di 5-10 minuti per risolverne ciascuno. Dato che ogni esercizio dovrebbe concentrarsi sul far usare un concetto per la prima volta, e poiché lo sviluppatore esperto conosce già quel concetto in Linguaggio X, l'esercizio dovrebbe risultare relativamente banale per lui. Gli esercizi successivi possono sembrare più difficili a uno sviluppatore che non conosce il Linguaggio X, ma solo perché l'esercizio successivo insegna un concetto che di per sé è più complicato (per esempio, ai più sembrerà che imparare la ricorsione per la prima volta sia più complesso che rimappare un ciclo da un linguaggio a un altro).
Gli esercizi concettuali non prevedono il mentoring. Quando uno studente invia una soluzione che fa passare i test di un esercizio concettuale, verifichiamo se esiste un Analyzer o un Representer in grado di dare un feedback. Se non ce n'è nessuno, la soluzione viene approvata. Questo sposta l'onere dell'insegnamento sull'esercizio, che deve offrire un percorso chiaro per imparare il concetto in questione.