Thursday, 12 May 2016

How Minecraft Teaches Computational Thinking


I've got completely sucked into Minecraft by my kids. It's interesting from lots of different perspectives but the one I'll focus on in this post is how powerful it is for developing computational thinking skills.

I've got a computer science PhD and very much think of myself as a Computer Scientist. Yes, I've written lots of code over the years, but I think of that as a small part of the skillset.

In this article we'll focus on how kids can develop computational thinking skills in Minecraft, that's vanilla Minecraft without any mods. Note that I'm not suggesting that you need to actively teach kids these skills, a few nudges in the right direction might be a good idea, but that curious kids will pretty much teach themselves.

There's lots of focus on teaching kids to code, which we fully support, but coding isn't the only skill you need to be a computer scientist or software engineer. You can develop some of the other skills through coding in languages such as Scratch, but I think having another tool available is very useful.

Minecraft is so appealing to kids that they will happily spend hours developing useful skills while doing things that they consider to be entertainment. The payoff of learning to do cool things in Minecraft is so worthwhile for kids that they will happily put hours of effort into learning new skills.

Minecraft is absolutely packed with opportunities to develop computational thinking skills - the set of skills that you need in order to reason about how computers behave and therefore be able to design systems for them. (It also happens to be a skillset that is very useful in everyday life.)

What is Computational Thinking?

"Computational thinking is a way humans solve problems; it is not trying to get humans to think like computers. Computers are dull and boring; humans
are clever and imaginative. We humans make computers exciting. Equipped with computing devices, we use our cleverness to tackle problems we would not dare take on before the age of computing and build systems with functionality limited
only by our imaginations; " Jeanette M Wing

Computational thinking is not thinking like a computer. It does involve understanding how computers think. It's about having effective ways of thinking about systems.

Computational thinking involves topics such as logical thinking, abstraction, pattern identification, predicting, human computer interaction, hardware/software integration, algorithms and efficiency.

CAS Barefoot Computing have some useful computational thinking resources that explain the topic in the context of teaching children.

My route into computer science was via logical thinking more than programming. I enjoyed coding, but I loved logic puzzles. When I realised that logical thinking was central to computer science, I was in!

Minecraft happens to be a fantastic sandbox in which to explore computational thinking.

Decomposition

Decomposition, or breaking a big problem down into smaller parts that can each be solved more easily is crucial for computational thinking. Minecraft is fantastic at developing this skill. 

Kids will learn how to break their big idea for an automatic Minecart fairground ride down into smaller parts. Often the work will be shared between multiple people with agreed connection points - another benefit of decomposition.

For example my 7 year old son decided he wanted to build a huge roller-coaster in our family survival (usually peaceful) world. He came up with a plan that includes:

  • Going on mining expeditions to find mineshafts and collecting minecarts and tracks. 
  • Finding sheep and shearing them to collect wool (which included crafting shears)
  • Finding plants that give purple and magenta dyes 
  • Dying the wool in his chosen colours
  • Storing collected items in a chest near the roller-coaster site until needed
  • Planning and building the roller-coaster. 

Algorithms

Minecraft is all about algorithms: the day-night cycle, the steps needed to craft items, the way tools work and break. Most kids won't be thinking in terms of algorithms but they'll be exposed to lots of algorithms and their game play is dependent on understanding them.

In more advanced usage kids can configure the algorithm for a Villager (trader) by summoning them with custom buy / sell rules.

Redstone can be used to enact simple and complex algorithms that you can watch executing. I'm amazed with what my kids manage to come up with.

Command blocks allow coding algorithms to be taken even further in Minecraft. My nine year old regularly uses command blocks to test for conditions and perform actions.

Efficiency and Time

Efficiency is an important concept in computer science. It's often not enough just to have something that works correctly. 

The concept of efficiency is very tangible in Minecraft when you are working with redstone. A more elegant solution will take up less physical space or be easier to understand when you come back to it later, or need to explain it on YouTube.

The concept of time and redstone ticks is also very clear in Minecraft. I think this will really help when kids need to understand how computers operate at a low level. 

Abstraction and Pattern Matching

Abstractions allows us to focus on only relevant details and filter out specifics that are not relevant to the task in hand. There's lots of opportunity for this in Minecraft. Kids will be reasoning about how mobs behave and their similarities and differences, they will understand what makes an iron sword similar to a stone sword and what makes it different.

Resource packs are great for helping kids understand patterns or templates. A resource pack replaces all the graphics and language in Minecraft with a different version - for example there's a Star Wars resource pack. Kids using a resource pack will use their pattern matching skills to work out that you get Ewoks instead of Pigs!

