Teaching programming: a new approach based on analysis skills

A new approach is described to the teaching of introductory computer programming and computer science (the CS1 course). The approach is based on a new view of what “programming” is fundamentally about. The central feature of the approach is the teaching of skills in <italic>program analysis</italic> along with the traditional emphasis on skills in <italic>program synthesis</italic>. The approach was class tested in an earlier version in 1986, and the difficulties encountered in the class test led to two supporting changes in the course content: (1) <italic>data structures</italic> are introduced at the beginning of the course, and (2) the concept of <italic>program state</italic> is introduced as a key element in understanding programs.