Friday, August 1, 2014

Physical Computing for Kids

This past week, I taught my "Physical Computing" camp for 6-8 year-olds... and we actually learned some programming in 5 3-hour days! (And I really mean "we"... there's no better way to learn something better than to teach it.) The idea was generally: Scratch and MakeyMakey. Here's how our general week went:

All of the pre-made-by-other-wonderful-people programs I used with our MakeyMakeys are here at this Google Doc.
Four ultra-simple games I created as teaching tools for this camp can be found here in my Scratch studio.

Day 1:
- I set up the MakeyMakey banana pianos before class began, and wrote 6 partner-pairs on the board for kids to team up. (Luckily, I already knew almost all of the 12 kids, as my daughter's friends.) I created a single Scratch account that would hold all of our projects... this made it easy for me to make copies of projects for each kid to manipulate.  I made 6 copies of the drawing game we'd use later, so those were ready for the partner pairs later.
- Kids enter to the 6 MakeyMakey banana pianos, and explore how to play the pianos.  After about 15 minutes of just exploring, I asked a few questions like "What do you have to do to play the piano?"
- I demonstrated for the kids how to change the alligator clip leads, and they worked in pairs to move from asdf for the piano to up, down, left, right for the next activity. During recess, I assigned partner pairs and wrote them on the board, as... well... their choice partners weren't working so well.
- Next, the kids - in their assigned pairs - explored the simple drawing game in the group copies I'd previously made for each pair. I briefly demonstrated how to change parameters such as how far the pen traveled with each keystroke or changing the pen size, and then they worked with their partner to modify those existing parameters. One interesting teaching point was + and - in moving on x, y coordinates... they certainly hadn't learned cartesian coordinates yet.  :-)
- Finally, the kids worked in their pairs to create a new controller - not bananas - for their MakeyMakey to operate the drawing game.  Most of the kiddos made simple squares of foil taped to a sheet of paper, and many needed some troubleshooting to remember ground!

Day 2:
- I wrote new partner pairs on the board, and set up 6 *new* MakeyMakey controllers on 3 new games: Awesome Synth Drums, Bouncy!, and Flappy Birds on my sample programs doc. The controllers included gloves with foil tips, feet-on-the-floor contacts, a ruler lever to see-saw back and forth, and a few cool others...
- The kids came in and began exploring with their partners. I asked them to try each one and try to figure out how it worked so they could share later.
- After about 30 minutes, we gathered as a group and went around to each station, with a kid or two explaining how each different controller. This took longer than I expected. In retrospect, I should have sat down with some circle time to begin talking about how the different controllers worked. That would have helped these young learners focus... lesson learned for this middle school teacher!
- Finally, each pair endeavored to create a different kind of controller for one of the games.  They could apply mechanisms used for one of the *other* games, but couldn't - for example - make another feet-on-the-floor controller for Flappy Birds.

Day 3:
- Before class, I created a very simple Scratch interactive and set it up this time on all 12 laptops in programming mode so they could see the scripts - only using asdf, but demonstrating a few different scripts with each key.  I also wrote up a 3rd set of partner pairs.
- Kids came in and immediately began exploring the simple interactive, but on their own laptops sitting next to their partners. After about 20 minutes, we stopped to discuss what each keystroke was doing and why. I used the projector in this classroom to also show the scripts on the board.  Again, this would have been much better as a circle-time conversation instead of them sitting at their different laptops trying desperately not to continue playing.
- Finally, they each created a new project and started by setting up events for green flag, and asdf. They then practiced placing different scripts for different actions for each keystroke.

I'm not totally sure why these series of events took so long... I think most of the time was in creating their own asdf projects... many kids began throwing in new sprites and backgrounds.  This *should* have been when I emphasized "ask your partner before asking me," but instead we got into the habit of me running around for every little question.  Again, lesson learned.


Day 4:
- I set up each of the 12 laptops in our Scratch account, but not in any particular project. I also made a 4th set of pairs.
- As the kids came in, I told them they could continue working on their asdf projects, or even start a new project if they wanted to.  The kids essentially just continued playing with their asdf projects, asking questions, and showing each other cool findings until recess... a little over an hour into camp.  Again, I really should have emphasized "Ask your partner first."  Several kids became very reliant on me for even simple scripts and it was tough to support them in developing their own troubleshooting skills.
- While the kids were at recess, I made a quick maze game and a simple chase game to demonstrate moving from keystrokes just doing "stuff" to having a game with a goal.  I challenged the kids to either make a copy of one of those games to manipulate, or to try starting to make a game of their own.  A few of the kids who were really understanding started their own games at that points, some made copies to manipulate, and some continued working on simple asdf interactives.
- At the very very end of the day, I finally had the bright idea to have a circle-time. We all sat in a circle to discuss what we wanted to do for our final day. The big question was: Do we want to invite other camps to come play our final games? Even with anonymous voting, it was a unanimous yes! Especially for camps with siblings!
- I told them their assignment for the final day would be to create a game with a purpose or specific end, and to create a custom controller for their game.

Day 5:
- I've never seen young children get *straight* to work like they did on this morning! I didn't assign pairs, since some kids wanted to choose partners to work together on their final projects. However, almost all of the kids sat exactly where they had been the previous day.
- About 20 minutes into the day, we had a beginning-of-the-day circle time to share our plans for the day. Here's my stroke of genius I should have had earlier in the week: I asked who in the class felt like they could be a go-to person if another camper had a question. Then I finally emphasized to all this kids: First, ask your partner. Second, ask one of the volunteer helpers. Third, ask me. Holy monkeys, what a difference that made!  Two campers in particular took the brunt of the questions I would have been answering, and they loved the leadership.
- Before recess, the kids worked on their games! After recess, they made their MakeyMakey controllers! At 3:30, three camps that included siblings from our camp came to play! It was a resounding success! You can see and play their final games here.

A few quick reflections/learnings:
- Use circle-time for any whole-class conversation with elementary-aged kids.
- Identify volunteer helpers as early as possible, and insist on ask-your-partner-first from Day 1.
- The sample games were awesomely helpful, and kids were able to feel quite successful modifying those sample games. However, some were then reluctant to start something new from scratch. I'm not sure what to do about that...
- Scratch is even more awesome than I thought. But why the heck isn't there an "on mouseclick" event option???

Thanks so much to all the parents who gave me permission to post pictures of their kiddos to my blog!


  1. Here's a quick Scratch tute I made in Scratch on a couple ways mouseclicks can be done:

    Hope this helps!

  2. OMG !!! One of my little cuties was trying to make her character follow mouse clicks to navigate a maze, and I should have found that! I'll send your tutorial to her! (Well, to her parents, since she's in kindergarten.) Thanks SOOOO much

    I had a little fun remixing your tutorial to test out gliding to mouse x and mouse y... works very nicely! I also added it to my Easy Scratch Games for Elem studio!