Last week I taught a 4th/5th grade class an introduction to computer programming.  It was chaotic, as such classes sometimes are, but fun.  I hear the kids enjoyed it and am planning classs #2 for Friday.  I decided to use Shoes which uses the Ruby language and includes some nice graphics and UI primitives (some notes on why).

Here’s a few notes about the experience:

  • I told the kids that they would be learning Ruby, which I use in my work, and they seemed pretty excited that they were learning a “real” programming language
  • Kids loved the name “Shoes” — laughter and joyous confusion when I was explaining what it was
  • I started the class with a computer history presentation which could have been a full hour long class itself, the kids really liked it and wanted to ask more questions & make
    observations (I ended up spending 25 minutes on this, instead of my planned 10 min). They were really interested in the computer history talk and were excited to hear about the stuff created in their lifetime that they actually knew about and used.  I made sure to mention both women and men in the history (Charles Babbage and Ada Lovelace working on the difference engine; later the two guys who created the hardware and six women who created the software for the ENIAC).  I also made sure to discuss recent history.  Half the class was not yet born in 1998, and for them the Web, Google and YouTube are contemporary with microwave ovens (e.g most people use them). My timeline ended with:

    • 1993: World Wide Web created
    • 1995: Shockwave & Flash first released
    • 1998: Google website launched
    • 2004: FlickR website launched
    • 2005: YouTube website launched
    • 2007: Shoes released!
  • I need to work more on the setup, since I can’t seem to rely on the school computers no matter how much time I spend setting them up (4 hours
    the day before).  There’s all sorts of odd issues with the student accounts not having correct permissions and some computers having special
    cleanup software which wipes everything you just installed when the computer restarts (!)  I was considering putting Shoes and Notepad++ on a USB drive and see if they can just access the installed software from there, but a RailsBridge volunteer is experimenting with creating an Ubunto LiveCD with Shoes which I’m pretty excited about.  Meanwhile, for Friday, I’ve made some progress with install issues on the school computers — cross your fingers for me.
  • What I normally do when I have taught programming before is a coding demo with students following along and typing with me.  I wish I had done that.  Instead, because of the set up glitches, I let them follow the instructions while Chad, another RailsBridge volunteer, and I tried to debug various install issues… and the instructions weren’t really made for that.  Interactive Q&A is a teaching style that works well at this age. I think it would be good to accidentally (on purpose) create a syntax error and have them see me debug it.
  • I didn’t complete my whole lesson plan in the first class… so I have plenty of material for class #2.

I’m publishing the lesson plans as part of the RailsBridge project “teaching kids” which is just starting up — if anyone is interested in collaborating, let me know or just sign up for the RailsBridge google group and chime in.  The worksheets are published on github.

It has been an awesome experience working within the RailsBridge community and the super friendly shoes list.  This is stuff I would be doing anyhow, but with a community of collaborators, I feel like the work I am putting in will not only teach and inspire 28 kids in SF, but perhaps spread to other schools and families through the resources that are being published and the excitement generated on the lists.

12 thoughts on “teaching kids to code: first lesson

  1. While I was sorry to hear about your configuration issues, this post brought a big smile to my face. I hope we can look forward to more posts about your adventures in teaching.

    As a veteran programmer and the parent of a clever little girl, I appreciate all that you and your colleagues are doing in this area. Looking forward to hacking some wee Shoes programs with my daughter when she’s a little older!

  2. If you are looking for stuff to do with younger kids, you can check out http://www.flyingpaperclips.com/ which is a catalog of science experiments for first graders (suitable for K-2 and a few for younger or older kids). Young children are natural scientists and encouraging that early is wonderful.

  3. > Kids loved the name “Shoes”
    hahaha. Cool!
    Great success. Congrats!
    I’m really looking forward to read your next adventure report of this project. :-D

  4. Hey great stuff! Been trying to teach my girlfriend ruby, but didn’t get far enough with Shoes. She is a teacher (science/physics) and there are some interesting applications for simple GUI coding in a classroom environment.

  5. Pingback: teaching kids to code: first lesson « Ideas for Teaching Computer Technology to Kids

  6. I am a lateral entry school teacher acquiring my teaching certificate for High School mathematics. My prior career was a computer programmer for many years.
    At what do you think that students will actually be able to code and understand the concepts behind the computer programming? Would coding a game program be a good way to start off?

  7. Sarah, I’m encouraged by reading your story of teaching 4th-5th graders and your other work teaching Ruby to women. Starting yesterday, I’m teaching my 11-year-old daughter how to program. (I taught her rudimentary HTML in the last year.)

    I don’t plan to use the RailsBridge curriculum–I’m using Chris Pine’s “Learn to Program” book instead–but I will incorporate some good ideas you described in this 3-part tale of teaching kids to program. Talking about computer history is a great idea, especially things that were created during the kids’ lifetime. Your flashlight demo sounds great as well.

    I’ll document our progress (mine and hers) on my blog, starting with http://ilikestuffblog.com/2011/01/02/teaching-my-11-year-old-daughter-to-program-in-ruby/

    Thanks for the ideas.

  8. I’m so jealous of those kids having a “history of computers” class. Back when I was in 5th grade, my teachers were so new to the languages themselves that when there were glitches, our “mission” was to help them reprogram our own computer. Super fun, but we had to reinstall couple of computers. However, I started making a living programming and setting up “older people’s” machines by 16.
    I’m talking about some 15 years ago, though. It was basic basic Internet, office and QBASIC (yeah… believe it).
    Good luck! sounds like you can have a blast with those kids.

What do you think?