Software is increasingly pervasive in the products we use. Consequently, more programmers are needed to develop the software, and consequently there is unmet demand on programming instructors. One possible solution to the increased demand is to complement human teaching with automated computer tutoring. Several examples of such computer tutors for programming already exist, however they have not found widespread success. In the operational world, there are several job-aids that support programmers in the field. Some of these jobaids reflect similar principles used in training tools, particularly scaffolding. Finally, several researchers in the realm of programming instruction indicate the importance of using a problem-based learning approach, or integrating learning and performance for learners. Thus, the paper concludes with questions revolving around how computer tutoring for programming may be enhanced, and lead to greater success, by developing an approach that similarly integrate...