For simplicity here, I’m thinking about computational
thinking (CT) as how computer scientists think, using mostly concepts and
practices from programming. Even though I really believe CT to be more than
just programming and to be applicable to a variety of fields and problems (like
Wing suggests).
As an example of something from the science-focused papers
that wasn’t computational thinking, Simpson, Hoyles, & Ross (2005) said
that “the most common limitation of students’ work while modeling was that they
tended to produce specific rather than general solutions” (p. 30). Using
solutions to create problem solving processes that can generalize to other
problems is a practice of computational thinking. So the fact that many students’
models were limited to specific solutions shows that they were hindered in
participating in this practice. But the authors did say that students did see
the value of more general models after more time and help, so that’s a step
towards CT.
Building on others’ work (or remixing work) and being able
to share your work with others are important parts of computational thinking.
Wilensky and Resnick (1999) mentioned that in some of their cases, they
“introduce a pre-built StarLogo model and engage students in discussing the
workings of the model – and invite htem to modify or extend the model” (p. 6).
That’s one example of how you could use modeling (in their case, they were
looking at the concept of levels in science) to explore the CT practice of
remixing others’ work. Scratch also supports this practice with the online
community, where you can share your own but also remix other works for your own
creations. As an example from literacy, in the e-textiles example in Digital
Divas, they have an online community where people can share and comment on each
other’s work, too (Erete et al., 2015).
Creating stories through programming, like storytelling in
Scratch (in Burke, 2012), familiarizes students with some CT concepts more than
others. Creating stories can be a good way to learn loops, parallel structures,
and event-handling, but it’s not so strong for learning conditionals, Booleans,
and variables. When choosing an activity to teach CT concepts like this, you
have to think carefully about what you want the students to learn and what the
design of the activity actually affords for learning different CT concepts. If
you introduce an activity like storytelling in Scratch, you may have to think
about another activity to introduce later on that allows students to explore
other kinds of CT concepts.
What I’m wondering is if something like writing itself (not
programming-as-writing but actual writing, whether with a word processor, using
just text or multimedia, writing a story or a graphic novel) could introduce
students to CT concepts or practices. For instance, could writing a short story
(without programming) give students opportunities to think about or use loops
or parallel structures or Booleans?
This comment has been removed by the author.
ReplyDelete"For instance, could writing a short story (without programming) give students opportunities to think about or use loops or parallel structures or Booleans?"
ReplyDeleteReally interesting -- kind of similar to the idea of embodied modeling. For example, lots of fair tales kind of have loop sequences. Here's a sketch:
protagonist = three little pigs
antagonist = wolf
building_materials = [straw, sticks, brick]
for material in building_materials:
if materIal != sturdy:
wolf.blowHouseDown()
else:
wolf.runAway() //I don't remember if this is what the wolf does.
But I could see this being a "powerful idea" in the sense that it leverages the storytelling structures that kids are intuitively familiar with to help them learn programming logic. However, I wonder if seeing that connection would be harder it they hadn't been exposed to programming already -- does this just feel clear to us because we are familiar with both?
Yeah, it's kind of getting at tacit CT knowledge, but how can we make it more explicit?
Delete