The teaching of computer programming can benefit from looking ahead towards the needs of experienced programmers, who routinely use 'industrial strength' programming environments. Two of the main attributes of such environments are (a) their ability to scale up to handle large examples and (b) the way they facilitate visualization of program execution. We describe our approach to software visualization, a collection of techniques which allows beginners to see the innards of program execution clearly and at the same time allows experts to view high level program abstraetious which help them home in quickly on buggy code. This approach can be combined with recent developments in Intelligent Tntoring Systems (ITSs) and has tile added benefit of allowing students to explore on their own using a discovery-based paradigm. We re-work some well known examples from the ITS community and show how our approach scales up to lmndle a more sophisticated problem involving a 7,500 fine operating sy.qtem.