« "When Novices Elicit Knowledge: Question Asking in Designing, Evaluating, and Learning to Use Software" | Main | Progress Report: Week 2 »
April 17, 2005
"The Case for Case Studies of Programming Problems" by Marcia C. Linn & Michael J. Clancy
This article describes how programmers organize programming knowledge, analyze how program design skills are commonly taught, and describes the effectiveness of case studies. Case studies are used in an experiment to highlight effective and ineffective strategies for solving programming problems. It emphasizes teaching students design skills by applying general skills to specific domains in order to solve programming-specific problems. An experiment tested the effectiveness of case studies in 10 pre-college Pascal classes. Three conditions were met by the instructors in a random order. The conditions were: Providing a student solution and looking at expert code, providing a student solution plus expert commentary and expert code, and providing expert commentary and expert code.
Results of the experiment:
Students who received the expert commentary learned more about program design than did students who received the expert code without the commentary. Students who implemented their own solution to the problem and then studied the expert commentary learned no more about designing the solution to a computer problem than those who had the expert commentary alone. The students who didn't study the expert commentary were the least successful in the study. Given the fact that most pre-college students normally try to avoid reading, the results show strong evidence for expert commentary. Finally, students need more than just expert code to assist them in learning design skills.
Other highlights from the reading include:
Students organize programming knowledge in terms of language syntax, often causing fragmented knowledge and leading to an engagement of trial and error. Syntax and top-down learning are often used because that's how it is presented to them. There is no emphasis of recognizing & reusing patterns.
Experts organize programming knowledge in larger conceptual structures. Programs are often thought out in plans with goals in mind. Larger programs require combinations of plans. Templates are applied to reocurring problems and competent programmers use top-down, bottom-up, middle-out, and mixes of these styles to design programs.
What's relevant:
Expert commentary helps students at varied ability levels to design more effective programs in case studies. The study found that students complained when they had to read long commentary from experts, but I'm not sure how well highschool student compare with college students. The usage of templates and plans are helpful in teaching novices become better at programming. Top-down teaching is unlikely to develop skills that individuals need to be effective programmers and only a small number of students are capable of inferring program design skills via unguided discovery. A suggested approach is reciprocal teaching. Perhaps we can look into how templates and plans are formulated when we decide what questions to ask novices & experts in our project.
Posted by Matthew at April 17, 2005 10:04 PM
Comments
Post a comment
Thanks for signing in, . Now you can comment. (sign out)
(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)