Hover Bovver Bot GameCity.org – A Programmable HTML5 Version For Teaching Children Algorithms

Hover Bovver was a Jeff Minter* game for the Commodore 64 published by his studio Llamasoft. 30 years later, I can still recall the day I first saw it on my neighbours 64. And hearing it, to a Spectrum owner it sounded incredible:

I had a ZX Spectrum so my games sounded like a bunch of wasps in a tin can

Like most of Jeff’s games, he takes a classic game mechanic and adds his own uniquely brilliant take on it. In this case, he takes Pac-man’s famous ‘visit all the locations” mechanic, changes the ghosts for a gardener and dots for grass.

I’ve always had a soft spot for it, so I’ve decided to remake it for my Craft Computer workshop at the forthcoming GameCity**. I was looking for something simple and cute and for some reason the theme tune to English Country Garden popped into my head ūüėČ

Here’s how the prototype looks after Day 1:

The game itself will be mechanically the same as the original but there won’t be any keyboard or joystick inputs…

Instead the children will have to program the “mowbot” via an iconified programming language – a bit like punch cards! ¬†Rather than the procedural “route finding” approach we’re going to use an event driven language.

If nothing else it should result in the kids having lots of garden based floral carnage!

*Jeff and Llamasoft are still making games and are due to release TXK on the PS Vita shortly. He’s like the Game Industry’s Willy Wonka and if you’ve not played his games, you should go check them out –¬†here’s his Llamasoft site.

**GameCity: I’m going to be there from Weds 23rd to the end on Sat 26th, I’ll be at Waterstone’s running Craft Computer workshops.

Key Stage 1 Computing with the Craft Computer – Post Lesson Notes Week 1

For the past two weeks I’ve been teaching, in a South Wales primary school, a year 2 girls only lunchtime computing class (they’re mainly 6-7 years old –¬†here’s the reason why girls only) and I’ve been using the Craft Computer PDF kit I made¬†[you can download it here].¬†The material is based on the English KS1 ¬†National Curriculum – Wales is in the process of creating its own syllabus but I personally think the English is great, an immense achievement really, so we’re using that.

As a quick gauge of how it’s going, the class is purely voluntary, parent’s have to sign a consent letter. The first week I had 14 girls and yesterday I had 5 new ones asking if could they join in! A big nod must go to their parents for agreeing and thinking it a worthwhile thing for them to learn.

The craft approach was used for the following reasons (some more sound pedagogical reasons are in the above posts!):

  1. I wasn’t sure what resources the class would have – turns out it was 2 computers for 30 children!
  2. Everyone loves to make things, especially with paper, card scissors and glue – this is especially true of children
  3. While ¬†hands and eyes are busy making something, young minds listen without knowing they’re concentrating quite hard i.e. it’s fun
  4. It gives everyone a simple, tangible, foundation upon which we can build throughout a series of lessons.

 Lesson 1 Рbuilding the computer

My name is Dan and I’m a programer. My job is programming computers, does anyone know what a programmer is?

For our first lesson I started by introducing myself as a ‘programmer’ and asked if anyone knew what that was. Turns out a few of them did and this blew me away! So we did a little q&a around what ‘programming’ was, how computers aren’t really clever and that they are the clever ones by being able to ‘instruct/make’ the computer to do something. I then asked them

What things can you do with a computer?

This is a great question, as they’ll give you a ton of applications which you can use as solid examples later on such as: games, watch videos, write letters, draw pictures, make music, send photos, etc. This is a great area to expand into technology outside of school and digital safety/literacy later on.But for now, we’re interested in the nuts and bolts of what’s going on inside the machine.

We use the children’s examples¬†to reinforce the idea that with a computer you can pretty much do anything, it’s a tool to help you build, model and create to understand things.

Once I felt they were comfortable with the notion of computers as tool, I asked them if they knew what might be inside that could do all these things?

What do you think is inside a computer?

This is where you get to hear lots of amazing and funny answers: lightning, electricity, batteries, pictures, tiny wheels! ¬†At this point I ask them who wants to build a computer and see what’s inside and naturally you get a room full of excited children. Awesome!

We then decamp to the craft tables where each child has a pair of scissors, some glue and the craft computer templates – which looks like this!

Step 2 - Components on the motherboard!
Step 2 – Components on the motherboard!

Once they’ve cut out their templates we then talk about the the 3 main parts of the computer: the cpu, the memory and the storage.¬†¬†I tend to use a lot of brain/memory analogies which is a little fuzzy (i.e. our brains are a mixture) but it works well enough.

The main aspects we focus on are:

  1. The CPU is where all the logical thinking is done
  2. The memory it puts its list of instructions when it does something e.g. programs
  3. The files (storage) is where the computer writes everything down so it can remember things for next time when it’s turned off.

