I am a software engineer, database developer, web developer, social media user, programming geek, avid reader, sports fan, data geek, and statistics geek. I do not care if something is new and shiny. I want to know if it works, if it is better than what I use now, and whether it makes my job or my life easier. I am also the author of RegularGeek.com and Founder of YackTrack.com, a social media monitoring and tracking tool. Robert is a DZone MVB and is not an employee of DZone and has posted 88 posts at DZone. You can read more from them at their website. View Full User Profile

36 Resources To Help You Teach Kids Programming

07.23.2011
| 62892 views |
  • submit to reddit

As a parent, I am always looking at what my children are learning and what they like. As a software developer, I hope that my daughters embrace their inner geek one day and get involved with technology. That being said, I was wondering at what age kids should learn programming and what resources there are to teach kids programming.

I found that some people were starting the education as early as 6 years old. That seems a little early to me as the child barely has any formal educational background, and logic is not something children embrace that early. A more common age seemed to be around 12 or 13, or the equivalent of 7th or 8th grade. Obviously, this should not be taken as a strict rule given that some children will be more advanced, or even just figure out things a bit earlier.

Now that we have addressed the age issue, the big question is what programming language should the child learn? This type of question is a bit narrow as it eliminates the learning environments that are programming based, but not syntax based. The other problem with this question is the near religious fervor it tends to attract as people try to promote their favorite language or discredit their most hated language. With that in mind, I decided to collect the information that I could find that could help kids learn programming.

Traditional Languages

This section will probably draw the most criticism. Traditional programming languages, meaning the ones that the parents are using in their jobs, are the most direct way to teach programming. However, a direct approach may not work as well with teens or preteen children. Given that this is not a new problem, many people have written tutorials on how to teach their favorite language to kids. The list below is in no order and just provides a simple reason why it may be a good language for kids to learn.

  • Lisp and Scheme are used heavily in research oriented universities when teaching an introduction to programming and the theory of programming. When I first learned these, I found them difficult to grasp given that I had a procedural background, but academics continue to sing the praises of these languages for ease of learning. There used to be a recommended tool called DrScheme which has now morphed into Racket.
  • Java would not be my recommendation given the extent of the libraries and the difficulties of teaching object oriented programming. However, given the popularity of the language, there are sites targeted to younger developers and tools like Greenfoot and BlueJ to make learning easier.
  • C/C++ is probably one of the more difficult paths to take. There are limited resources for teaching children, but given the continued popularity of the languages they need to be considered.
  • C# would be an interesting choice when you include the .NET libraries. Like C++, there are not a lot of resources but Microsoft does have one guide for “Sharp Kids”. With .NET, you could focus on building web applications which could add to the “interestingness” of the education.
  • Visual Basic is an easy language for people to learn, given its BASIC roots, and adding .NET give it the same benefits as C#. Again, Microsoft has a guide for “Very Bright Kids”.
  • Smalltalk and its variants like Squeak continue to be recommended when people ask about learning programming. The most recommended tutorial is now called Bots Inc that is based on the book Squeak: Learn Programming With Robots.
  • BASIC is the language that many in my generation learned (on a TRS-80) when they were young. It is still in use, and Microsoft offers Small Basic for beginning developers.
  • Ruby has a solid amount of resources for teaching kids, especially when compared to other popular languages. Ruby for kids and RailsBridge are good options to review.
  • Python is another popular language that seems to be recommended to younger developers. The most popular recommendation by far was LiveWires.
  • PHP was not recommended too often, but I wanted to include it given that it is easy to create a simple website. Keeping kids interested is difficult, and the feedback of quickly building a website could prove beneficial. Not surprisingly, there is a PHP For Kids tutorial as well.
  • HTML and JavaScript are included mainly to give kids some basic programming introduction, and to allow them to build a website. There is an interactive environment called Waterbear, and plenty of information at HTMLIsEasy.com.

Other languages that were mentioned were ML, Prolog, Haskell and REBOL. These are not nearly as popular as the other languages, and in some cases may introduce some difficulty in teaching because of the typical lack of knowledge that people have of these languages.

Learning Environments And Other Things

