Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm a C# developer by trade but have had exposure to many languages (including Java, C++, and multiple scripting languages) over the course of my education and career.

Since I code in the MS world for work I am most familiar with their stack and so I was excited when Small Basic was announced. I immediately started teaching my oldest to program in it but felt that something was missing from the experience. Being able to look up every command with the IDE's intellisense seemed to take something from the experience. Sure, it was easy to grasp but I found myself thinking that a little more challenge might be in order.

I'm looking for something better and I would like to hear your experiences with teaching your children to program in whatever language you have chosen to do so in. What did you like and dislike? How fast did they pick it up? Were they challenged? Frustrated?

Thank you very much!

share

migration rejected from stackoverflow.com Sep 26 '13 at 3:20

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as primarily opinion-based by gnat, MichaelT, Dan Pichelman, GlenH7, Jim G. Sep 26 '13 at 3:20

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

4  
If my kids end up in IT, then great, but programming is not something I would teach them myself. I'm not a huge fan of "pushy parent" type stuff with sports, let the kids pick their own sports etc, so I certainly wouldn't try to push my career on them. Each to their own of course :-) –  Ozz Feb 25 '11 at 6:58
1  
If I were to teach programming to my son..... my wife would shoot me... she wants a doctor, not an IT geek! :( So consider yourselves lucky... –  Nim Feb 25 '11 at 10:04
2  
show 1 more comment

17 Answers

up vote 19 down vote accepted

Are you kidding, people? C?! I wonder no one suggested x86 assembly yet.

Programming languages are all about abstracting away all the details not important for achieving the task - writing a program that performs a given task. And you want to drop 16 ton weight of unsigned longs, segmentation faults, null-terminated strings and void pointers onto the gentle and innocent human being?!

C was made 40 years ago to abstract away all the intricacies of assembly language, at the time using it was a huge improvement over mangling bits and carry flags around.

I beg you, don't start prematurely optimizing your kids. Give them the highest-level languages possible, with as little boilerplate code needed possible, something that they can start typing and seeing the result right away.

So, anything - Python, Ruby, CoffeeScript, Scheme, there are myriad modern languages nowadays. Leave C to history.

PS: What saddens me even more is that some of you already started about the market and whether language A is more paid for than language B. Guys, if you wanted to make an investment, you should have gone to the bank, not make kids. Jeez.

share
3  
+1. Don't think about the market. Let the kids try out programming and see whether they like it. Plenty of time later to learn stuff for commercial reasons. Anyway, how old are these kids and when will they hit the market? It will have changed by then anyway. –  MarkJ Feb 25 '11 at 12:37
show 4 more comments

I will go with: Scratch ( http://scratch.mit.edu/ ) . Something which helps children in building there creativity and problem solving (with fun).

share
1  
+1: You skip all the boring details (like all the voodoo to run multi-threaded) and just say what you want. When you see what kids have done with Scratch it is quite impressive! –  user1249 Feb 25 '11 at 7:13
show 1 more comment

I haven't taught my kids anything as they don't exist yet. But when I do teach kids, or try to get them interested, I start with basic drawing stuff. Hackety Hack has a Turtle.draw library which behaves like the classic Logo drawing program. From there it expands to drawing more complex things including animation. After that simple text games like Guess the Number and then possible Nim. While they may not grasp the concepts that these games teach older students (Binary search and bitwise operation, respectively) they're great and simple things to make. If they're still hooked after that, the sky's the limit.

share
show 1 more comment

I learnt LOGO at school, making drawing with the turtle, when I was a kid and I think it is a nice language to get started with programming concepts.

Last year, i wanted to learn the raphaeljs lib and I made a online version : http://www.tortue-logo.fr/

a 15 years old kid ask me for a 2 days training period with the will to learn a few things about programming. I proposed him to make some scripts in LOGO. He managed to make some nice drawings and it seems that he liked it.

So I would recommend LOGO, quite simple and fun. It will make understand some of the main concepts and see if your son like to try solving problems in front of a computer. Of course, it is not a real programming environment but i think that's not what is expected when getting started.

I hope it helps

share
add comment

If you want to teach your kids, then C is probably pretty good. It's simple to begin with, but can stretch a long way. Write in a text editor and there's no intellisense, obviously. Kid will learn a lot of programming fundamentals, probably a ton of bad habits, etc.

The other alternative I'd suggest is Javascript. It's infinitely more relevant to today's world (sorry, C programmers, but there are many more jobs in javascript and it's only growing) and you can - again - easily write it in a text editor. Better yet, it doesn't need to be compiled, you can work with an existing framework so you see bigger results sooner, and you can put it online to show your friends.

share
show 5 more comments

I will go with lisp. If he can understand this stuff, then he will probably pick up any other language fast. If he doesn't then he will loose interest in programming and instead may choose career in sports where chances of maintaining good health is high.

share
show 2 more comments

I've had success teaching (a subset of) Ruby, as well as Scheme with some help from The Little Schemer. It's something I've given a lot of thought to, because it depends a lot on what you are really trying to teach them. Obviously very few people will teach others a programming language for the sake of a programming language. Are you trying to illustrate how computers work and how you can work from them? Are you trying to show them how they can make their own computer game? Are you trying to steer them towards programming as a profession?

share
add comment

I started teaching Java, because his favorite online MMORG game was written in Java and he insisted on learning that. We quickly realised that that wasn't going to work. I was having to explain exception handling and a whole load of other fluff before he even had a basic concept of variables.

So we gave up on that and moved to Ruby. Luckily our dog is called Ruby, so he was quite keen to learn that.

Ruby is much simpler to get started on. You can ignore a whole load of extra stuff and just start on the basics step by step.

We still have a long road ahead tho, its taught be a lot about how simple programing constructs that I just take for granted are actually pretty abstract and take a lot of mental mechanics in order to think in the right way.

share
add comment

Programming langauge is not usually the best way to get starting with problem solving. For a "lay" man who is not interested in programming it usually turns out to be a daunting task and might play negatively on them by disliking it altogther. One way of making them interested in problem solving is buy them Circut Boards and let me build creative things like Burglar Alarm, or a Radio etc. Check out the following link:

http://www.amazon.com/Elenco-SC-300-Snap-Circuits/dp/B0000683A4

This is something which usually kids can find interesting also as they get to play with their Invention!

share
add comment

If I were to teach children programming, I might start with AntMe, however that only seems to be availble in German. That is the language I am most likely to teach children in anyway, so that isn't a problem for me, though. AntMe uses C# or Visual Basic.

share
add comment

One of the first things I gave my son was Squeak, which he quite soon learned how to use. I haven't gone into the programming mode (I feel that perhaps he should first learn to read and write English, his second language), but the leap shouldn't be that high at this point.

Personally, I don't think there's any point in trying to budge kids (or anyone) into programming in any specific language. That's the sort of thing they will do much more efficiently themselves if they want. Teaching about the basic principles is more important, because, well, the basic principles are important, and they are the sort of things most people won't teach themselves naturally.

share
add comment

If I were to teach my children programming languages, I obviously would start with python, because it is simple and has almost every paradigm inside it, and a lot of libraries too. Or I would let them discover programming for themselves (it worked for me...)

share
add comment

In my opinion Python would be an ideal choice . Since Python as a language has less magic stuff. The syntax is straight forward . You can only teach the basic stuff . Your main responsibility is to get the child interested (eg . writing small games). I feel it is very difficult to 'teach' after a certain level . That is not what we want also.

share
add comment

Well, I don't have kids yet, but I would teach them processing (http://processing.org). The initial threshold is very low (e.g. a single line with a drawing command can be compiled and run as a program), it's easy to make graphics-oriented interactive programs with it, and you can access any Java class with it. Oh, and it's cross-platform, too. :-)

share
add comment

Someone else has already suggested Scratch, but I am not allowed to upvote or comment yet, so forgive me for duplicating that suggestion :-) Being a programmer with a past in children's education I find this question very interesting.

I have already used Scratch for teaching kids programming and I found it immensely satisfying to teach them. Scratch is all about visual programming, using visual blocks of code that you snap into place. You control sprites using this code and before long your kids will be able to make a game. After introducing the kids to Scratch for 10 minutes on a Monday I got fully-fledged games with moving sprites and event handling by Friday. And this was done by 11 year olds without any assistance after the second day!

If what you want is to teach kids PROGRAMMING and LOGIC, as opposed to quirky syntax, I find that Scratch is the way to go. At least first, as a way to whet their appetite for programming. The big hurdle is getting them to think like a programmer, and Scratch achieves that with ease. After that, learning syntax, be it Ruby (as in Hackety Hack) or Scheme will be a breeze compared to starting from scratch.

share
show 1 more comment

I don't have any children, but python seems to me to be the best candidate. On top of that, I think it's also important to teach HTML first: it's not a programming language, but it teaches the first important thing of computer languages: "it's a source file".

share
show 3 more comments

My kid is still too young. If he is interested in programming sometime in the future, I will probably pick among:

share
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.