Skip to content
August 7, 2011 / cdsmith

An Invitation for Kids to Learn Programming

I wrote in my last entry about the class I’m teaching this school year for kids learning programming in the Haskell programming language.  After the response there, I talked it over with people involved, and we decided to extend an invitation to other children to be “virtually” part of the class!

If you:

  1. Know a child who would be interested in learning programming, and
  2. Know something about computer programming, and know or are willing to learn the basics of Haskell

Then I’m inviting you and the child you know to join our journey for the year!  You’d be volunteering to do the teaching, but at least we can have a group of kids all learning at the same time.

Here’s what that means.

The Projects

We’ll work throughout the year on a sequence of increasingly involved projects involving computer graphics, ranging from drawing pictures to creating computer games.  I went into a lot more detail about the plan in the previous entry, so I encourage you to go back and read it if you didn’t before.

The key point here is that we want to provide several opportunities for kids:

  • The thrill of building something they are proud of, and getting a computer do what they want, rather than the other way around.
  • Practice in abstract thinking that will prepare them for mathematics, logic, and life in general.

It’s not really a goal at all to prepare students for a computer programming career, nor to teach the programming language we’ll be using (Haskell) in any comprehensive sense.

The Community

First of all, everything we do in the class will be summarized on this blog, in posts in the “Haskell for Kids” category.  My students will be assigned to come leave comments on each post with questions, comments, or thoughts they have about what we did that week.  We encourage you and the child you’re working with to do the same.  Please respond to each other’s posts, and talk about what you find interesting as well.  Our hope is that not only will everyone learn programming, but that we’ll also be able to build a community of kids who know each other and care about each other’s accomplishments.

One of the things we’ll be doing the first week (which is next week.., wow!) is recording videos where students introduce themselves and talk about what they hope to get out of this.  We’ll put these on YouTube, and I’ll embed them in the first blog post.  Any other children participating are encouraged to do the same.  If you leave a link to your own video, I can embed it in that post as well!

I tend to be in favor of letting people have awesome experiences, rather than obsessing about safety… but a few common-place restrictions are needed here.  Please don’t post comments in the Haskell for Kids category with profanity, insults, etc.  Let’s be a supportive community.  Please also make sure kids don’t post phone numbers, addresses, or other contact information that really could compromise their safety.  I’ll be watching comments on these posts a little more closely than the rest of this blog, and  I will try to actively remove comments that are problematic, more than I do elsewhere.

Sharing Projects

One of the really cool aspects of this is that we’ll be building stuff — in the beginning pictures, then animations, and finally games!  It’s way more fun to share the stuff you’re building with others.  So I’ve set up a version control repository for all the kids’ projects.  The goal here is to let people easily get, compile, and try out the projects of others.  I’ll be happy to add anyone else that’s participating as a committer, so that you can add your students’ projects to the group, too; just ask in a reply to your child’s comment introducing themselves, and ask.

For anyone that doesn’t want to figure out how to set up darcs or use version control, you’re also welcome to email me your child’s source code in a zip file, and I’ll handle getting it checked in; but there might be delays of a day or two before others can get your code if you do it that way.


Every kid that’s participating will have a teacher: for the kids in the physical class, that’s me.  For the kid you know, that would be you!  I considered trying to set up a way for all of us teachers to talk to each other about lesson plans, feedback on what to do and what to spend more time on… but then I realized that there’s no real reason to be secretive about it!  We can use blog comments as well, and if kids read it and find it interesting, so much the better!

For rare (hopefully nonexistent) occasions where we really do need adult-only conversation, a lot of the people involved in this are already using Google+, so we can coordinate building up a mutual circle for adults involved in this project, and communicate there… if you want to be part of this, we’ll coordinate it after kids do introductory posts next week.

What Ages?

The students I’m teaching are in the 7th grade in U.S. terms, so about 12 years old, turning 13 during the school year.  Kids younger than that are always welcome to participate, as long as you (“you” meaning the responsible adult) feel like they will be able to keep up, or at least that it’s worth a try.  Kids older than that are welcome up to a point…

That point is defined by the idea that we want this to be a group of peers, and something that kids are doing for their personal development and fun.  I don’t want to set an age limit, but if I did, maybe it would be 14-15.  In the end, though, it depends on personality: some teens are happy to learn alongside younger kids and interact as peers, and some are not so happy about it.  And, if an older teen is learning programming as a possible job prospect, I wish them well but they are also not likely to find this the best way to do that.  You presumably know the child you’re thinking about, so feel free to make a judgement call!

Of course, children of any age — even those that are middle-aged, or collecting pensions — are welcome to read the blog, and pipe in with helpful comments and encouragement!

What Next?

My first in-person class will meet a week from Tuesday.  Sadly, a fair amount of the first two weeks is likely to be taken up with getting software installed: the Haskell Platform, for example, and a text editor, and becoming accustomed to using the console, changing directories, and typing commands.  We’ll also talk about the high-level ideas of compilers and programming languages and how they fit together, and play around with using GHCi as a calculator and with entering and running simple programs.

You can expect the first “real” blog post (the first one that follows an actual class) to appear Wednesday of next week, and that’s when we’ll ask kids to start commenting.  See you then!


