Computational thinking tools

What makes a good computational thinking tool that can be introduced systemically at public schools? This is an open invitation to share ideas of a checklist for computational thinking tool requirements. We have been working on authoring tools to create computational science simulations, games and robots for many years. This checklist represents our experience with students ranging from middle school to graduate school. Please feel free to contribute, and challenge this list by adding comments to the discussion tab or adding text to this article. This is the computational thinking tool checklist:

Unlike more traditional programming tools a computational thinking tool will elevate the task of creating computational artifacts to a level that is more concerned with cognitive issues, i.e., the way people think, than with the way that computers work. One way to conceptualize computational thinking is to compare problem and solution spaces and to differentiate between intrinsic and accidental complexity. A computational thinking tool will try to minimize accidental complexity and allow its user, as much as possible, to concentrate on the complexity intrinsic to the problem.



Requirements for computational thinking tools Our goal is to bring computer science to middle schools at a systemic, i.e., one district at a time, level. This requires tools that have very low thresholds, high ceiling and the capability to do more that just one thing, i.e., not just story telling but also the ability to make computational science models. Why?

Low Threshold
To be useful in a public school context, especially at the middle school level, and to work well across gender and ethnicity computational thinking tools need to have an extremely low threshold. That is, unlike some of the Advanced Placement computer science courses at the high school level "preparing" students with semesters worth of theoretical background before they can engage in interesting projects computational thinking tools should be accessible to the point where students can engage in an interesting project right away. Low threshold is also essential if you think about the systemic integration of computer science into schools. This requires a fundamental shift from involving individual schools with self selected teachers to train entire school districts. Think about it. Teaching every teacher in the district. Creating classes that are required - not elective - for ALL the students. In this context low threshold is not about colorful drag-and-drop programming interfaces but it is about the ability to express simple computational thinking concepts without accidental complexity burring these concepts in confusing or even unnecessary code. Computational thinking is not the same as programming but programming can be done at a level that is conceptually aligned with computational thinking. For instance, when creating a Frogger-like game the code to move the frog based on cursor key input should be as simple as four rules saying "if you press the cursor up key the frog should move up." For this example there should be no need to write loops or need to write code controlling sprites with hard coded pixel coordinate constants.

Is the threshold of your computational thinking tool low enough that students can immediately begin to work on a project? In this 3rd lesson movie you can observe students who are using AgentSheets in their third lesson after only two previous lessons at 50 minutes each. They have not only mastered to build their first game, they are already moving on to create their own games. If you cannot get this kind of low threshold then teacher training - now that is a real cost - will go through the roof. Once you move beyond the self selected group of teachers you simply get many teaches with little, if any, experience in programming, making games or even playing games. Your computational thinking tool needs to be so accessible that it works for all teachers.

High Ceiling
Once you get the kids motivated you need to be able to advance beyond the basics. If you excite the students initially but then lead them into a dead end you will leave them to be even more skeptical towards computer science than they may have been at the beginning. "Excuse me, I need better AI. How can I do this?" our middle schools students are asking. Now, can they build a SimCity or Sims-like game with sophisticated pathfinding, and collaborative behaviors or are they stuck at the level of characters moving around randomly. This would be the part when interesting math can enter the scene. See an example here: http://scalablegamedesign.cs.colorado.edu/wiki/Collaborative_Diffusion and yes, middle school student can do this.

Work across Disciplines
Story telling and game design can be a lot of fun but if you want to develop computational thinking skills you need more. "Now that you can build Space Invaders, can you build a simulation of a mudslide?" These computational thinking patterns need to be scaffolded, through story telling or game design, but then need to be reinforced when building different kinds of applications such as computational science simulations. As we know from research, this kind of transfer does not just happen automatically. To be sure, if we find kids capable of creating games we can find new skills that they must have developed that probably can be interpreted as early signs of some computational thinking. But, if we want to be sure that there is real computational thinking going on students would need to be able to apply these computational thinking skills onto new applications. To get there we have to scaffold learning and connect computational thinking patterns in explicit ways.