About every two weeks my wife and I teach a free Scratch class. We've taught two classes so far. I drive the class but my wife does most of the actual knowledge-imparting. I've been really bad about writing notes down after each class and putting them online. Here's what I can impart in an 8-minute writing spree. I've done about...15 Scratch classes now?

IT setup is always a problem, although really the least interesting. We have students bring their own computers. We don't pass USB sticks around. I'm worried kids will give each other computer viruses and passing around flash sticks will be slow. Instead I bring an ok quality TP-Link WiFi router. Every class I plug in the router, which gives out IPs on 10.0.0.x. The router is not connected to the Internet. I put up a Scratch program on the TV that cutely instructs the kids how to get on the WiFi. My computer is running a web server which serves up a recent version of Scratch and Adobe AIR. Although this has not been without hiccups, it has worked shockingly well. Sometimes it works for 100% of kids. It is the most reliable way I have found to transfer files to a bunch of strangers. I'm always worried one kid's computer viruses will man-in-the-middle everything...Oh and why not direct kids to just to go the website before the class? 1. No one will do it. 2. The Scratch MIT site is really really slow in China.

What to teach? Generally the best way to get kids going is practice. We don't spend a lot of time explaining concepts. Certainly never more than 5 minutes. During an intro class I will do an exercise I read about on the Internet awhile ago (sorry I don't have the link). That teacher would have the kids 'computer program' him to make a peanut butter sandwich. The teacher would refuse to follow instructions that are too high level. I do the same thing, but my exercise is "program me to drink coffee". The kids have to precisely program me to drink coffee. I start a little bit behind the coffee. The first thing the kids usually say is "walk forward". And depending on how funny/painful it would be, I either walk only 1 step or keep walking into the wall. The kids usually catch on. I preface and end with exercise by telling them that computers are extremely precise but very dumb. You have to translate your intentions into small steps the computer can understand. I draw a little whiteboard picture of a person thinking an intention like "Make the cat jump" then that is translated into blocks. This exercise seems to help.

First of all if you try to teach fancy Computer Science concepts like recursion - forget it. No one cars. Make that cat spin!! And then make 100 cats! Now make them bounce around! Kids love visuals (I have never taught blind students).

I'm a believer in letting kids try blocks and experiment. Just getting comfortable with the different blocks and how to put them together I think is the most important thing. For the first class I begin by showing them the X-Y grid, angles, movement, and talking. Because once they get comfortable they can experiment. I never tried to get them to plan their programs in advance or write out the different parts (That may have helped - not sure).

I've found that younger kids seem to easily get lost. I think 8 is the minimum age where you can have a chance at creating a shooter game by yourself if you're really dedicated. 10 year olds have much easier time with the concepts.

Bed time for now. Email me if you are teaching a Scratch class and have questions. Be warned that I am not a real teacher and I am teaching in a weird situation.