Leave a Comment
  1. Erik / Aug 8 2011 1:37 am

    Seriously? Starting kids on Haskell? That programming language is archaic and mysterious, if you learn Haskell, picking up other programming languages may be harder because Haskell is so fundamentally different from most programming languages.

    I support this program though, good luck :)

    • Anonymous / Aug 9 2011 4:38 pm

      Archaic is not a word to describe haskell given its research-oriented nature.

  2. anand jeyahar / Aug 8 2011 2:55 am

    I would like to join too. But don’t know any kids i know here in Bangalore. Anyone?? I can help with both programming and svn maintenance though.. Let me know, if you need any help.

  3. Ken / Aug 8 2011 12:58 pm

    A personal suggestion: generate images of the Mandelbrot set. The math is really not that hard (z<-z^2+c). This was the computational experience that really got me hooked on computer programming as a kid:

    Also, some Haskell code for the Mandelbrot set:

  4. matthias / Aug 8 2011 3:51 pm

    It should never take two weeks to install a platform with kids. Get them going on animations. Make rockets fly. Make cars drive. Do it in the first five minutes. For the normal kiddie platforms (Mac, Windows) Racket installs in five minutes and in five more minutes every child has run the first program. If you want to avoid installing any software, run it all on-line until the kids are ready to instal a package:

    • cdsmith / Aug 8 2011 4:16 pm

      Thanks for the comments, but no I’m not going to throw out six months of planning and change to a different curriculum in Scheme a week before the first class… especially just because it’ll take an hour or so to get things installed on everyone’s laptops.

      • matthias / Aug 8 2011 6:00 pm

        Sorry. I am not trying to push you to use Racket. My post is a reaction to the statement that the first two weeks are about installing the platform. Anyone else who is following should know that you do NOT need to install anything to teach kids functional programming; WeScheme runs just fine in the browser, with functional animations and games and all. Once the kids exhaust its potential, there is a seamless transition to DrRacket. (WeScheme will soon run a Racket-JS backend.)

        Also, I think you would benefit from exploring the ideas of Bootstrap, WeScheme, and Program by Design while your kids learn Haskell. You will be surprised by what you find out. It’s all functional, it’s all animation and graphical interactive games in a short amount of time, and you should be able to adapt the code to Haskell in a flash (if the library you plan to add to Haskell really is purely functional about animations and interactive games).

  5. Shriram Krishnamurthi / Aug 8 2011 4:07 pm

    If you want to do this, check out Bootstrap. Functional programming goodness, already tested and working with the age-group you want, created by a combination of programming languages researchers and education researchers (with real research in both areas contributing to the design), and with user support. And you start programming right away instead of spending two weeks putzing around!

    • cdsmith / Aug 8 2011 7:44 pm

      I’ve definitely looked at Bootstrap a lot. It’s not exactly what we’re doing, though, for a few reasons: (a) average student age is under 12 and the lessons seem aimed a bit young, at least for the students I met last year, (b) the curriculum is intended for something like a fourth of the amount of time, and (c) it looks a lot more guided than what I am aiming for, with very specific game mechanics and less creative freedom (related, of course, to have only a fourth of the total time)

      So it’s a great resource for comparison and to copy some good ideas; but it’s not the same thing.

  6. tezcatl / Aug 8 2011 10:03 pm

    I was caught with your idea since the very first post about this, and i’m trying to learn Haskell myself “for great good” ;-) I’m sure this is going to be a great success indeed. I disagree to people saying what is hard to they (because unlearning has been hard in first place), it MUST be even harder to learn for kids. I actually enjoy talking with children ideas so easily to they to understand, than to grown people even too hard to try to think about it.

    This said, i enjoy a lot studying math with my daughter, and we are willing to follow your course. We meet Scratch a some time ago, and she did a couple of animations. Also, since we are not exactly bilingual, the communication with yours and other students can suffer a little lag. Anyway, i don’t see overwhelming obstacle to follow you.

    By the way, i’d like to translate to Spanish your course materials (I worked a little bit with Fedora project and, please let me know if you agree with redistribution of the translations i’m going to do for my daughter and other friends, under a commons-friendly license.

    I’m looking forward for the beginning of the course!

    Jesús Franco

    • cdsmith / Aug 8 2011 11:13 pm

      Absolutely, feel free to translate anything I write! I only hope that I can keep it be worth the time to do so.

  7. Søren Hilmer (@hilmer) / Aug 12 2011 1:08 am

    My son and I would like to participate.

    How do we register? Where do we upload video?

    I’m not that familiar with Haskell, but I have set it up, and installed darcs and gloss, anything else we need for the course?

    You wrote that next week, will be used to get familiar with ghci, do you have exercises for that?

    Also the class is 2 hours a week, when are they placed?

    Looking forward to it.


    • cdsmith / Aug 13 2011 5:27 pm

      That sounds great! My first in-person class is on Tuesday, and on either Tuesday or Wednesday, I’ll be posting the first class update. The time for students to introduce themselves is then.

  8. Your name / Jun 28 2012 4:41 am

    I was recommended this blog through my cousin. I’m not certain whether this put up is written through him as nobody else recognize such precise about my difficulty. You’re incredible! Thank you!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: