개념 연습 문제는 특정 언어로 작업하는 데 필요한 핵심 기술을 학습자에게 가르치는 것을 목표로 해요. 그 언어에서 흔히 하는 일(예: 문자열 다루기)을 하는 방법과, 더 언어 특화된 것(예: 모나드, 객체 지향 프로그래밍(OOP), 고차 함수)을 하는 방법을 모두 다뤄요.
개념 연습 문제는 다음과 같은 특징이 있어요.
연습 문제는 가르치고 배운 개념을 기준으로 잠금이 해제돼요. 각 개념 연습 문제는 하나 이상의 개념을 가르쳐야 해요. 개념에 대한 선수 요건이 있을 수도 있는데, 이 경우 그 선수 개념을 가르치는 개념 연습 문제를 모두 완료하기 전까지는 잠금이 해제되지 않아요.
개념 연습 문제는 트랙이 진행될수록 본질적으로 더 어려워지면 안 돼요. X 언어에 능숙한 개발자라면 그 트랙의 모든 개념 연습 문제를 각각 5~10분 안에 풀면서 끝낼 수 있어야 해요. 각 연습 문제는 누군가가 어떤 개념을 처음으로 사용해 보도록 하는 데 초점을 맞추고 있고, 숙련된 개발자는 이미 X 언어에서 그 개념을 이해하고 있으므로, 그런 개발자에게는 연습 문제가 비교적 사소하게 느껴져야 해요. X 언어에 익숙하지 않은 개발자에게는 뒤에 나오는 연습 문제가 더 어렵게 느껴질 수도 있는데, 이는 그 문제가 가르치는 개념 자체가 더 복잡하기 때문일 뿐이에요(예를 들어, 재귀는 처음 배울 때 다른 언어로 옮겨 쓰는 루프보다 더 복잡한 주제라고 대부분의 사람이 동의할 거예요).
개념 연습 문제는 멘토링을 받지 않아요. 학습자가 개념 연습 문제의 테스트를 통과하는 답안을 제출하면, 저희는 피드백을 줄 Analyzer나 Representer가 있는지 확인해요. 없으면 그 풀이는 승인돼요. 이렇게 하면 가르치는 부담이 연습 문제로 옮겨 가는데, 연습 문제는 가르치는 개념을 배울 수 있는 명확한 경로를 제공해야 해요.