The difficulty of learning programming from lectures may well account for the widespread bad experiences students have with the introductory programming course. Learning pace is under the learner's control. You can pause any activity, repeat any section, or repeat the entire activity as often as you wish. Extensive navigation aides keep you oriented within the course. You always know what you have already covered, what you are currently learning, and what you are about to cover.
Many lessons employ discovery learning.
You discover concepts for yourself by working with an appropriately designed visualization or simulation tool. Concepts discovered yourself are much easier to recall and to integrate with what you already understand. Most activities use several communication channels to convey ideas. For example, narration is synchronized with the animated appearance of words and formulas or movement by a visualization tool.