Sunday, September 11, 2016

Doherty - Building forests requires computational thinking

Doherty, Ruth

My biggest takeaway from Wing’s articles is that computational thinking requires abstraction. In order to create and think computationally one must be able to assess the project and decide how to bring it out of a special case and into a generalized form. Previously, I have thought of this as “translating into computer language”, breaking down an idea into simple questions or steps that when taken together create a complex idea. Thus in thinking about the USN students, it seems that the mentally challenging part is not likely to be making a scratch program, but rather figuring out what to make into the scratch program. It’s a much more global approach to teaching programming because programming is the language, but not the idea. I’ve been trying to think of projects that hit the right balance between needed abstraction and accessible levels of engagement.
The idea I’m most excited about is thinking about forests. Forests are an excellent example of agent based modeling with levels. The trees, shrubs and grasses all grow in concert and affect the final outcome of the forest. While we frequently think of forests as unchanging parts of land that have always been there, this is almost entirely untrue. Forests frequently regrow: from fires, from logging, from tornados or merely from a fallow field. I think it could be interesting to think about how forests grow and regrow from various states and how their composition changes during growth. For example, in older forests with lots of tall trees, there is very little undergrowth because there is no available sun. In young forests, there are frequently many small trees and there is thick underbrush because sunlight still comes through the canopy.
Thinking about forests is initially overwhelming; there is so much going on and there are so many factors for which to account.  But we could start small, looking at the agents. Students research (with assistance I’d imagine) what it takes for a set number of forest agents to grow: coniferous trees, deciduous trees, grass, small plants and shrubs for instance. You program each one as a sprite. The sprite would then have scripts that check for water and sunlight and scripts that tell it to grow or die. Then maybe you have a way to generate weather and keep a report of the past weather. From there you could start building a forest.
The advantages of a forest as a setting are the directions you could go with the program. Maybe you’re interested in regrowth after a fire. Maybe you want to know what kind of animals would be happy in the forest during each stage of growth. Maybe you want to know what effect extreme weather would have. The disadvantage from the teaching perspective is the lack of instant pay off. A forest has multiple agents which need programming. While the programming is similar, you can’t actually have the forest until you have a set of agents. Additionally, I’m not sure how you would visually represent the agents (although perhaps, that is an interesting conversation to have with students). My only other concern is scratch’s limitations. How many sprites can scratch deal with without crashing? Or extremely slow processing?

It wouldn’t be an easy project, and it would certainly demand computational thinking. But with the right combination of students it could be a really neat modeling project with many applications.

1 comment:

  1. I really like this idea! And it seems like it can be an activity that happens over a few class meetings - with different levels of thinking (discussed in different ways in a few papers now)/abstraction each class. I don't remember what grade level I did this, but I remember creating a habitat in a shoebox - taking into account different wildlife at various levels in the forest. This seems like the next step - adding in computational thinking concepts and relationships (fires, deforestation, etc) that may not have been addressed with the shoebox.

    I also love your comment "programming is the language, but not the idea." I may repeat this too much, but I've always struggled with computer science classes that focus on learning a programming language. A language is a tool. While it offers the opportunity to better learn computational thinking skills and I will always promote coding, the idea behind how the language is utilized it important. I think your project concept does just that!

    ReplyDelete