Code.org and Computer Science Education Week organized an event two weeks ago called "Hour of Code", where they proposed that every school in the US spend one hour to get their feet wet and understand the concept of code. The event was fairly well-organized, with enough information and handouts for teachers, parents, and principals and several tutorials for K-12. I decided to organize a "Hour of Code" event at my kid's school in San Francisco. After a few email exchanges across the PTA, the Principal and teachers, a couple of the teachers signed up. The event information had a bias to it - a focus on skills and jobs - so I decided to sidestep that and stick with the fun part of it. Why do 3rd graders have to worry about jobs? The tutorials had Scratch-like block programming environments based on Blockly, and made for "Angry Birds" but I decided to stay with Scratch for two main reasons. I am familiar with Scratch, and I was more comfortable with a project that came out of the .edu domain. Plus, I'd rather push something built by Sayamindu and friends rather than by Zuckerberg or Gates!
Once we got started, the word got out and we ended up with Hour of Code sessions across six classes ranging from grade 2 to grade 5. What an amazing experience that was! We would begin with a brief chat with the kids, and ask them about what computers did for them. Most of these answers related to consumption of information. Then we'd switch focus and look at the "who tells the computer what to do?" side of things. Next, we'd relate to the creative side of coding, math and science. After this, we'd give them a short intro to Scratch, and then let them loose on the computers. They'd go to http://scratch.mit.edu and begin with the "Try it out" example.
Our experience was that with a little nudging, approximately 1/3 of the kids got off to a good start. Of this, most would diligently complete their work. We encouraged these kids to help other children. Hour of Code suggested a rule of "Ask 3, then ask me" to encourage conversation. Approximately 1/4 of the children would go into the Sprite library and Backdrops and simply get lost. They'd end up using Scratch as a paint program. It took us some work to bring them back to the main logic screen. By the way, one kid discovered a version of Minecraft in Scratch. Mayhem ensued! Everyone wanted to figure out how to search Scratch's 4 million+ library for Minecraft.
In all, we think the children got a good starting point, and will continue to use Scratch at home and elsewhere. Most of the teachers were pleasantly surprised to see the children take to Scratch so quickly. Sure, the Hour of Code won't make them computer scientists, but two things will help moving them in that direction:
- Scratch runs in a browser (requires Adobe Flash, but Sayamindu tells me a HTML5 version is in the works), so they can use it on any computer at home or at the local library
- and block programming in a friendly, colorful environment is very inviting.
The availability of Scratch in a browser is a tremendous plus. Working with school districts, their libraries, computer installations and such, one realizes very quickly that there is a whole lot of spinning wheels, but you get nowhere at all. SoaS was a dead end for us, because we were not allowed to change BIOS settings. We were not allowed to install Virtualbox to run Sugar because we weren't allowed to install programs. I had originally envisioned dove-tailing Sugar into the Scratch experience, but eventually, I gave up. What would work marvelously would be if Sugar itself ran in a browser. This is where OLPC France's Sugarizer project comes in. I find it to be a very promising project. Imagine children being able to work with Sugar in a browser, while being able to store their Journal some place centrally (like Scratch does) and continuing at home, or at the local library. I am looking forward to much progress on this project.
As for the virtues of block programming, Scratch is something I recommend to entry-level college students as well. In Information Systems, I often come across students who don't like programming. In most cases, they've had a bad experience with it early on, where they were thrown into an environment without much guidance. Most of the fear stems from having to deal with syntax and grammar, so they never really learn to love the logic. Block programming takes care of the syntax and to some extent, grammar, and leaves them to enjoy the world of logic, realized through the instant gratification of a button click. I saw this in the eyes of the 3rd graders as well. The joy of making the cat move and say something is amazing, all with a mouse click! Interestingly, one of the teachers noted that Scratch was all well and good, but how does this relate to the real world of programming. So I had to tell her about App Inventor.
I do realize, that in the Sugar world, we have a preference for Turtle Blocks, because it goes beyond block programming, and allows one to transition to Python (or other languages). I've seen how you can bulid gears in Turtle Art, export to the Journal, and open it up in Physics. Pretty impressive, given that Physics itself cannot do gears! I'd love to have used Turtle Blocks instead, but that business of running in a browser made all the difference, and we went with Scratch.
The other set of lessons we learned have to do with working with the rigid politics of school systems in the US, but that's another blog.