Beyond Contextualized Computing Education: Problem Finding
I finally finished Jerome Bruner’s Towards a Theory of Instruction on the flight home from China yesterday. It was a fitting conclusion to this crazy travel year I’ve had — I started it on the flight to Doha last May, reading it during the take-offs/landings when I couldn’t read ebooks. I found it fascinating, but feel that I need to re-read it to get more out of it.
I found a lot of support for the contextualized computing education approach that we have been developing. Bruner talks about the value of context, and how school so often separates purpose-in-context from school.
“Note though, that in tens of thousands of feet of !Kung film, one virtually never sees an instance of ‘teaching’ taking place outside the situation where the behavior to be learned is relevant.”
“The change in the instruction of children in more complex societies is twofold. First of all, there is knowledge and skill in the culture far in excess of what any one individual knows. And so, increasingly, there develops an economic technique of instructing the young based heavily on telling out of context rather than showing in context.” (p.151)
Bruner points out that this can be an advantage, if managed well:
“At the same time, the school (if successful) frees the child from the pace setting of the round of daily activity. If the school succeeds in avoiding a pace-setting round of its own, it may be one of the great agents for promoting reflectiveness.” (p. 152)
Bruner’s solution, though, goes well-beyond teaching within a context, as we do in Media Computation. I think Bruner would like MediaComp based on the quote below, but he goes on to propose a goal of “problem finding.”
“By school age, children have come to expect quite arbitrary and, from their point of view, meaningless demands to be made upon them by adults–the result, most likely, of the fact that adults often fail to recognize the task of conversion necessary to make their questions have some intrinsic significance for the child. [Ed: That's what I think we do in MediaComp.] Children, of course, will try to solve problems if they recognize them as such. But they are not often either predisposed to or skillful in problem finding, in recognizing the hidden conjectural feature in tasks set them. But we know now that children in school can quite quickly be led to such problem finding by encouragement and instruction.” (p. 157-158.)
That’s a really interesting idea. How would we encourage students to do problem finding as a way of learning computer science?
I think we do that already with our open-ended homework assignments. When we ask students to build a photo collage, a music piece, or a movie, with only general goals, we find that students often develop goals for themselves that are beyond what we have explained how to do. So, students explore, play, and invent new kinds of effects to achieve their goals. That’s problem-finding.
Bruner’s examples of problem finding go beyond that, though. He talks about students looking at specific lessons (about cheetahs attacking baboons), then extrapolating from there to exploring broader issues, e.g. of ecological balance, driven by student questions and hypotheses. Could we do that in computer science?
Here’s one way to build a problem-finding pattern in a computer science course: We show students a particular lesson, which could be contextualized (like using weighted-sums to create a transparency effect) or decontextualized (like a binary search). Then we discuss, and encourage students to think about problems that might be solved with techniques like these, or to find similar problems that could be solved with variations of these techniques. Maybe you saw a commercial or video game that used a different use of transparency (fog or smoke?), or maybe you’re wondering how other kinds of searches work. This would be an interesting way of moving beyond contextualized-computing education.
A challenge for making this work in computer science is, as the essay in the Chronicle mentioned, kids today don’t think much about how things work, about how to take things apart. Will students be able to figure out problems that can be solved with computer science techniques that they know? Will students be able to think about the ways that computational things are built? This feels like an interesting open research question, like what the Commonsense Computing research group does: how do people think about how computational artifacts work? How do users think that Google works, or how spellchecking works, or how fonts are drawn on the screen? Do users even see the computation that needs to be explained? If not, they will have a hard time finding the problems that computer science can help them solve.
Bruner is suggesting an interesting teaching technique that we should try in computer science. That’s a design-based research question. There’s another research question about how well novices might think about computational problems, about whether they even see the solvable problems. Bruner’s notions of “encouragement and instruction” can help them see it, but that will take some exploration to develop.