We finished with recapping the main points of what computers can do, how they do it (i.e. programs) and what’s inside.

Next week: Files and how computers store information. (We did this yesterday so I’ll write this up over the weekend!)

 

Digi-Comp II: First Edition

This is a fantastic resource and device to have for the more advanced inquisitive minds – thanks to @xcodedave at Rantmedia for showing it to me

Digi-comp ii
Digi-comp ii

The Digi-Comp II: First Edition is a modern, fully-operational recreation of the Digi-Comp II, the classic 1960‚Ä≤s educational computer kit. It’s an automatic binary digital mechanical computer, capable of conducting basic operations like adding, multiplying, subtracting, dividing, counting, and so forth. And what’s more, all of these operations are conducted by the action of balls rolling down a slope, directed by mechanical switches and flip flops, and all powered by gravity.

http://shop.evilmadscientist.com/productsmenu/tinykitlist/375-dcii

 

Designing the Craft Computer Course

Craft Computer: Learning about Computing for ages 5-7

In September 2014 the National Curriculum will contain a compulsory Computing syllabus. From age 5 upwards!

As a Computer Scientist with a 5 year old daughter I was keen to find out what they are going to teach 5 year olds. I can understand 8 year olds onwards that can read and write learning some programming.

But aged 5? What would the syllabus look like for them?

Well, this is it. In Summary, as of next year if you’ve a 5-7 year old this is what they will have to learn:

  1. Algorithms: understand what they are and how they are implemented
  2. Programs: create and debug simple programs, using logic to predict their behaviour
  3. Digital Content: how to use technology to create, manipulate and store content
  4. Privacy and Respect: using technology in positive ways and who to alert when unsure
  5. Beyond the school: learn how we use technology in our world
It’s incredibly ambitious and my first reaction was top marks for the educational teams and¬†politicians that pushed this through. It’s nothing short of a revolution and one that we need if we’re to fill that estimated 144 million tech jobs by 2020.
My second thought was how on earth do we teach this to 5 year olds?

Luckily, I have a 5 year old around the house so I sat down to design the material by watching what she likes to do. Which is pretty much anything craft related: drawing, colouring, cutting, gluing.

So the Craft Computer was devised as a way to create something tangible we could use to build our sessions around and it looks like this:

The Craft Computer Cube
The Craft Computer Cube

Looking at the KS1 syllabus it is, in a nutshell, about understanding Algorithms, Programs, Debugging, Files, Sharing and Safety. So we start with making our own computer and build upwards which guarantees we’re ¬†on a solid foundation.

Our sessions run along these lines:

  1. Let’s build our little craft computer, it’s a card cube template, which each child gets to cut out, and glue together
  2. We then learn about the main components inside a computer by putting in the Brain (CPU),  Memory and Storage
  3. Next we talk about how computers aren’t clever, they’re quite dumb really, it’s you that makes it clever by writing programs
  4. Pixel Art – We use big paper punch cards to learn about files and how computers like numbers
  5. Internet – We then link our little craft computers together with sparkly pipe cleaners (it’s important they are sparkly!)
  6. File sharing – we swap our little pixel art files along our networks and this gives us the chance to talk about the internet
  7. Algorithms – we play a little game as a group which teaches children what algorithms are and what debugging is

Quite often, one of these little sections will take a diversion or overrun so they are very fluid.

At the very least, the children come away knowing what computers are, what’s inside them and that programs are what makes them clever.

They also get to put googly eyes on them!

If you want a copy of the materials we’ve made just drop me an email on¬†dan@inpractice.org¬†or tweet me¬†@danfbridge.

Computational Thinking

Computational Thinking.¬†It’s the current buzz phrase of the moment with regard education news. It’s the ‘thing’ we must teach our children.

So what is Computational Thinking?

Although it sounds like it, we don’t want you to think like a computer. It’s really set of ways to think that help you solve problems in a systematic and logical way. More importantly, they are methods that can be ‘abstracted’ and applied to more than one problem.

For example, knowing how to use flour, water and yeast to make dough means you can make breads, pizzas, pasta, cakes.

Computational Thinking will also help you to describe a solution that can be easily translated into a computer program. i.e. Programming

But the real value here extends beyond just programming as they are ways to think about solving problems. Ways that will serve you well solving real-world problems such as: finding the fastest route somewhere, finding a different route if there’s an unforeseen problem, ordering large groups of information, building things, etc

Common types of Computational Thinking are:

Problem Decomposition:

This is the art of taking a hammer to big overwhelming problem and smashing it up into small bite size pieces. Our brains get very tired thinking about solving a big problem in one go.

Think of a child eating solid food. We wouldn’t just give them a whole chicken and a giant potato. We’d help them by cutting it up into ‘bite sized pieces.’

