A Study of the Development of Students’ Visualizations of Program State during an OO Programming Course Jorma Sajaniemi, Marja Kuittinen, Taina Tikansalo University of Joensuu, Finland ICER07, 15-16.9.2007, Atlanta, GA, USA
Outline Introduction Study Results: Examples of drawings Analysis Overall approach Content elements at the end Content element development Common errors Conclusion
Introduction Novices’ understanding of OO programming: misconceptions of central concepts understanding of dynamic aspects ? understanding of the notional machine ? Notional machine well understood in imperative case novices’ abilities to use visualizations are good Novices’ ability to use OO visualizations: teachers’ drawings poorly understood unable to draw own pictures poor ability to utilize own visualizations The study: students’ own visualizations of program state ?
Study: Task ”Draw a picture that includes existing objects and methods and their relationships when the attached program is at the marked point of execution.” Unspecific instruction → participants report what they see important and salient (Pennington, 1987; Good & Brna, 2004) ”Program state” vs. ”existing objects ...” Participants also guided by lectures and textbooks Programs 32–39 LOC (1-3 classes)
Study: Visualization Tools Used Object Method call Object reference Class Jeliot OO metaphors
Study: Schedule Jeliot-Metaphor group Metaphor-Jeliot group Week Tool Use Drawing Task Week Tool Use Drawing Task 3rd Jeliot, prog A 3rd Metaphors, prog A 4th Jeliot, prog B 4th Metaphors, prog B 5th First, prog 1 5th First, prog 1 6th Metaphors, prog B 6th Jeliot, prog B 7th Metaphors, prog A 7th Jeliot, prog A 8th Second, prog 2 8th Second, prog 2 10th Third, prog 2 10th Third, prog 2
Study: Participants Mostly first-year CS students Course attended by 59 students (13 females) Tasks part of course duties 29-48 participants in each drawing task Assignment to group depended on students’ selection of lab exercise group
Results: The First Six Drawings What did we expect ? lecture style textbook style Jeliot style Metaphors style What did we see ?
The 1 st Drawing Object reference as a method call ”Object drive” Class ”Object main”
The 2 nd Drawing Method call All methods All objects Object reference
The 3 rd Drawing Application domain concept Active object Active method ”Train object” Attributes
The 4 th Drawing Objects that have been active ”Main program” Method call
The 5 th Drawing All objects Object reference All attributes All methods ”main” All objects
The 6 th Drawing Textual description of actions List of all objects List of all methods
Analysis Overall approach Content elements at the end Content element development Common errors
Overall Approach (1/6) Overall approaches characterized by central concept(s) subordinate concept(s) E.g., ”existing objects with subordinate active methods” 8 categories (A1..A8) Examples ...
Overall Approach (2/6) Existing objects with subordinate active methods (A2)
Overall Approach (3/6) Existing objects and all methods (A3)
Overall Approach (4/6) Classes with subordinate active code and objects (A5)
Overall Approach (5/6) Execution path with subordinate objects and methods (A7)
Overall Approach (6/6) % First Second Third Code Central Concepts Subordinate Concepts 15 22 7 A1 Existing objects 20 44 55 A2 -”- Active methods 44 19 10 A3 -”-, all methods 5 0 0 A4 All methods Effects on objects 0 0 3 A5 Classes Active code & objects 2 0 3 A6 Active object Important code 7 7 3 A7 Execution path Objects, methods 0 4 10 A8 Active exec. path -”-
Analysis Overall approach Content elements at the end Content element development Common errors
Element Analysis Technique Dynamic existence of an exited method (C18) Object (C6) Data type (C2) Method’s or constructor’s belonging to its class (C21) Dynamic existence of a parameter, id not visible (C27)
Content Elements, 3 rd Task (1/2) Classes 14%, objects 100% Attributes and their relationship to the object frequent Methods (past 48%, current 72%), constructors (7%), main (0%) → differences in mental representations of methods vs. constructors and main
Content Elements, 3 rd Task (2/2) Local variables with identifiers; parameters without identifiers → differences in ... Relationships between attributes/parameters/ local variables and the object/ method represented almost always , but ... local variables of the main method never attached to main but usually to the object they referred to !
Analysis Overall approach Content elements at the end Content element development Common errors
Content Element Development Existing objects, all methods (A3) → Existing objects with subordinate active methods (A2): static existence of methods 59% → 17% static existence of constructors 20% → 3% dynamic call graph of methods 5% → 55% Identifiers left out more often: object references (no id 24% → 62%) attributes (no id 17% → 52%) parameters (no id 46% → 55%)
Analysis Overall approach Content elements at the end Content element development Common errors
Common Errors (1/3) Wrong location of main method’s local variables Where is the main method located in students’ mental representations ?
Common Errors (2/3) owner_a.increaseFood(100); Wrong direction of the relationship between method dog1.hunger(5); and the associated object Students’ mental representations seem to possess various errors in how methods deal with attributes
Common Errors (3/3) Wrong direction of object references Breaks if object references do change
Conclusion Central findings: large variability of approaches mental representations not only grow—they also change over time problems with object-method relationships problems with the main method Future work: comparison with other institutions ways to improve students’ understanding of the OO notional machine
Recommend
More recommend