a study of the development of students' visualizations of program state during an elementary object-oriented programming course
Students' understanding of object-oriented program execution was studied by asking students to draw a picture of a program state at a specific moment. Students were given minimal instructions on what to include in their drawings in order to see what they considered to be central concepts and relationships in program execution. Three drawing tasks were given at different phases of an elementary OO programming course where two animation tools were used for program visualization. The drawings were analyzed for their overall approaches and their detailed contents. There was a large variability in the overall approaches and the popularity of various approaches changed during the course. The results indicate that students' mental representations of OO concepts and program execution do not only grow as new material is covered in teaching, but they do also change. The first drawings treat methods as having primarily a static existence; later methods are seen as dynamic invocations that call each other. The role of classes in program execution fluctuates during learning indicating problems in locating the notion of class with respect to, e.g., objects. Two major sources of problems that manifested in many different forms were the relationship between object and method, and the role of the main method with respect to program state. Other problems were caused by too simplistic understanding of object identification and improper use of application domain knowledge.
visualization program state object-oriented programming mental representation cs1/2