DL_one-third_page_4C:Layout 1 6/26/08 4:05 PM Page 1
ACM Digital Library
www.acm.org/dl
The Ultimate Online
INFORMATION TECHNOLOGY
Resource!
Plus over one million
bibliographic citations are
available in the ACM Guide
to Computing Literature
To join ACM and/or subscribe to the Digital Library, contact ACM:
Phone: 1.800.342.6626 (U.S. & Canada)
+ 1.212.626.0500 (Global)
Fax: + 1.212.944.1318
Hours: 8: 30 a.m.-4: 30 p.m., EST
Email: acmhelp@acm.org
Join URL: www.acm.org/joinacm
Mail: ACM Member Services
General Post Office
PO Box 30777
New York, NY 10087-0777 USA
questions are being addressed by researchers in the field of computing education research. Researchers in computing education draw on both computer science and education— neither field alone is sufficient. While we computer scientists understand computing from a practical, rational, and theoretical perspective, questions about education are inherently human questions. Humans are often impractical, irrational, and difficult to make predictions or proofs about. Computing education researchers are using experimentation and design to demonstrate we can address important questions about how humans come to understand computing, and how we can make it better. Research in computing education will pave the way to make “computational thinking” a 21st century literacy that we can share across the campus.
A research theme in the early 1980s was how to design programming languages so they would be more like natural languages. An obvious question, then, is how people specify processes in natural language. Lance A. Miller asked his study participants to specify file manipulation tasks for another person. A task might be “Make a list of employees who have a job title of photographer and who are rated superior, given these paper files.” Miller studied the language used in his participants’ descriptions. 2
One of Miller’s surprises was how rarely his participants explicitly specified any kind of control flow. There was almost no explicit looping in any of their task descriptions. While some tested conditions (“IF”), none ever specified an “ELSE.” He found this so
figure 1: traditional conditional structure.
if (value < 10) then value = value + 10; else sum = sum + value; end if
figure 2: new conditional structure.
if (value < 10): value = value + 10; not (value < 10): sum = sum + value; end (value < 10)
surprising that he gave a second set of participants an example task description, without looping and no ELSE specification. The second set of participants easily executed the task description. When asked what they were doing if the condition was not met, or if data was exhausted, they replied ( almost unanimously, Miller reports), “Of course, you just check the next person, or if there are no more, you just go on.”
Miller’s results predict some of the challenges in learning to program— challenges that are well-known to teachers of introductory classes today. While process descriptions by novices tend not to specify what to do under every condition, computers require that specificity. Miller’s results suggest what kinds of programming languages might be easier for novices. Programming languages like APL and MATLAB, and programming tools for children like Squeak’s eToys use implicit looping, as did the participants in Miller’s studies.
Twenty years later, John Pane and his colleagues at Carnegie Mellon University revisited Miller’s questions, in new contexts. 3 In one experiment, Pane showed his subjects situations and processes that occur in a Pacman game, then asked how they would specify them. The subjects responded with explanations like, “When Pacman gets all the dots, he goes to the next level.” Like Miller, Pane found that participants rarely used explicit looping and always used one-sided conditionals. Pane went further, to characterize the style of programming that the participants used. He found that over half of the participants’ task statements were in the form of production rules, as in the example. He also saw the use of constraints and imperative statements, but little evidence of object-oriented thinking. Participants did talk about accessing behaviors built into an entity, but rarely from the perspective of that entity; instead, it was from the perspective of the player or the programmer. He found no evidence of participants describing categories of entities (defining classes), inheritance, or polymorphism.
Pane’s results suggest that object-oriented thinking is not “natural,” in the sense of being characteristic of novices’ task descriptions. Since ob-
References:
Archives