Logical Thinking

Minecraft in general is great for logical thinking, but redstone takes it to another level. 

Redstone is a lot like electricity and you can power amazing contraptions in Minecraft by building redstone circuits. 

Kids start by having a simple button, lever or pressure plate opening a door automatically but as their experience develops they can make amazing contraptions that surprise enemies, create puzzles or protect their stuff.

Kids can build and chain logic gates and really explore logic in a very tangible way. There are lots of videos and tutorials available that will help kids learn. 

My 9 year old explaining to my 7 year old that he would need to use a redstone torch as an inverter to get his piston door to work correctly was a recent highlight in our house. The 7 year ignored his big brother until he realised the problem for himself and then learned a new trick. 

Hardware / Software Integration

A lot of modern computational thinking will involve reasoning about hardware as well as software. Redstone is also fantastic for this.

Setting up redstone circuits in Minecraft is more like software/hardware integration that pure software development. Minecraft includes items such as doors and chests that are powered by redstone and items such buttons and levers that act as redstone inputs. Although these are virtual items, the reasoning is the same.

Minecraft has day/night sensor blocks and there are lots of physical triggers available. Command blocks allow interrogation of the current state of items which can then inform subsequent actions to create custom sensors.

There's plenty of scope to explore inputs and sensors and outputs and actuators.

(Yes there are also ways to get Minecraft to interface with actual physical hardware, but we'll cover that separately.)

Human-Computer Interaction

Minecraft is often played as a multi-player game, either locally or on a remote server. This means that there are other players around. I've found that this has really developed my kids understanding of 'users' of what they are building. 

They don't just think about what will work for them, they might put up signs to explain things to others or put in some extra effort to make sure someone else can use what they've made. 

It's common in the Minecraft community for players to build maps for others to experience. They might be adventures, stories or puzzles. This concept has definitely improved my kids ability to see things from the perspective of another player.

My kids often build stuff for me in Minecraft maps. They know I'm rubbish at parkour so they always make sure there's a route without any tricky jumps.

My 7 year old's roller-coaster has instruction signs including "Costs 5 emeralds to ride."

Debugging, Testing and Solution Evaluation

Debugging comes naturally when kids are building in Minecraft. They will continually try out what they're building and fix any bugs they encounter. 

Being able to critically evaluate solutions is also important to computational thinking. This can be quite a contrived notion when kids are building something they won't use, but in Minecraft their solutions will get used repeatedly and often by others. 

My kids often realise an error in their planning or testing and go back and fix it, or they build a 'version 2' of something that incorporates what they learned based on ongoing usage. 

Solution evaluation in Minecraft is natural because kids are users of their own work - they "eat their own dog food". Testing just happens because if you redstone contraption doesn't actually let you into your treasure room then you're just going to have to fix it!

As I was making breakfast one morning I heard my son explain to his brother "I'm testing the roller-coaster with cows because they have the most life."

Tinkering, Collaborating, Creating and Persevering

Minecraft is of course fantastic at encouraging kids to create things. Tinkering is pretty much the way you learn things in Minecraft (other than YouTube videos.) Tinkering is very much encouraged and rewarded with logical consequeces. I accidentally clicked on a sheep with magenta dye instead of shears and the sheep changed colour and I could then shear it to get magenta wool. Awesome!

The multi player environment really encourages collaboration. We play on a family server and often work collaboratively. Usually with the kids in charge. My 7 year old gave me tasks to complete to help with his roller-coaster!

Perseverance comes easily in Minecraft as kids are so invested in the outcome. (Yes, some parents worry about their kids being obsessed with Minecraft.) I'm not sure whether this transfers outside Minecraft or whether kids just won't find other things engaging, but at least it teaches them what it feels like to persevere at something difficult.

Summary

I should say that it's possible to play Minecraft without fully experiencing all of these benefits. Some kids will just focus on creative building or attacking monsters, all of which is good fun and they won't be able to avoid encountering some of what I've discussed in this article. To get the full benefit kids will need to explore commands, redstone and command blocks and may need some help getting going, setting goals or working out the details of more complex designs. But as a platform for developing computational thinking skills, Minecraft is fantastic. 

Minecraft is increasingly being used in education, either as a cross-curricula platform or to teach coding. But as a computer scientist myself, it's the development of computational thinking skills that I see as one of the key benefits of Minecraft. 

I'm sure lots of future computing professionals will recognise that the hours they spent playing Minecraft helped to develop their skills. And it's not just those who work in computing, the skillset is applicable to much of modern life. 




More from Tech Age Kids:

Comments:

Post a Comment