In addition to the traditional languages above, there are websites and interactive environments that focus on teaching children. Some of these resources are just websites, but others are interactive learning and development applications. In some cases, I included a site or environment above with its base language, like Waterbear for JavaScript.

  • MSDN Development for Beginners, Kids Corner is an interesting resource from Microsoft for teaching children. Some of the tutorials mentioned above are from this MSDN resource.
  • Teach Kids To Program is a site focused on teaching kids programming using games.
  • Alice is one of the most highly recommended programming environments for kids. There is a Storytelling version that is geared towards middle school education as well as the base version for high school and college.
  • Logo is one of the oldest teaching languages and it has evolved into many things. There are Windows versionsMac versions and plenty of tutorials available through some simple Google searching. LCSI Microworlds is one of the more advanced (and commercial) options available.
  • Phrogram (previously known as KPL) is another often recommended environment. It has grown from being child-focused to being a general purpose environment based on .NET.
  • Scratch is a programming language developed by the Lifelong Kindergarten Group at the MIT Media Lab that allows you to create interactive stories, animations and games. This is another popular recommendation with a lot of information and tutorials available.
  • Colobot (Colonize With Bots) sounds like another interesting option. The Wikipedia page explains the education portion of the game, “The main feature of the game which makes it educational is the ability of the player to program his robots using a programming language similar to C++ or Java.”
  • Terrarium is another graphical environment and game, which was developed by the .NET team. It is not focused on children, but it is considered a learning environment for .NET.
  • Lego Mindstorms are robots that have interfaces and projects in various languages. This is a cool concept because you can easily craft a program to control the robot. It definitely keeps people interested, and there is a ton of information available.
  • Stagecast Creator was recommended several times, specifically when targeting younger, preteen children. The biggest reason kids will like it is that they can build games using the environment.
  • ToonTalk, “Making programming child’s play”, is an animated world where kids solve challenging questions. Interestingly, it is one of the few resources translated into several languages.
  • GameMaker is not targeted towards children, but is a game building application that does not require you to write code. Given the non-code basis, it was recommend several times as a good way of learning programming while keeping kids interested.
  • Interactive fiction is something that I remember fondly, and Inform, the most popular interactive fiction language,  is still being used. It is based on natural language, so it could be easier to learn than other code based languages.
  • Learn to Program a book by Chris Pine has been recommended several times and is one of the few books recommended at all.

If you start searching, there are a ton of game programming sites, interactive programming environments and variants of the languages listed. You could spend days creating a list of all of the information available. Hopefully, this list gives you a good starting point in educating your children.

References

There were a bunch of sites that I used in this research, but I wanted to highlight a few as being quite helpful and useful resources in their own right.

References
Published at DZone with permission of Robert Diana, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Jochen Bedersdorfer replied on Mon, 2011/07/25 - 10:13pm

Thanks for this!

I'm a bit older, but I'm tempted to try GameMake now ;)

Oliver Plohmann replied on Wed, 2011/09/21 - 2:25am

Hi,

Smalltalk was made exactly with this purpose in mind to make it easy for kids to write software. A Smalltalk expression should be readable as a normal phrase. Hence the name Smalltalk. I once attended a workshop with Adele Goldberg and she made it very clear that this was her main intention when she worked on Smalltalk with Dan Ingalls and Alan Kay.

Cheers, Oliver

Nick Antonaccio replied on Thu, 2013/03/07 - 8:33pm

I'm always sad to see that Rebol never makes it into any of these lists.  It's so much easier to learn than even BASIC, but it's a really powerful commercial environment.  Kids really enjoy learning it because they can do so much right away.  I wrote an introduction to it at http://easiestprogramminglanguage.com

Vj Grimes replied on Mon, 2013/04/08 - 2:05am in response to: Nick Antonaccio

Looking around for what high school teachers do with ITC for maybe 12 to 18s. Thanks for the heads-up about Rebol (easier than BASIC?, hm, I hadn't thought of BASIC, not in 30 years), Rebol sounds a good way to launch. I have HTML, SQL-Transact, and then Rebol. Optimistic now--and that's what net, night school, and library are for. Smile, sigh.

Vijay Amirtharaj replied on Mon, 2014/05/12 - 5:08am

I have purchased software products from centaurs lab(centaurslab.com) in chennai. It is one of good product i never seen like this. good customer satisfaction . they(centaurs lab) are developing kids educational software also.

Darren Martin replied on Mon, 2014/06/30 - 10:47am

Hi, click here for many various physics games and puzzle games that you can also consider, for kids to take samples on game coding, this is just simple because they are flash types of games.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.