This NATO volume in the Special Programme on Advanced Educational Technology presents several cognitive models and intelligent environments for learning programming. It discusses the relations between learning models and environments and the interdependence of various aspects of learning, and shows there is probably no single path from novice to expert.