That’s what Problem Decomposition helps us to do, mentally. For example, asking someone to build the Great Wall of China is a Herculean task, and one you’d rightly decline, but at its most fundamental it’s just putting one stone on top of the other. And doing it over and over again. The repetition of an algorithm is an important concept too. We call it a loop.

Problem Decomposition allows you turn an insurmountable problem into something manageable.

Google famously asks questions of its software engineering candidates such as:

How many golf balls can fit into a School Bus?

This is designed to test your problem decomposition skills along with some basic maths. What they are really checking is that you can see beyond the irrelevant parts of the description to the real problem. That you can break it down to a simple volume problem. A rectangular solid’s volume minus the volume of the spheres calculation. A good computational thinker would ignore the colourful but meaningless description of the bus and visualise something like a fish tank filled with ping pong balls.

Pattern Recognition

Being able to see patterns in collections of data such as strings of letters, numbers, objects, graphs is pretty much a fundamental part of Computational Thinking. The good news here is that our brains are pretty much Pattern recognition machines! The Rorschach test is this principle in action.

Pattern Recognition is really powerful as it lets us see beyond the noise of data to the repeating structure behind it. In our previous example of the bus filled with golf balls, pattern recognition lets us zoom through past the windows, wheels and doors and see a familiar maths problem.

Pattern Recognition allows you to see sequences like 1,2,3,5,8,13,21 and see beyond the string of numbers to a simple function that can generate it. It’s a great skill to acquire and leads onto the next part of Computational Thinking, Abstraction.

Abstraction

Abstraction allows you to develop a solution for a single problem and make it generic so it can be used to solve other problems.

i.e. It gives you mindset to look for what’s ‘variable‘, the parts that can be taken out and replaced with an ‘x’

For example, we use time in the short-term in minutes and hours, but we’ve abstracted this into decades and centuries when we’re describing events far in the past or future.

Abstraction is being able to take that seemingly random string of numbers we just saw and, if not immediately see it’s a Fibonacci sequence, know that there is a functional abstraction, i.e. a formula, an algorithm, that can describe the sequence: F_n = F_{n-1} + F_{n-2},\!\,

Algorithms

As we’ve just seen, we can decompose a problem into a pattern or series of patterns that can be abstracted and then turned into an algorithm.

An algorithm is a precise set of instructions to achieve some desired outcome

It could be you want to count the number of words in an article, or find the most common colour in Monet’s Lilies or work out how high a Wimbledon tennis ball bounces when dropped of a 10 foot wall.¬†You’ll probably notice that these problems are really maths problems and you can solve them without a computer but it’s MUCH quicker to use a computer. For example, an average computer can count to a billion in about 4 seconds, how long would it take you?

This is why computational thinking is important, it allows us to solve problems that are either too large for our brains to solve manually or to solve them in a fraction of the time.  Humans are tool users and the computer is our best tool yet.

Whatever the ‘thing’ is you are trying to do, being able to solve your problem by articulating as a set of instructions, such as a computer program, is a very powerful way of thinking and one that lets you know quickly whether you actually understand the problem properly.

Computational Thinking is centered around these four concepts and while programming is the most common form of expressing a solution, it’s reach extends far beyond the computer.

What is Computer Programming?

Computer Programming is simply the act of instructing a computer’s processor (CPU) to perform a task.

6502 CPU
What is Programming? The famous 6502 CPU

In effect, the Computer is your servant, it will do exactly what you tell it to. If something goes wrong it’s your fault!

So What is Computer Programming? Computer Programming is just you telling the machine what to do. Simple eh!?

Sort of.

At a very low, machine level, Computers largely perform binary arithmetic which is pretty much the opposite to how us humans work.

To overcome this problem we have developed ‘Programming languages’ which are attempts to abstract all those numbers with words, grammars and syntax that we can understand.

So instead of us having to write long lists of 1’s and 0’s, programming languages let us write statements like this:


10 PRINT "BARRY IS ACE!"
20 GOTO 10
RUN.

Which if you grew up in the 80’s should be very familiar, if not, it’s a BASIC program that prints “BARRY IS ACE!” to the screen. Forever as dictated by the line “20 GOTO 10” i.e. when you get to line 20 go to line 10 and start again, which is what we call a loop. Actually it’s an infinite loop but that’s for another day.

To recap ‘What is Computer Programming’ is the act of giving a computer a list of things to do. The list usually solves a specific problem or task we’re trying to achieve.

Arguably, modern programming is now largely about interacting with other files and programs (such as databases, libraries, APIs, web services, etc) more than with the low level machine.

This is why most modern development, particularly application development, doesn’t really require strong maths skills.

Computer Programming is about understanding time, resources, networking all tied to strong logical thinking. Sometimes these things follow on from being good at mathematics, but not always.

If you can think laterally about problems and enjoy solving them, chances are you’ll make a good programmer.

Give it a go.