While I’m a software developer by trade, I’m also the mother of two school-aged kids, so one of my pastimes is volunteering in various capacities at our local public elementary school. At some point early this school year, in a moment of temporary insanity, I found myself nodding my head “Yes” when a wiser full-time-working parent would be saying “No”, and next thing you know, I had agreed to lead an after-school Computer Club for 4th and 5th graders.
Something I’ve observed that you may have also: by the time a kid is 9 or 10 years old, they are already incredibly capable of wasting copious amounts of time on a computer. This age group (ok, all age groups?) would happily spend all their time playing computer games — Minecraft being the game of choice these days.
My goal with Computer Club was to get the kids away from just playing games and into creating something with their computers — maybe even creating their own games. After a quick survey of developers with kids and the Internet, I settled on teaching basic programming concepts with a language/platform called Scratch.
Scratch is a graphical programming language developed at MIT for kids ages 8-16. A web-based development environment is available at the Scratch website, or a downloadable Windows and Mac native environment is available if Internet access is an issue. MIT provides a nice tutorial on the Scratch site to get started, and I found a book with lots of project ideas. For an experienced developer, the language is pretty easy to figure out, so after a Saturday and Sunday afternoon messing around with it, I felt confident enough to teach it.
However, the language is only half the battle. Remember — I was working with a whole bunch of 4th and 5th graders. There are some logistics that go into teaching a group of kids in this age range. In this blog post I will give some tips for running your own elementary school Computer Club. Next week, I’ll share my curriculum.
Our club met 1 day a week, for an hour and 15 minutes, for 9 weeks.
1. Hold the club in winter.
Let’s face it, kids have a lot of activities these days, which is great — after sitting around in a classroom all day, I think kids should run around outside and play soccer on a beautiful autumn or spring afternoon. Let them.
Save Computer Club for the dead of winter. This winter in Michigan was perfect for it. When the temperatures are hovering around 0 degrees F, there’s no better place to be than in the school library curled up with a laptop writing some code.
2. Don’t under-estimate the number of kids that will sign up for a Computer Club.
At our school, there are perhaps 120 kids in 4th and 5th grade. More than a third of them signed up for Computer Club. We had some attrition, but still we had 40 participants who came every single week. You know all those discussions about student to teacher ratios in American schools with all of the budget cuts in the past several years? Well, 40:1 is pretty overwhelming for those of us who are not professional educators. Make sure you have someone to help you out.
3. Use multi-media; kids love it.
Kids love images, videos, and music. The ability to create and consume colorful graphics and catchy tunes makes a computer-based activity so much more rewarding. Scratch recognizes this, and dynamic images and music are integral to it. Even if you decide not to use Scratch in your Computer Club, I recommend you find some way to allow the kids to express themselves through computer-based media. Just the ability to design an avatar really excited the kids.
4. Don’t over-estimate what 10-11 year olds can do.
The Scratch runtime is fairly flexible and powerful, making it quite straightforward to develop a dynamic game with lots of user interaction. So initially I had visions of my students designing and implementing their own games. I shared this idea with a couple of parents who wisely recommended that I scale back my dreams.
Most 4th and 5th graders have not been exposed to programming concepts yet, so things like flow control, variables, and random numbers are totally new to them. Even with Scratch doing most of the heavy lifting (for instance, handling concurrency and user input), the developer still needs to understand if statements, while loops, positioning a visual object on a coordinate frame, and the like, which is hard for a neophyte to grok in their first project.
Instead, the approach I took was to design the game for the kids and have them implement it, giving them lots of opportunity for customization. This approach seemed to work well. The amount of creativity they brought to their games was astounding, and for the most part they spent little time frustrated and confused.
5. Don’t under-estimate what they can do.
While they may not know Scratch, 10-11 years do know their way around a computer. And they know what’s out there on YouTube. And they know when the adult:kid ratio is low! If you don’t keep them busy and engaged, they’ll spend all their club time playing “What Does the Fox Say” and “Harlem Shake”. They will also mess with the settings on their computer and one another’s files.
Set some ground rules up front, let the kids know you expect them to behave responsibly, and then stick to the rules.
6. Try to have one computer per kid.
Idle hands make for the devil’s work, as they say. And we all know that a bored kid can be quite devilish. If you can arrange it, try to have one computer per kid. Our school’s media center has a collection of laptops and desktops that worked just fine for our club.
I worked with the media specialist to understand the school’s policies for using the computers, and I made sure the kids were aware of those policies, too. The Scratch environment does not require a high-end computer, and what’s more, it was already installed on the school’s laptops, so they worked out just fine.
I did, however, experiment with pair programming (it’s never too early to start on good programming habits!). This actually worked out all right. It helped the kids to work through programming challenges and catch mistakes in their programs, just like it’s supposed to. I did have a few kids who just didn’t get along when trying to work together, so I made exceptions where it seemed appropriate.
7. Get everyone in the mood with some geeky fun.
This tip came by way of previous Computer Club mentors. Starting out each session with a fun, age-appropriate Internet meme seemed to make everyone smile and set a good tone for the club. I can haz cheezeburger?
8. Be prepared to save files.
Saving the kids’ work from one session to the next was a real chore. We had a number of constraints that I think are fairly typical for schools:
- Connecting to a server from our MacOS laptops (be it the students’ storage on the District’s server or the donated Server dedicated to the Computer Club) involves several steps that can trip up the kids, including keeping track of logins and passwords. This approach is time-consuming.
- We tried using thumb drives that Atomic graciously donated to our club, but I had either the problem of collecting them all back from the kids each session and keeping track of them myself, or trying to get the kids to keep track of them from week to week. Either way was failure-prone.
- We were not allowed to install software on the school’s computers, so using a solution such as Google Drive or Dropbox meant we could only use the web interface, which was also more steps than I would care for.
I haven’t yet figured out a good solution for this problem at our school. Suffice it to say that we spent 5-10 minutes each session ensuring that our files were saved.
9. Even so… they’ll lose their work.
There isn’t much to say here. I’ve taught college courses, and those students lose their work too. Just be ready for the tears.
10. You can never, ever, stamp out Minecraft.
Despite my best efforts to keep everyone busy and engaged, there would always be a couple of kids in the back of the library playing a bootlegged version of Minecraft. And one pair of students made the game they created look just like Minecraft.
If you have advice and observations from your own Computer Club, I’d love to hear them!