Click here to Skip to main content
Click here to Skip to main content

Tagged as

Go to top

Teaching Kids Programming With RubyStory

, 22 Jan 2014
Rate this:
Please Sign up or sign in to vote.
TL;DR version: I wrote some course materials and sample code for teaching the basics of Ruby programming to middle-school kids. The course is called RubyStory and teaches just enough Ruby to create a choose-your-own-adventure style storytelling game. Last year my older daughter started fifth grade a

TL;DR version: I wrote some course materials and sample code for teaching the basics of Ruby programming to middle-school kids. The course is called RubyStory and teaches just enough Ruby to create a choose-your-own-adventure style storytelling game.

RubyStory


Last year my older daughter started fifth grade and brought home a school-supplied MacBook. Which is great. I think it's important to give kids a chance at an early head start to develop technology and programming skills — an early taste, anyway, to see if they like it — particularly the girls.

I set about looking for an appropriate learning resource to teach my daughter. There's a lot out there. Unfortunately, none of it quite appealed to my preferences.

I wanted something easy for me to read, parse out what was being taught, and know what to pass on to students. Many of the course materials I reviewed required a lot of up-front reading, then I'd have to create my own teaching notes.

Adults and older children might be motivated to learn programming for its own sake, but I think younger kids (8-13 at least) don't have the same motivation (exceptions discussed below).

Learning while doing something fun, however, seems to work. So I wanted to start with an interesting goal and make sure each step along the way was both educational and fun.

Finally, the laptops at my daughter's school are locked down, so I needed something that required no software not already installed on the machines.

Ultimately, it seemed easier to create my own materials. As a bonus, as mentioned in my posts about writing about code, I'd probably learn a lot in the process. And I did.

RubyStory

The result is a course I wrote called RubyStory and you can grab all of the materials from Github. The details are covered in the readme.

The course materials are intended for teaching to kids. I suppose they could be used for self-instruction, but my assumption is that kids who are ready and motivated to learn programming on their own are probably also ready and motivated enough to learn from a book or a more traditional tutorial.

I recommend Zed Shaw's Learn Python The Hard Way and Rob Sobers' Learn Ruby The Hard Way. Both influenced the storytelling aspect of RubyStory.

The RubyStory materials are intentionally sparse. There's an outline and sample code and handouts. There's a slide deck, but it's mostly just to show the code examples, which students can then type on their own.

The outline provides a concise overview of the topics to teach, but be prepared to fill in details, answer questions and riff a bit as your students require.

I wrote this course with the assumption that the teacher already has some basic programming knowledge. You don't need much:

  • Creating and using variables
  • Strings and integers
  • Basic math and Boolean logic
  • Printing messages to the terminal
  • Capturing input from the command line
  • If statements
  • Functions

That's all we use. Even if you know nothing about Ruby, you should be able to pick it up quickly. (I knew almost nothing about Ruby before starting this project.)

Why Ruby?

As you can tell from the minimal set of programming concepts covered by RubyStory, it's hardly language specific nor does it really "teach Ruby." In this case, Ruby is a convenient tool.

First, Ruby is already installed on every recent MacBook. The version installed is not important.

We don't need any special tools to program with Ruby, just Terminal and a text editor. TextEdit isn't the tool I'd prefer — syntax coloring would be a nice feature — but we can live with it for simplicity. (The slides do include syntax highlighting.)

Ruby has very simple syntax and very little necessary punctuation. Whitespace and semicolons aren't that important and there are very few parentheses and brackets to worry about. I've found that kids have enough trouble with accurate typing. Simple syntax makes troubleshooting much easier.

Plus, I wanted to learn some Ruby. And I did.

Next Steps

Please fork the RubyStory repo and give teaching a try. I am continually updating the materials as I teach and learn from the kids — what the enjoy, what they build, what questions they ask, where I can help them go next. Let me know what you learn while teaching with RubyStory.

As written, RubyStory should be easily adapted to Linux systems, but I haven't yet into what additional material would be needed for Chromebooks or Windows. It's on my to do list.

Other than that, I'm now focused on using RubyStory for teaching in my community. I hope you will, too.

#

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Terrence Dorsey
Technical Writer ESPN
United States United States
Terrence Dorsey is a technical writer, editor and content strategist specializing in technology and software development. He is currently a Senior Technical Writer at ESPN working on data & architecture API services. He previously was Director of Content Development at CodeProject and Senior Editor of MSDN Magazine and TechNet Magazine. His writing has appeared in MSDN Magazine, Application Development Trends and Redmond Magazine.
Follow on   Twitter

Comments and Discussions

 
QuestionSimple & Good Pinmvpthatraja3-Feb-14 22:06 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web01 | 2.8.140916.1 | Last Updated 23 Jan 2014
Article Copyright 2014 by Terrence Dorsey
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid