This weekend we took 8 Local Developer volunteers (most pictured below) from So Cal to Desert Code Camp in Phoenix, Az. We taught 7 hours of hands–on content designed to introduce children (ages 5-17) to programming. This is the TKP’s most extensive effort to date at a CodeCamp. Our courseware is found at www.teachingkidsprogramming.org. It was a fun and productive trip – we rented a van and stayed at Llew’s parent’s house, so there was a lot of ‘geek bonding’ going on! Thanks to Microsoft for paying for the van and groceries for our volunteers. We also got to see cactus in bloom (shown below).
Even though we stopped on the way over to see the blooms, we were in town to teach the kids at CodeCamp. Shown below is Dustin Hotard, SoCal developer volunteer teacher supporting the Kodu class. Note that we pair program all of the students (and teachers) as part of the TKP teaching method. We rotate which kid is typing every 5 minutes. Pairing ‘evens’ out skill level differences – especially important at events where the kid’s ages vary widely (unlike classroom teaching). Also pair learning is more social and fun.
Parterning with CodeCamp
Desert CodeCamp lead Joe Guadagno had run a single kid’s track at previous code camps. This CodeCamp had THREE classrooms (and tracks) dedicated to teaching kids technology. Our team staffed 1 of them. To my knowledge this is the largest implementation of kid-focused activities at any CodeCamp in the United States. I have attended many CodeCamps over the years, and was thrilled to see the number of families in attendance all day long.
In addition to learning, there was the socializing, bonding, geeking and eating. Of course, geeks LOVE pizza! Shown below is volunteer, Woody Pewitt, staffing the pizza (lunch) effort in the center court area. Many people I talked to said they were MORE inclined to attend CodeCamp BECAUSE they could include their kids. Joe also said that having tracks for kids was great not only for the kids, but also because the parents could share in the learning with their own kids. It was fantastic to see kid’s showing their parents what they had learned in our classes during lunchtime.
After syncing up on Friday and reviewing (and debating!) what and how we should teach (shown above), we were ready to go. As mentioned, at this codecamp our team taught seven 1-hour units. Specifically, we taught 3 progressive hours of Microsoft SmallBasic recipes for kids ages 10+. We taught the SQUARE, HOUSES and HILOW recipes. Kids were introduced to the following concepts in these three hours:
- Objects, methods, arguments
- Working in an IDE, i.e. intellisense, keywords, compile-time error resolution
- For loops
- If statements
We also taught 2 hours of Microsoft Kodu, a visual programming language, for kids ages 5 and up. Volunteer instructor, Gina Johnston, wrote this course for Desert Code Camp. I published her course on Slideshare – here. In this workshop kids learned to
- Use Kodu – play a game
- Create a world from scratch, i.e. add land, characters
- Program objects using the visual WHEN/DO editor
- Set (world) properties using the visual editor
- Save/Export games
Additionally, we taught a 1 hour introduction to T-SQL queries using SqlAzure. This is a new version of our core T-SQL course. In this course the kids used the SQL Azure web query too to
- Translate English statements into T-SQL queries
- Use the editor to write, debug and run T-SQL queries
- Use the SELECT, FROM, WHERE keywords
- Write progressively more complete WHERE clauses, i.e. using numbers, strings, AND/OR keywords and more
Finally, our volunteer group also supported a 3-hour Lego Mindstorms workshop. Our volunteer (shown below), Thomas Mueller, came appropriately attired in his LEGO shirt and LEGO name badge.
What we Learned
Families are fun. Having a family-focused CodeCamp is a wonderful opportunity to have children understand just what it is that their parents actually do. We actually had one dad video record his kid so he could capture the event of his son learning to program for the first time (using Kodu – shown below). It was common for kids in our classes to have their parents take photos of their work.
CodeCamps are great places for kids – lots of kids. Nearly every kid’s class was full or overflowing. This is no way took away from all of the normal (adult) learning and sharing that happens at a typical code camp. As mentioned, I heard several parents comment that they were ‘really glad’ that their kids were not only welcome, but also, had multiple places to learn while their parents were learning too. One of the reasons I am writing this blog post is to encourage ALL CodeCamps to include kid’s programming tracks.
Hosting a full day of kid’s content is hard work, but it’s a great way to ‘kick off’ a volunteer effort in a new city. We met several, new local developers that were excited by seeing what their kids were learning, and, most importantly, who wanted to start volunteering themselves, so that those kids can to continue to learn after the CodeCamp. I shared our lessons learned and best practices about volunteering in local schools, running after school programs, training school teachers, etc…I believe that this effect alone makes the long drive in the bumpy van back and forth to PHX for all of us worth it. It goes without saying that there is also little that is as satisfying as hosting kid’s first programming experience. Look at the two boy’s faces (below) as they work on ‘getting the robot to do what we want it to.’
How you can run a kids track at your CodeCamp
The key to a doing this is to share the work. It might seem obvious, but the difference between a happy successful “can’t wait till the next” code camp and a exhausted overworked “this is the last time” code camp is having the appropriate number of people. Speaking broadly you first need people who take care of logistics. Logistics include: Demand generation, registration, venue procurement, machine setup (software installs), food & snacks, signed releases for kids, event schedule. The most important aspect of logistics is getting the kids there. Joe did a fantastic job with every aspect of logistics and made it a pleasure for our team to ‘show up and teach.’
The other area is content. For this you need age appropriate software, courseware and teaching methods. The key here is experienced teachers. This doesn’t necessarily mean school teachers, but it does mean people with some experience teaching children, and preferably, that experience includes teaching children technology. From a practical stand point, we find that a class of 20-30 children is best taught with 2 Teachers and 1 or 2 support people we call Proctors. The helping hands of the proctors, shown below during the Mindstorms workshop, are key to helping kids to feel successful while learning.
So, you might be thinking (because all my readers can do math!) 7 hours of class * 4 Teachers per class = 28 Hours of Teaching. That’s a lot of teachers and teacher-hours! And you’d be right. Remember what I said in the beginning about getting enough people? It’s key. Teaching introductory programming at an event (rather than at school, where kids ‘expect to learn’) to full classrooms of varying age kids requires LOTS of focus and energy—but, with the right mix and quantity of volunteers, it can be done. The good news is there are LOTS of programmers (potential volunteer teachers!) already at a CodeCamp. We suggest having teachers teach only one or two classes in the track, so that they don’t burn out and so that they can still enjoy other parts of CodeCamp. If you do so, then they’ll still be smiling at the end of teaching their kid’s class (as Llewellyn is, shown below teaching the HiLow SmallBasic recipe).
What about courseware? You could write your own, and you may want to, but maybe not. Llewellyn & I have a good bit of experience with writing (and teaching) courseware, and we would suggest that you use previously tested courseware (such as ours or someone else's), so you can focus all your energy on teaching. To that end we are recording ‘train the trainer’ videos and writing best practices for you on our website. If you choose to write courseware, we share that for each hour of classroom courseware, we spend about 20-30 hours envisioning, writing, testing, etc…
Another aspect is keep the classroom setup as simple as is possible. To that end, we’ve figured out to run SmallBasic (and our extensions) from USB sticks – so zero install on Windows 7 machine. Also we tried out running the T-SQL class from the cloud. We installed the SQL sample database on SQL Azure and used the SQL Azure web (Silverlight) web client as the student query tool (shown below)– another zero install!
We are also adding a list of teachers in various geographies that have already taught our courseware on our TKP site. Feel free to reach out to these teacher volunteers as resources as well. To get started teaching yourself, we suggest that you first read the teaching notes, watch the videos and then try teaching one kid the 1st recipe. After that if you’d like we are happy to provide teaching training “phone support”. If you do run a kid’s track at your CodeCamp (or other type of geek community event) we’d love to hear about it. Drop me a note via this blog, let me know what went ‘right’ and what you’d like to do better.
Let’s work together and teach the next generation of programmers!