A computer-implemented method according to various aspects of the present disclosure includes receiving, by a computer system, a selection of a programming goal; identifying a skill associated with the goal; and generating, by the computer system, a lesson module for teaching the skill, the lesson module including an ordered list of steps for presentation to a student to teach the skill.