Sunday, May 27, 2012

Avalanche - Make your Own Game

In response to an email thread on Natural Math (math game design).  I decided to try and create Avalanche and Galton Box games in Etoys.  The goal being not just another online version of games.  But a tool where kids can build and then play their own games.

Here is the Avalanche version.  I will demonstrate the Galton Box in another post.

Here is a sample game board.  Simply drag and drop a marble above the board and it will start to fall until it gets caught on the triangle shaped end of a gate or hits the bottom of the playfield.

The following is a blank board where you can drag and drop gates onto the playfield. Gridding is turned on to help you align the gates.  You can turn it off when done.  You can also drag in marbles (and color your own).

Here is a demo of the project:

You will need Etoys 5.0 to play them, you can download it here (its free and open source).
The game can be downloaded from here and if you have Etoys 5.0 installed played in your browser here.

Of course the best thing is to get the kids to step away from the computer and truly construct their own versions, using something like the technique below (or any others they can think of)

Now what would be really cool would be to have them construct their own Adding Machine like this:

Friday, May 4, 2012

How to Train Your Robot

So I tried using Dr. Techniko's   with about ten kids 10-16 years old.

I have done similar things in the past with kids based on seeing Seymour Papert videos where he has children pretending to be the "turtle" and the other children give the commands.

Besides being a lot of fun, I really think the kids learned a lot and got a feeling of success.

Here is a list of some of the things kids came up with:

  1. Created Looping techniques
    1. While walk
    2. Repeat 4 times: walk 2ft
  2. Came up with the idea of using coordinates to program the Robot (ex: goto 1,0 - an actual good use of goto :)
  3. Measured the whole path, drew models of the path with measurements and planned out everything on paper before writing the program
  4. Came up with various sensors (ex: sense Obstacle)
    1. Special thanks to those who improved the sensors and had me stop BEFORE I hit the wall!!!
  5. Used the idea of Homing Beacons
  6. Had two styles of programs one where you loaded all the instructions into the Robot, then the Robot followed the instructions. The other interactive where you guided the Robot with voice commands.
    1. Question, in the above two examples, where was the "intelligence?" In the programmer or in the program?
  7. Came up with the idea of functions or methods. Higher level commands (aka abstractions) to get a robot to do something (ex: walk = left foot forward, right foot forward).
  8. Not only did folks walk up the ladder of abstraction as in item 7, one of you walked down the ladder of abstraction and created more detailed command for left foot forward, explaining what each part of the leg had to do to "move left leg forward"
  9. Last but far from least, you made mistakes!!!! Woohoo!!! Yippeee!!!  If you don't make mistakes, you are not learning. Of course that's only true if you learn from your mistakes.  But the best is to learn from the mistakes of others, you don't have time to make them all yourself.  Feel free to watch me for mistakes, I am a great teacher that way :)

General Techniques for facilitating learning:

  • Clap, Clap, Clap - you need this to get their attention and bring a room full of engaged noisy kids to silence and get their attention to make a point or share a really cool thing some kid did.  I generally start my first class by staring at the kids and not saying a word.  I do this until they start to notice, quiet down and are all looking at me. Then I clap my hands three times and wait for them to repeat. If only a few of them do, I shake my head and clap three times again until all the kids do it.  This is usually enough for them to get the idea.  I will then do this again when they are not too distracted to get them in the habit.  Usually only takes a few attempts and they respond each time after that.
  • Give the concept the kids come up with a name. Allow the kids to be the teachers.  When a child does something worth noting, do the Clap, Clap, Clap, then say what a great idea had, she ....  Be specific in the praise, not "oh Mr. Steve is wonderful" 
  • Catch kids doing things you can compliment them on, ideally in front of the whole class. Once the kids see you complimenting and praising one child they all want it.  Better yet, don't wait for kids to be successful, orchestrate their success. 
  • Lower the Rope - If a task is too hard for some children, give them an easier task. The goal is to make them successful, not to frustrate them.
  • Raise the Bar - Plan on tasks for kids who finish quickly or get the solution fast, so that they are challenged and not bored.  If appropriate and they could help teach, but you need to train them to teach in a way that builds kids up and helps make them successful.

Things I would do different next time.

  • I would spend more time in the beginning letting the kids program me, so I was sure they all got the idea.  
  • I would also let them program me "interactively" (responding to each command as they say it, rather than having them tell me a bunch of commands at once).  
  • I would have "lowered the rope" for certain kids and had them program me to walk a straight line to get to a wall, while others were working on the more "complex" challenges.
  • I also like the idea from Dr. Techniko of asking kids to program their parents to do something silly or funny.