How can my ten-year-old best learn programming?
Hi, and thanks in advance for any help you can give.
My ten-year-old son is a prodigy at math and logic. I know lots of parents claim this -- believe me, I've been around plenty. But it happens to be true in this case.
He wants to learn programming, and I don't really know any. He has tinkered with a few programs that don't go under the hood to the code. He pretty well mastered in about a week a nice program called Alice, from Carnegie Mellon, which is a graphic version of Java. He also went to a tech summer camp for a week last year and designed a few games, but again they didn't go to code. He has no trouble with the types of logic that programming uses -- for example, he understood the idea of nested if-then loops the moment I explained it (and immediately figured out there is a danger of an infinite loop.)
What I want to know is:
-- What is the best program for him to learn so that he can stay interested and develop some skills he can use later? It would have to be flexible enough to design games with motion in them, which of course is his interest as a user. My guess is Java, but I don't know.
-- What is the best way for him to learn? I am willing to get a book and work through it with him, but it seems like a pretty difficult process since I don't know what I'm doing and he is impatient for results.
-- Are there online courses, YouTube videos, web sites, or anything else you might recommend that would teach him what he needs to know?
-- What software should he use to learn?
We have a MacBook running OS 10.4.11, if that matters.
- videobobkartLv 61 decade agoFavorite Answer
I taught myself programming when I was 10, the language was BASIC, then 8080 Assembly, Fortran, Pascal, C, by then I had graduated with a degree in Computer Science (at the top of my class). I used a book or two to learn those languages, but mostly I learned by DOING. So you have to WANT to write programs to do things, ANY things. It started out with games, one program would even play Backgammon against a human player, and sometimes win. By age 20 I was designing my own programming languages and implementing the compilers for them. My point is that yours is not at all an unrealistic expectation. These days books are not really necessary, everything is online. I heartily recommend Java, it's not too complex, has graphics, runs anywhere, and is a great stepping off point to C++, C#, and points beyond. I'll repeat that KEY in the process is writing programs for fun, as a hobby, picking tougher and tougher problems as you are ready for them. I could go on but I think you get the idea.
P.S. You will want to expose him to some formal theory at some point, as I was, but the hands-on stuff won't get in the way of understanding that, in fact it will be easier to understand the theory that way since he will have realized some of it already, intuitively, as part of the lessons learrned through trial and error.Source(s): Programming for fun since 1970. What I'm doing for fun these days: http://www.vimeo.com/user1286284/videos
- jplatt39Lv 71 decade ago
While you can very much start younger -- my Niece's son is four and because Daddy works in computers (and Grandpa who he'll never meet was working at Bell Labs when UNIX was being written) he's definitely been shown what a turtle is -- I would have to say Logo is still a very good program for learning programs and doing graphic oriented work. It is not as POPULAR as it was twenty years ago, and it is based on Lisp which is a whole different PARADIGM of programming but it is definitely something a ten year old should look into:
When Nate's mother was little there was definitely Basic -- Microsoft Basic which became GWBasic which became less fun as it became QuickBasic then Visual Basic. Interpreted languages are definitely better to start with, so I do recommend perl or python.
The problem is they are not as well documented for ten year olds, as BASIC definitely was. There is the RealBASIC interpreter/compiler:
It's more like Visual Basic than the old basic. There is also chipmunk basic:
And if you scour your various libraries you should be able to write adventure text games and other choose your own adventure things using them.
Hope those help. EVERY ONE I checked for the Macintosh. He actually could use the Apple Developer tools -- but I know of no child-specific documentation. And interpreters are definitely safer anyhow. He should spend more time with Alice.
- 1 decade ago
That is great to know. A good and solid foundation at an early stage takes one a long way and improve career prospects in the future.
I remember i started programming at the age of 16 in QuickBasic.
There could be so many resources for youngsters to learn programming. Microsoft has a Beginning Developer Leraning Center having many courses absolutely free of cost. And apart from Alice, we have Green Foot and BlueJ for learning Java for beginners.
One important suggestion i like to make here is that one should strat from C or C++ if he or she wants to take programming as a career. Once you are good in these languages and have solid understanding of Object-oriented progrmming concepts, learning others is just like a pleasant walk in the park.
Wish your son best of luckSource(s): Programmer
- Anonymous1 decade ago
I would suggest going directly to C++ or C# if you are planning games, however, even though he is a prodigy, I suggest you start with much simpler games with simple graphics - graphic design in C++ or C# is not as easy as it sounds.
I do not recommend self-learning if he wishes to learn programming effectively. Self-help books might help but the student teacher interaction is a must to get better improvements.
- How do you think about the answers? You can sign in to vote the answer.
- tbshmkrLv 71 decade ago
Objective C (Apple version of C++
Structure and Interpretation of Computer Programs
by Harold Abelson and Gerald Jay Sussman with Julie Sussman
How to Design Programs
by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt and Shriram Krishnamurthi
- darkmaxLv 41 decade ago
Macs are not the best machines to learn codings for programming.
You do sound likw you have a very intelligent boy there.
I would strongly suggest he does a visual basic, unix type of courses. But know this, they may not allow him in as most students are in their teens.
Java and HTML would both be good for internet-based programming.
In computing, as with anything, learning must be through hands on trial and error. Books can only serve as a guide and a reference.
Have you thought of putting him in a Mensa test? If they recognized his talents and intelligence, he could be offered courses no one else can.
- 1 decade ago
I'm 15, i learned this stuff when i was 13.
i did it by taking website stylesheets, pulling them apart and learning what each did. it gave me a basic understanding of it all.
I suggest finding someone who's an expert and then having them teach him 1 on 1
- Anonymous6 years ago
I was looking for a free download GNU Backgammon I found it here; http://bit.ly/1pUD6It
Finally the full version is avaiable!
GNU Backgammon is a version of the popular board game, which you can play directly on your computer. Several different games can be played against the computer, which has a powerful intelligence engine.
It's a really nice game.
- Anonymous1 decade ago
If you are really into game programming, I think C++ is the way to go.
However, I just want to point out, that it isn't necessarily a good idea to throw him into a complicated irritating language that will have little to show for itself for a very long time. This is quite likely to turn him off to it. I would expect that it would be better to go with something more visual, so that he can really "see" his progress. This said, I'm going to suggest something like visual basic. It's not necessarily a great language, but if you go into C , C++ , Java, you're going to be dealing with a lot of command line interfacing. This might not appeal to your child. I think that NetBeans is Java with a GUI, though, so this might be a sufficient workaround, allowing him to write code without having to go to command line. But I haven't used it, so I can't say for sure.
On the other hand, many people enjoy games like Sudoku, which are essentially small problem solving experiences. If you can relay this concept to your son, he might enjoy these other languages quite a bit. I personally feel that way about it, I get excited in the challenge of the program, and as I learn more, I can slowly apply these things to more fruitful applications. But if you take this approach, you should understand it could be a very long time before you progress to anything graphical.
Another thing you might consider is a scripting language, I have a little bit of experience with Python, and a decent amount of experience with Ruby (which makes a good base to learn Rails from, which is pretty big right now in the realm of computer applications). A scripting language _might_ be a nice alternative (probably not if your'e wanting to go into game programming), it has the benefit of making things easier. They tend to be "easy going" few nuances, highly portable, generally friendlier. The downside is that there are things that you learn from using low level languages, that you don't necessarily experience in a high level scripting language (ie learning about pointers in C helped me transition to object oriented programming very easily, and have a decent idea of what is going on back there). It is a bit of a trade off, I suppose. But to learn those low level things, you really have to be dedicated to it.
Whatever language you choose, good luck. And if you do choose to go with Java, I will suggest the book Absolute Java by Walter Savitch, it is the best textbook that I have used (he wrote one for c++ too, but I haven't read it).
Also, for your Mac, if your son gets excited and ends up doing a lot on it, you will need a good text editor. I very very strongly recommend TextMate (it costs money), and I also very very strongly recommend "TextMate: Power Editing for the Mac" to learn how to use it. Good tools make for a happy programmer :) And TextMate is the best that I have seen.
And as a last thought, programming is more than a language, it is a way of thinking, it is an understanding of certain structures, it is an ability to translate a problem into a model for your computer. After he gets settled into a given language, you should really address these fundamental knowledge issues. A good data structures lesson is a must (I really liked my book, but it is written in C. There are certainly other resources, though, and it isn't that difficult to learn them, it is just good to have a reference so you can compare what you have done to what the standard is, and see where you differ, and evaluate why). Data structures teaches you the different ways that have been established for storing data, this is essential for how you translate a problem into a model. Beyond that, the discrete mathematics and algorithms courses are very useful for helping to develop those problem solving techniques and approaches. These are things that you need to address, no matter what language you choose.
Good luck to you, and just as a word of advice, to keep your son interested, so that it is him driving himself, and not you driving him, you need to keep him challenged. Present problems to him and see if he can solve them. This curiousity and challenge have driven me a hundred times further than my own "I should learn something now" thoughts ever have. I think that focusing on this aspect are really important to help him develop his own eagerness for coding, and that will easily transcend any incentives you might provide. Whats more, it develops a very important problem solving aspect in our brains, and teaches him that he can overcome challenges, that is, afterall, what a programmer does every time (s)he sits down to code :)
edit: oh, and keep him away from video games, unless you want to watch his productivity plummet ^_^
- snowboard817Lv 51 decade ago
Get him some programming software to mess around with, C++, D++, website to learn html and java script etc..