Slashdot Mirror


Ask Slashdot: Best Book For 11-Year-Old Who Wants To Teach Himself To Program?

New submitter waferthinmint asks "What is the best book for my son to use to teach himself to program? He wants to study on his own but everything seems to assume an instructor or a working theoretical knowledge. He's a bright kid but the right guide can make all the difference. Also, what language should he start with? When I was in HS, it was Basic or Pascal. Now, I guess, C? He has access to an Ubuntu box and an older MacBook Pro. Help me Slashdot; you're our only hope."

525 comments

  1. Python by Anonymous Coward · · Score: 5, Informative

    Have him learn python. On any OS.

    1. Re:Python by Anonymous Coward · · Score: 1

      Have him learn python. On any OS.

      Recommend the book bytes of python

      http://www.swaroopch.org/notes/Python

    2. Re:Python by Anonymous Coward · · Score: 1

      This is the book I used at Georgia Tech, from prof Mark Guzdial. Of course it was for a college course but using a programming language to create an animation would be wildly entertaining to an 11 year old if you can help walk him through it.

      Introduction to Computing and Programming in Python: A Multimedia Approach

    3. Re:Python by LifesABeach · · Score: 4, Funny

      Junior could just "Google" his questions. My daughter says Google holds all lifes answers.

    4. Re:Python by chaosite · · Score: 5, Informative

      I second the python recommendation. Have a look at this (free, available in dead tree format as well as online) book:

      http://www.greenteapress.com/thinkpython/

    5. Re:Python by Githaron · · Score: 4, Informative

      Have him learn python. On any OS.

      If you are going to teach him Python, have him take CS101 at Udacity. It is more fun than reading a book.

    6. Re:Python by durrr · · Score: 4, Informative

      Have him learn Ruby. On any OS.
      With this book: http://www.ruby-doc.org/docs/ProgrammingRuby/

    7. Re:Python by durrr · · Score: 1

      Also, when someone asks what your son is up to, you'll make it appear as if he's a welladjusted teenager, as opposed to endangered by his reckless father.
      "oh my son,he's playing with [a] Python" *gasp*

    8. Re:Python by g0bshiTe · · Score: 4, Informative

      I'll 3rd that.

      Have a look here. http://www.pythonchallenge.com/ I know it's been around forever and a day, but some challenges like this will show him there are practical applications to what he is learning.

      --
      I am Bennett Haselton! I am Bennett Haselton!
    9. Re:Python by chaosite · · Score: 5, Funny

      Nah man, snakes are cool. "Playing with Ruby" makes it sound like your eleven-year-old hired a whore, or perhaps a drag-queen.

    10. Re:Python by Salis · · Score: 1

      I'll 4th that.

      Wow, nigh universal consensus on Slashdot. Next, it'll be snowing in April in the Mid-Atlantic! (erp, nevermind)

      --
      Favorite /. tagline: "On the eighth day, God created FORTRAN." And it was good.
    11. Re:Python by Anonymous Coward · · Score: 0

      A "well adjusted" teenage boy plays with gem stones?

    12. Re:Python by CaptainLugnuts · · Score: 3, Interesting

      It would probably be more fun to set up an 8-bit emulator for the Atari or C64 machines and turn them loose on BASIC there. There's tons of old magazine listings to type in and learn from. It's also nice that it is possible to learn everything that is happening on the (simulated) machine. Being able to POKE a memory location with a value and see immediate changes helps bring about the A-HA! moments.

    13. Re:Python by Qwertie · · Score: 2

      Python is a good choice because it offers an interactive interpreter prompt. Or better yet, see if you can acquire the (Javascript) interactive programming tools by Bret Victor, featured in his CUSEC 2012 talk.

      An 11 year old can learn from books, too--that's how I learned when I was 11 (most of the books in the library were about BASIC, I thought "integer" was pronounced "inte-geer", and I didn't know that other languages existed for about a year.). But I'm not sure it's necessary in the internet age.

      Some have suggested C... give me a break. I started using C when I was 13 and hated it compared to BASIC. I mean, there's no function to read a single key without reading a whole line? No function to check if a key has been pressed? No function for changing the text color or drawing stuff? What's this pointer nonsense? Why do I have to wait for it to "compile" and "link"? I use C++ routinely now, but it's not for beginners.

    14. Re:Python by gorzek · · Score: 1

      Got it in one!

      I taught myself to program when I was about 8. Got a 286 clone with a huge GWBASIC manual. My father explained that I could use it to make the computer do things. I was sold. :-p (I wish I had cut my teeth on something less awful than BASIC, though.)

      I definitely agree that python is a great place to start nowadays. Python's not too quirky or bound to the conventions of a specific platform, it's nice and "generic." The only problem is that he might not want to learn anything else after that. Most languages are ugly or unwieldy next to python (albeit they are probably all much faster.)

    15. Re:Python by Anonymous Coward · · Score: 0

      It holds the answers, but not all the questions, I still can't find the question to 42 from them.

    16. Re:Python by jcreus · · Score: 5, Informative

      Hi. Teenager here. I learnt how to program when I was about 11 (or maybe 10), self-taught. My best recommendation: let him learn how to program by himself. What I did was, and I've done such a thing for all programming languages (8, I think) I know: first, go to the first tutorial you see on the Internet. I believe I used Wikibooks (Python). And, then, leave the tutorial after knowing just the basic I/O and simple statements. Then, give yourself a project. For example, I created one which solved me the maths homework. Something you find useful. And, while doing that, one must learn more features of the language. In case you have doubts, be self-sufficient: just f*cking google it, and results will appear (learning how to google is probably a priority before programming languages!).

      So, what you said is true. Don't spend money on programming books. Let him learn by himself.

      On the other hand, regarding programming languages, I've always loved Python. Simple syntax, easy to introduce to new programmers, no pointers, great power... Furthermore, while Python keeps being my favorite, maybe, for "the current times", he would find JavaScript (+HTML+CSS) closer, for he would be able to create his own websites and that's something you often feel proud of ;). Also, it seems now everything has to be JavaScript-based...

    17. Re:Python by cpu6502 · · Score: 1

      Oh good. I'm not the only one thinking along these lines. The simplicity of typing 10 PRINT"HELLO" 20 GOTO 10 gives instant gratification on those old 8 bit machines.

      Although I'd probably use a Commodore 128 emulator because it has built-in sound and graphics commands. For me I just took the C128 Users Guide and went through one command at a time "playing" with them to see what they could do. About a week later I was writing my first graphics-based Star Trek program.

      And then I jumped into assembly and C, once I had the BASIC foundation, but desired faster execution.

      --
      My AC stalker: " I personally agree with your posts most of the time, but that won't keep me from modding you troll"
    18. Re:Python by digitig · · Score: 1

      Then for the book, give him "Teach yourself Urdu".

      --
      Quidnam Latine loqui modo coepi?
    19. Re:Python by jellomizer · · Score: 4, Insightful

      As a seasoned adult developer who learned to program as a kid.  There is just one word of advice. Just because you know the language it doesn't make you a writer.  While learning by yourself if actually very useful, don't mistake it from the structured stuff you get in college.  I spent a good part of college de-conditioning myself with my bad habits because they worked, and with the good habits learned there was much less funny acting code, and the code ran more reliability and was easier to change.

      When I entered college I know how to program in about 8 languages (before Google) myself, I was actually codding professionally before I left for college too.  And the skills I taught myself was valuable, and gave me a heads up in College as I wasn't fretting over the technical end, and I could put the rest of my focus on good form.
      I have seen some other kids wash out of the computer science program because they knew how to write code however their egos got in the way and they never wanted to unlearn their old ways.  They will still stick on the superiority of the GOTO statement.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    20. Re:Python by gislifb · · Score: 2

      I'll 5th that!

      Books: Learn Python the hard way or Head first Python. I personally enjoy reading the Head first books and I think an 11 year old will too.

      --
      In a world without fences and walls, who needs gates and windows?
    21. Re:Python by shiftless · · Score: 1

      I taught myself to program when I was about 8. Got a 286 clone with a huge GWBASIC manual. My father explained that I could use it to make the computer do things. I was sold. :-p (I wish I had cut my teeth on something less awful than BASIC, though.)

      Um yeah, scary how much that resembles my story....except in my case I found a book on BASIC programming in the school library, and took it home cause I knew my dad had a computer. He set me up in Professional Write and showed me how to type in a program and run it in GWBasic.

      I don't think I ever actually sat down and read the book (maybe, not sure), but I remember the biggest thing I got a benefit from was the example programs in the back of the book which I could key in, see how they worked, then make little changes to. I think that's the best way to show someone how to program.

    22. Re:Python by nicolastheadept · · Score: 1

      I 6th Python, and 2nd this book. Got the physical copy out from my uni library: is excellent.

      --
      09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
    23. Re:Python by Anonymous Coward · · Score: 0

      I recommend Python too. (5th!)

      I've worked with several kids teaching programming. I like to teach multiple languages, but I use Python as the main one, because it's the one in which I can teach all the general concepts while keeping the syntax and code easy to follow and readable. The key to teaching it well is making sure it's fun.

      There's also lots of great tools/books for kids learning Python. Here's a few of them:

      Rurple is a sort of game / programming environment where the student uses a python interpreter to control a graphical robot on the screen. The game gives you little problems you have to solve, at first it's just walking around. Google Rurple and python and it should be the first hit.

      Turtle exists for python as well, which allows student to draw by using math and code. It's fun.

      A great book for kids is also:
      "Hello World! Computer Programming for Kids and Other Beginners" Warren D. Sande and Carter Sande, ISBN: 1933988495

      Someone else mentioned "Snake Wrangling for Kids", which is similar and also can be downloaded for free.

      Also, kids like playing video games, and as a result, they usually like making video games. You can actually use Python inside of Blender and make interactive 3D games quite easily. You can use physics, sound, controllers/gamepads, and more. As soon as the student is ready, going in that direction is a lot of fun.

      Feel free to contact me directly on my teaching3d website. (Google teaching3d, should be first hit.) I do lots of volunteer teaching for programming and computer graphics, so if you have any questions I'll do my best to answer.

      The best advice I can give is this: If you have time, sit down and work with the student, helping with each topic and exercise. My mom didn't even know programming at all, but she sat down and learned with me, and it was a great help. I was under 10 at the time.

    24. Re:Python by msclrhd · · Score: 3, Informative

      Python, Ruby or some other similar scripting languages are great to start on and build up an understanding -- they allow you to start small and build up an understanding of what you are doing without any "noise".

      The Khan Academy has programming videos oriented around Python (http://www.khanacademy.org/#computer-science), not sure how good they are but the Math videos are good so it'd be worth checking out.

      An advantage of python is that if you run it from the command line on its own, you get an interpreter where you can start typing commands and seeing the results (e.g. 2+5 'hello world'.split(' ') ':'.join(['a', 'b']) ).

      The other language mentioned here is JavaScript. The main problems with starting with JavaScript as a language is what other non-scripting languages suffer from: there is a lot you have to do to get up and running (there is nothing like hearing "just ignore the public static void bit for now" when learning to program) -- especially when you have to read a different markup (html) to get started.

      If you do decide to go down the JavaScript route, use something that makes it interactive and fun. See the "Bret Victor - Inventing on Principle" video (http://vimeo.com/36579366) for a good idea on that w.r.t. the 2D drawing APIs where you have the JavaScript on one side and the picture it generates on the other and what you change on the JavaScript side gets immediately picked up on the picture side. See http://gabrielflor.it/water for an implementation of this!

      More generally, a good choice to start with is something that gives you decent feedback quickly and something that allows you to experiment and have fun with it.

    25. Re:Python by Anonymous Coward · · Score: 0

      If the kid is anything like me he will hate Python for one simple reason: significant white space is evil.

      I would offer as an alternative Lua. http://www.lua.org

      It has many of the nice features of Python, but it doesn't throw a fit if you indentation isn't perfect (nice if you copy/paste code from tutorials), and it's used in a lot of games (notably WoW) so there's a direct and easy to see connection with something fun.

    26. Re:Python by gstoddart · · Score: 1

      The reason I like Python so much is that it has the least syntactic silliness of any language I've used

      Except for the whole "whitespace is syntacticly meaningful" thing.

      The only Python code I've ever seen left me shaking my head ... it could have been because it was shit code, but I just can't fathom why whitespace should affect the compilers interpretation of what the code means.

      Though, clearly loads of people seem to like it so I'm probably in the minority on that one.

      --
      Lost at C:>. Found at C.
    27. Re:Python by msclrhd · · Score: 1

      The python example should read:

      2+5
      [ENTER]

      'hello world'.split(' ')
      [ENTER]

      ':'.join(['a', 'b'])
      [ENTER]

      Slashdot ate the angle brackets on ENTER.

    28. Re:Python by gorzek · · Score: 1

      Yeah, one of the things I got my hands on as a kid were a few disks of public domain BASIC programs gathered from numerous BBSes. Hundreds of programs, all with source code! I had loads of fun reading their code, figuring out what it did, and then tweaking it. Most of them were games, and I usually modified them as a way to cheat. "Oh, I only get 100 fuel in the lunar landing simulator? Nope, I want 10,000 fuel!" (I remember modifying the lunar lander simulator to make the explosions bigger and more dramatic. Kids will be kids.)

    29. Re:Python by Anonymous Coward · · Score: 0

      haha. mod parent up as funny.

      yeah, I think my new approach to learning to technology is, it has to have a cool logo!

      So, that leaves out Java, I hate that little 'java dude'
      C/C++/Javascript/PHP they don't even have logo's. (Although jQuery has a simple logo, so I guess I can include that)
      Perl is ok with the Camel


      yeah, I guess it's Python and OpenBSD! (Snakes and Fish)

    30. Re:Python by Anonymous Coward · · Score: 0

      Forget Python, teach him Julia, a language with a future: http://julialang.org/

    31. Re:Python by TheLandyman · · Score: 2

      Also being a 'seasoned' developer I'm wondering why not a 'real' language like C as opposed to scripting languages. I started with BASIC back in the day but I often wished I made the shift to real languages sooner rather than later. Only when I started writing apps in VB6 (when it was first released) did I run into limitations. I wish I made the leap early from command line BASIC to C/C++. C also gives you more insight into how the computer is actually working. In the 'real world' of large scale appliactions today I see far to many a 'script kiddie' that grew up on Java who seem to think you can build huge high performance applications in these languages. At risk of being flamed, since OP has access to a macbook pro, why not give him an Objective C book and let him have at XCode for a while. It's an amazing rock solid IDE (not quite as nice as VS but still very nice). There are many very good books available for introduction to Objective C on the Mac.You might even take it upon yourself to 'learn together' for a time. This is another good quality from the real world... working with others. You could edge him on with an additional requirement or two. This will help re-inforce early a good general life lesson: the fact that things can change and you need to adapt.

    32. Re:Python by CCarrot · · Score: 4, Funny

      When I entered college I know how to program in about 8 languages (before Google) myself, I was actually codding professionally before I left for college too.

      Hmmm...sounds a bit fishy to me.

      --
      "I love animals! Some are cute, others are tasty, what's not to like?" - Betsy Schroeder, Jeopardy contestant
    33. Re:Python by Anonymous Coward · · Score: 0

      5th

    34. Re:Python by mandelbr0t · · Score: 1

      Also being a 'seasoned' developer I'm wondering why not a 'real' language like C as opposed to scripting languages

      I'd tend to agree with this. I was learning x86 assembly when I was 12. This is an age where a child can learn a lot, and school won't teach you about a lot of the "under-the-hood" stuff. Actually managing memory and understanding how a computer works at a bare-metal level is a skill that will give you a leg-up later in life. In all likelihood, he won't use C/C++ in the industry, but it is easy to learn managed languages like Java and C# once you learn C. C is all about efficiency, something that a lot of Java programmers could stand to know a little better.

      --
      "Please describe the scientific nature of the 'whammy'" - Agent Scully
    35. Re:Python by dvice_null · · Score: 3, Insightful

      I also learned programming myself, over 15 years ago. Yet I have still today learned a lot of useful stuff from others who I have worked with.

      This is what I think:
      - If he is motivated to learn by himself, that is the best way to start. Not because of what you learn about programming, but because of what you learn about learning and studying new stuff.

      - After a year or so, if possible, get a good mentor. This time, to learn about programming. There is a lot of advanced topics which you don't even know to exist unless you have a really good book or a really good mentor. This doesn't mean that you couldn't study this stuff by yourself, but you will need someone to tell you what to study. Here is a list, which contains topics, perhaps a bit too advanced for someone who just started to program, but the list contains a lot of things I wish someone had told me sooner:
      -- unit testing (more important than the program itself),
      -- more about testing and what you can do with it, e.g. performance testing
      -- pair programming
      -- writing clean code (e.g. why it is important that you think really hard how to many each variable you create),
      -- refactoring (how you can do it and why you should),
      -- programming principles and patterns (e.g. why a class or a function should have only one responsibility),
      -- usability (how you can analyse it and improve it),
      -- user experience (why people think that the software is faster and has less errors just because you changes the error messages more polite),
      -- tools(version control, IDE, continuous integration with static and dynamic analysis, and how they can help you do your job).
      -- Agile methods, lean, kanban. (these are pretty good to know when you start working for real)

      My recommendation for language: Python with pygame (for writing games).

    36. Re:Python by DangerOnTheRanger · · Score: 1

      I 7th Python. I wish I could have started with Python instead of C - I'd have learned so much more (and much more quickly).

    37. Re:Python by Monkey-Man2000 · · Score: 2

      Another vote for Python and another free book to add to the rest of the comments...

      --
      This post was generated by a Cadre of Uber Monkeys for Monkey-Man2000 (603495).
    38. Re:Python by steveha · · Score: 1

      The only Python code I've ever seen left me shaking my head ... it could have been because it was shit code, but I just can't fathom why whitespace should affect the compilers interpretation of what the code means.

      It has its pluses and minuses. Overall I like it, and I just can't fathom why so many make such a big deal about it.

      In C code, this is an error:

      if (some_test(x))
              f = open_file();
              write_data(f, x);
              close_file(f);

      The indentation makes the programmer's intent clear: those three statements are supposed to run when some_test() evaluates true. But because the programmer forgot to put the curly braces, this doesn't do what it looks like it does.

      In Python, if the statements are indented the same, such that they look like they should be a block together, they actually are a block. I like that.

      So, in C, just learn to not forget the curly braces and you won't have trouble! And in Python, just learn not to mix spaces and tabs, and you won't have trouble.

      When I'm knocking out Python code in a hurry, I like being able to just add a second line in an if statement, without needing to fuss with curly braces.

      But some people really hate this, I guess.

      steveha

      --
      lf(1): it's like ls(1) but sorts filenames by extension, tersely
    39. Re:Python by msclrhd · · Score: 1

      NOTE: the main relevant examples on the video are:

      2:30 - 9:40 -- example 1 : dynamic interactive JavaScript canvas 2D drawing editor

      10:20 - 16:40 -- example 2 : visualizing the effects of time-dependent code (using a game as an example of this), experimenting with game mechanics

      16:40 - 22:40 -- example 3 : visualizing algorithms and data flow

    40. Re:Python by Tassach · · Score: 5, Insightful

      Also being a 'seasoned' developer I'm wondering why not a 'real' language like C as opposed to scripting languages.

      Dynamic (scripting) languages are no less "real" than compiled languages. Both have their place, their strengths, and their weaknesses, which is something a "seasoned developer" should know.

      An instruction language should just get out of your way and let you concentrate on doing stuff and understanding the CONCEPTS, instead of concentrating on making the compiler/interpreter understand you or doing routine housekeeping (eg: memory management). This is true for real-world development, but is especially relevant when teaching someone how to program. For this reason, Python is an excellent choice as a first language -- even MIT uses Python as a teaching language. (I can't think of a better endorsement than that)

      The advantage that Python has over other dynamic languages (Perl, Ruby) is that it is designed for readability and clarity. Even as a die-hard Perl programmer, even I can admit that Python is an easier language to learn and explain, and is probably the first language I'll teach my children. Whether it's (IMHO) dumbed-down syntax is an advantage or a disadvantage for doing serious work is a subject of debate (if not holy wars).

      C is a wonderful language for a specific class of problem, but it has lots of problems that make it suboptimal (if not completely unsuitable) for other tasks. Knowing *when* to use C (and, more importantly, when *not* to use it) is as important as knowing *how* to use it, if not more so. It is not a good teaching language for a beginning programmer, any more than it is a good language for general application development. Someone who doesn't understand this has no business calling themselves a "seasoned developer".

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    41. Re:Python by Anonymous Coward · · Score: 0

      And then spend the rest of his life knowing only super high level scripting languages, just like all the hordes of computer professionals who barely understand computers. Yet another student entering college who has to be untrained before being taught.

    42. Re:Python by Shoe+Puppet · · Score: 2

      Depends on what you consider "knowing to program" and "language"... I'm a freshman and I have surely looked at dozens of programming languageish things.

      --
      (+1, Disagree)
    43. Re:Python by Anonymous Coward · · Score: 0

      Absolutely !

    44. Re:Python by jpate · · Score: 1

      < for <
      &gt; for >

    45. Re:Python by Anonymous Coward · · Score: 1

      Plus, you can impress your friends by saying, "My son is playing with his Python. He loves to play with it several times a day." Then they'll really know he's normal (and you might gain some prestige, since they'll wonder if he takes after his father or his mother).

    46. Re:Python by hobarrera · · Score: 1

      Since you commented "ruby" as a reply to "python", I'm amused that noone voted is as flaimbait.

    47. Re:Python by Anonymous Coward · · Score: 0

      When I was ten I got my first programming for Z80 assembly language book. I highly recommend.

    48. Re:Python by jmorris42 · · Score: 1

      > Also being a 'seasoned' developer I'm wondering why not a 'real' language like C

      There is a lot to learn about programming. C would require taking on everything all at once and few would survive that. Learn the basics first, then tackle a low level language. It is how almost all oldtimers did it, BASIC then something else. In my case it was assembly, first as speedups for BASIC via usr() then whole programs.

      Starting with a shell never hurt anyone, if one is to be a real programmer familiarity with one is a requirement anyway. Give em a copy of the fish.

      --
      Democrat delenda est
    49. Re:Python by Anonymous Coward · · Score: 0

      Whoosh! You missed the pun.

    50. Re:Python by tftp · · Score: 1

      Of course it's too much to ask from SlashCode to interpret HTML, modulo 18 allowed tags, as a literal string.

    51. Re:Python by darkgumby · · Score: 1

      If you take this route then see these sites:
      http://www.atarimagazines.com/
      http://www.atariarchives.org/basicgames/
      http://www.atariarchives.org/morebasicgames/

      It was 'More Basic Games' that got me hooked. Best $7.00 I ever spent on a technical book. I still have my copy.

    52. Re:Python by Capt.+Skinny · · Score: 1

      "Maths" with an "s" is a UK thing.

    53. Re:Python by Bucky24 · · Score: 1

      there's no function to read a single key without reading a whole line?

      http://en.wikipedia.org/wiki/Conio.h, specifically the getch function

      No function for changing the text color or drawing stuff?

      If you're programming windows you can always use SetConsoleTextAttribute. I'm sure NIX systems have comparative functions.

      I do agree it's not for beginners though.

      --
      All the world's a CPU, and all the men and women merely AI agents
    54. Re:Python by Anonymous Coward · · Score: 0

      I would recommend this book, it is specifically targeted at teaching python to younger people with no programming experience.

    55. Re:Python by Smallpond · · Score: 3, Funny

      Today I had to tuna database, then I was supposed to do some ray tracing but I floundered.

    56. Re:Python by chill · · Score: 1

      Uh, yes it does.

      https://www.google.com/#hl=en&sugexp=frgbld&gs_nf=1&tok=9818gF2xF65k-vnvgI8gRg&pq=42&cp=7&gs_id=1d&xhr=t&q=The+answer+to+life+the+universe+and+everything&pf=p&sclient=psy-ab&oq=The+ans&aq=0&aqi=g4&aql=&gs_l=&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&fp=87c6230bd8e448f1&biw=1920&bih=989

      If you put "the answer to life, the universe and everything" in Google, their little calculator is the top answer and it says "the answer to life the universe and everything = 42"

      --
      Learning HOW to think is more important than learning WHAT to think.
    57. Re:Python by Anonymous Coward · · Score: 0

      [...]

      The advantage that Python has over other dynamic languages (Perl, Ruby) is that it is designed for readability and clarity. Even as a die-hard Perl programmer, even I can admit that Python is an easier language to learn and explain, and is probably the first language I'll teach my children. [...]

      please... that isn't really correct. I know that well written Ruby code is much easier to read than silly indented python or crazy perl with all the punctuation.

      as an intro to programming, I think pretty much any language is fine. You could use assembler, algol, forth or pascal -- once the programmer realizes "It's all the same!" then it's time to start looking at algorithms and learn the history of the field.

    58. Re:Python by dewatf · · Score: 1

      Nonsense. C is a general purpose language and you can do everything in it. Providing you have the time to design, code and test everything properly in C it will give you the most efficient and reliable programmes. There only a few very specialised things like concurrency that standard C won't do (and there are Cs that will).
      C syntax is the basis of most programming languages and learning C will will provide a very good base for whatever programming you want to do.

      The reason you don't use C is that other languages are easier and faster to program for a lot of things. With something like Python you can learn to write readable code and do things quickly without having to worry about all the low level stuff. That makes them good for teaching introductory programming. No one has been able to books or websites suitable for a child to learn C because it is not the sort of language that works for such an approach. With C you get K&R, a reference manual and some course of exercises to do and sit down and figure it out.

    59. Re:Python by rtb61 · · Score: 0

      I'll oppose that. Instead start right here http://tryruby.org/levels/1/challenges/0, and or here http://www.ruby-lang.org/en/documentation/quickstart/ and then move onto here http://www.rubycentral.com/pickaxe/ and here http://ruby.railstutorial.org/ruby-on-rails-tutorial-book.

      Ruby has to be the best learning program, from the interactive Ruby shell, with immediate execution of lines of code to very compact and easy to read code.

      One click in a browser and he can be coding in Ruby in seconds.

      --
      Chaos - everything, everywhere, everywhen
    60. Re:Python by Anonymous Coward · · Score: 0

      python is plenty fast. I've been working on a fairly large project that we started in scala and java and have completely rewritten in python. The python version is able to handle 10 times the load of the java counterpart. It also is scaling much better than it ever did. That said some of our key pieces are written in C, i.e. nginx and mongoDB, but the java version had the same advantages, but apparently squandered them.

      Anyway, I love python and I'm starting to show my 8 year old some code and he's starting to show an interest. I showed him some C and he just glazed over and got bored.

    61. Re:Python by Anonymous Coward · · Score: 0

      As one who also learned early, as a Teen, with EDSAC II then Atlas Assembly language, Bullshit!

      Like creative writing, programing is critical practice, Most Academic guys, and I speak as a retired Professor, don't know shit from a shovel, only ever write 20 line programs and love C++.

      The advice from Teen, above, is right on, give him/her a route map and leave them to get on with it. What is useful is to distinguish between interpreted and compiled languages and explain the development cycle edit/make/debug ... It is never too early to talk about version control to ... but very simple.

      MFG, omb

    62. Re:Python by Anonymous Coward · · Score: 0

      Who was talking about scripting languages?.

      Bash is a scripting language. Python is not a scripting language.

      Python is a dynamically typed object oriented language with a comprehensive platform library and a huge body of third party libraries and frameworks.
      It also happens to allow you to execute a single file on the command line as a script without prior compilation.

      The implementation details and options for how a language goes from code to execution is not the definition of language power and suitability.

    63. Re:Python by Anonymous Coward · · Score: 0

      No really, it has an 's' on the end in formal UK English. It's not a colloquialism.

    64. Re:Python by epyT-R · · Score: 0

      I consider that 'routine housekeeping' as a critical component of 'concepts.' Having the understanding of how the computer manages memory (by having to do it yourself with C) affects how one views ANY programming project no matter how big or what language(s) are used. Today's bloated sloooow software is a testament to attitudes like yours. It's sad that it takes longer for an application to load on 3ghz machines than it did for its predecessor running on a pentium 120...with 98% the same functionality.

      C is a perfect language to cut teeth on if the goal is to become the best programmer one can be. If C can be mastered at a competent level, then learning other languages such as python is cake. Contrary to what you say, C can be used elegantly to solve any problem that can be solved with a computer. The proof for this is the fact the python interpreter is written in C...

    65. Re:Python by Gorobei · · Score: 4, Interesting

      C will teach you how computers work.
      Python will teach you how programming works.

      Ideally, you want to know both. The question is just which one you want to learn first (and if you even want to learn about the other one.)

      There's no right answer. My 8 year old daughter figured out Universal Turning Machines from watching minecraft videos*. If she wants education I'd probably teach her Python. But I could also see showing her NAND gates, working up to a general purpose computer, then C. It's all about her interests and aptitude.

      * She ran into my room excitedly to say: minecraft runs on a computer. I can build a computer in minecraft. So it could do minecraft. I probed a bit, and she explained that it was just like a book ("Diary of a Wimpy Kid" was her example) referencing the book itself by name. Of course, her current career choice is helicopter door gunner, so nothing may come of this.

    66. Re:Python by Anonymous Coward · · Score: 0

      I as a college student would also recommend Python. I personally taught myself C out of the SAMS book "Teach Yourself C in 21 Days", and it worked, but it was far from ideal. It taught most of the basics and lots of other stuff, but by day 21 they literally meant all day. The problem with learning C is that it is hard to do anything that a kid these days would see as "cool" without pointers and other things that are hard for a beginner to visualize. It also has no classes, and while you could step up to C++ you just end up getting lots more syntax.

      I took an into to programming class in college that was taught in Python to non-CS majors, and I was amazed by how easy it was and how much my classmates were able to do. The third week we took a pair of images and made a 3D photo for Red-Blue anaglyph glasses. By the end of the course the students made programs that did all sorts of things like simulate projectile motion, analyze DNA, or read in and modify Excel files. I was astounded by what a bunch of students who knew nothing going in could accomplish. I know more about C than Python, but there are many things that I can do in Python that I would have no clue how to do in C or C++.

      I learned Python out of the book "Object Oriented Programming in Python" by Goldwasser. It was decent, but I think you could probably do better. Also look into the graphics module at cs1graphics.org. It is well documented and is built for beginners.

    67. Re:Python by dudpixel · · Score: 0

      I'm self-taught, and my experience was not like this.

      My code wasn't necessarily great - you're always learning and improving.

      but the difference for me was that I dropped out of college after the first term (I was passing CS with near 100% but failing an unrelated subject - the university forced everyone to choose an elective subject that was not related to their primary field of study - the reason was simple - when people failed their primary course, they might choose to major in that other field - thus giving the university more money).

      I did manage to get a job as a C++ programmer however, and learnt a lot in the 2 years I was there. Any amount of good commercial experience will teach you plenty - sometimes more than college ever could (and sometimes less).

      Nothing wrong with being self-taught, so long as you're prepared to learn and adapt.

      --
      This seemed like a reasonable sig at the time.
    68. Re:Python by Anonymous Coward · · Score: 0

      Ah, the Linux trolls have come out in force I see...

      Python's great and all, but are you people retarded? We're talking about an 11 year old here. Python is not a beginner friendly language with it's alien syntax & full blown complexity.

      The practical solution looks something like pseudo-code and flow charts (unless your kid is a genius, then feel free to tell me to stfu),

      I took a look around the inter webs and found http://www.xmind.net/ , supposedly it has a pseudo code option, which is what you'd want to start grasping the concept of code in, but that's for you to test.

      Nowwww... if your son goes ahead and blows away the pseudo code and shows a knack for programming, advance him asap (flow charts are boring) to something like C or .NET or... python with an IDE preferably. The first two are used A LOT more in the programming world though.

    69. Re:Python by Anonymous Coward · · Score: 0

      No really, it has an 's' on the end in formal UK English.

      Not just in UK English either.

    70. Re:Python by salmonmoose · · Score: 1

      Another vote for python, yes, it's clean, for learning, however the immediate CLI is a win too.

    71. Re:Python by Anonymous Coward · · Score: 1

      Python has to be the best learning program, from the interactive Python shell, with immediate execution of lines of code to very compact and easy to read code.

      FTFY.

    72. Re:Python by samjam · · Score: 1

      yes... but what is the actual question?

    73. Re:Python by Capsaicin · · Score: 1

      Then for the book, give him "Teach yourself Urdu".

      I understand you are joking, but if he is learning Python then surely Dutch would be much more useful!

      --
      Better to be despised for too anxious apprehensions, than ruined by too confident a security. --Edmund Burke
    74. Re:Python by Anonymous Coward · · Score: 0

      The trouble with python is that it mixes so many programming styles it's difficult
      to disentangle them - it can be either imperative, object-oriented or sometimes
      functional. That's confusing when you are starting out. OTOH it's a lot more fun
      to see graphics output rather than command line stuff, and PyGTK is pretty
      straightforward to play with. (And works on both Linux and Windows.)

      I'd start with Scratch, mentioned elsewhere, which will be interesting for a
      week or two and give a pretty clear idea of how the basics of programming
      work - then try Python.

      Good luck - Will

    75. Re:Python by Anonymous Coward · · Score: 0

      Whether it's (IMHO) dumbed-down syntax is an advantage or a disadvantage for doing serious work is a subject of debate (if not holy wars).

      True for Perl/Ruby guys only. Those of us who program in Python for a living are just quietly smug about it, with that little smile that comes from seeing other people shooting themselves in their foot, repeatedly.

    76. Re:Python by Anonymous Coward · · Score: 0

      Any "seasoned adult developer" should understand the importance of editing his writing to remove typographical errors and other impediments to understanding by his readers (or the compiler, say). This sample is atrocious, and much too hard to read and get the full meaning.

      Having spent the effort to follow this, I have to say that I agree with what is being said. Why make it so hard to understand?

    77. Re:Python by Anonymous Coward · · Score: 0

      Maths is the term used in any country whose English derives from "British" rather than "American". That means UK countries, Australia, New Zealand, among others. If they spell "labor" as "labour", they likely spell "math" as "maths".

    78. Re:Python by defnoz · · Score: 1

      'Maths' is the correct spelling in English; 'math' is correct in American. In any case, a mis-spelling is not an issue of grammar, it is one of spelling.
      A point of grammar would be pointing out that the verb 'solve' does not take an indirect object ('me') but would require a preposition to indicate the action occuring, viz:
      * "For example, I created one which solved me the maths homework."
      "For example, I created one which solved for me the maths homework."
      "For example, I created one which solved the maths homework for me."

    79. Re:Python by Anonymous Coward · · Score: 0

      Same here, I believe i started at 11 and progressed through the harder (IMO at the time) languages, I'd do tutorials,rip apart examples, and read forums and apply them to projects. I noticed that after uni and college I added other search terms to my self learning till i went to college and university such as best practices, Architecture etc.

      Above poster is right self learning is great way to start but be prepared to adapt and change to new concepts as they show themselves.

    80. Re:Python by Half-pint+HAL · · Score: 1

      Sorry, this is no plaice for such humour. This thread has jumped the shark.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    81. Re:Python by Anonymous Coward · · Score: 0

      Maths is the term used in any country whose English derives from "British"

      American English, by contrast, derives from Swahili.

    82. Re:Python by Anonymous Coward · · Score: 0

      Look at "Programming Collective Intelligence" by Toby Sagaran

      Lots of Python examples, many using great publicly available APIs. Teaches programming concepts, the language, a mash up mentality and AI concepts in a productive way producing cool results.

      I wish I'd had something like this as a kid. I started learning LOGO and BASIC at 9 but didn't create anything really cool until I started talking to other kids at college.

    83. Re:Python by szilagyi · · Score: 1

      On the learning-languages-online side, the current crop of languages and online guides seems to do a good job, or at least a better job than in the past, on engineering issues. In "my time" you would have first really thought about these in a real programming course at college. These days, there are a lot of huge codebases out there, accessible online, and engineering issues are more central to the community at large. There's quite a lot of religion online when it comes to software engineering, but there was at college, too. So you have to go beyond the language guides to get a well rounded picture of SE, but at least they consider the issues.

      On the structured-learning side, just to amplify the parent's point, the online approach basically gets you nothing of formal semantics, discrete mathematics, mathematical logic, etc. Formal semantics is really only useful if you go into a specialized field (compilers, formal methods tools, programming language design, etc.), but is still great, if you're interested in it, for its beauty and the perspective it gives. Discrete math is important to all programmers, at least to understand complexity theory and the algorithms they use everyday. And it's hard, although if you have the self-discipline, you can find those courses online. But the harder stuff is where it's really nice to have people around to learn with and from.

      Finally, another poster mentioned the bits-between-your-toes aspect of a good CS education, which you lose by attacking from the programming language side, particularly online. I think BASIC was mentioned, although I'd recommend C, Forth, or especially a simple assembly language as being educational in this regard. Are there some good assembly learning guides online for relatively simple processors, either impractically obsolete but really simple for learning (e.g., 6502), or practical but not too complicated (e.g., ARM, MIPS)? It's also hard to build your own computer hardware online, which is a great joy of the EECS college experience, though maybe less essential than understanding a few assembly languages.

      For the original question about an 11-year-old, that is old enough to learn a simple assembly language or Forth, so that supplement online Python in a non-trivial way. (11 might still be too early for them to read the Python implementation, which is always another way to learn how things work, if not always ideal pedagogically.)

    84. Re:Python by Anonymous Coward · · Score: 0

      Yeah, right -- an 11 year old boy tells you he's "Playing with Python" and the first thing that pops into your head is "he must have a pet snake"?

    85. Re:Python by Anonymous Coward · · Score: 0

      Will throw in another recommendation for Python, and http://learnpythonthehardway.org. It's not as hard as it sounds, assumes no prior experience, and you can order a physical book, several kinds of e-book, or just do the lessons from the website. I'm a former art student whose thing for computers falls mostly in the area of repair and building, and I've been wanting to learn to program for a while, ran across this while poking around Google for where to begin. I've been doing the lessons one or two a week, and the kind of learning the author offers is the hands-on, do-stuff-from-the-beginning kind of thing that's invaluable to keep beginners (and probably kids, too) interested.

    86. Re:Python by nobaloney · · Score: 1

      sounds a bit fishy to me

      Then you forget the late 60s to early 70s timetable, when programming flourished and no one had heard of the Internet.

    87. Re:Python by MrResistor · · Score: 1

      There's a lot of value in starting from the (very) basics, I think. I started out in an Electronics Technician course, and my first programming class was Assembly on an 8080A. The semester before that my final project was building a 4-bit processor. When I later decided that Computer Science was the right path for me, I had no trouble picking up on how things worked in C++. Pointers were pretty intuitive, since I'd already had to deal with memory addresses by hand. Same with Boolean logic (including Fuzzy Expert Systems) since, again, it was all stuff I'd dealt with in hardware.

      Anyway, the beginning programming book I usually recommend is K&R. It's fairly compact and very well written, with clear examples (in fact, I haven't seen an introductory C book yet that actually had any examples that weren't directly out of K&R, they generally just add a bunch of unnecessary verbiage around them).

      Also, tell your daughter she's awesome! Sadly, my daughter was infected with the "knowing stuff is so uncool" meme around that age.

      --
      Under capitalism man exploits man. Under communism it's the other way around.
    88. Re:Python by TapeCutter · · Score: 1

      Nonsense. C is a general purpose language

      Agree, plus most O/S's have native C bindings to their services. I look after a large repository of commercial C code that is still very active and growing 10+yrs after being ported away from mainframe 'applications'*. The code is modular and builds into multiple 'applications' on 6 or more different target O/S's per 'app'. The one thing it doesn't have is a C GUI since these days you need a good reason NOT to have a web front end. I find Python ideal to automate the crap out of that concophany of build systems and it is also used sparingly for a few of the application components (as complied python binaries). Of course, it's possible to do the convoluted build automation in C, but why would I bother?.

      Since working with Python over the last 5 or so years I find I don't do much personal C programming these days, I don't even have a C complier installed on either of my home machines! (yes, I will hand in my geek card after I finish this rant). If I've got an interesting idea/problem I want to explore then I dive straight into the endless ocean of Python libs. The one and only thing that pisses me off about Python is the akwardness of using whitespace to define statement blocks, for a C programmer, that's the only real "broken bit" of the language you're likely to (repeatedly) trip over.

      As for TFA. When I was a kid we had the local library and a set of encyclopeidia, both woefully out of date and difficult to search. When my kids were kids they had the same but just caught the start of the net at HS. There's a lot said about the totalitarian potential of the net on slashdot and some of it may even be true, but I personally think it will have the opposite effect on my 3yo grandaughter's generation. The most valuable skill she can lean in the next 20yrs is how to sort the shit from the clay that comes through the portal to what is rapidly becoming a "god's eye view" of our entire species both past and present. IBM's 'Watson' is a glimpse of that future portal, that feat still blows me away and yet most people I know (excluding those I work with) already seem to accept as self-evident that "answering questions is what computers do".

      The kid in TFA is a too young for this idea, but if you really want to get a teenage boy interested in programming, show him a simple web spider in python and let him join the dots to infinite free porn downloaded while he sleeps. If he's bright enough to join those dots, he's bright enough to figure out how to modify the example into his own version of "hello world". Supporting an 11yo's natural efforts to build anything (be it a program or a go cart) by researching it on the net first, teaches them how to start teaching themselves, but you will still need to hold the bike seat a little, just to steady them when they first take off their training wheels.

      'application'*: Scare quotes because these are distributed applications that run across 1000+ servers and are probably better described as 'corporate systems', in the same way that email is a system and an email client or server is an application.

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    89. Re:Python by enbody · · Score: 1

      Kahn's math videos are excellent, but the Python ones are not, especially for someone who hasn't programmed before.

    90. Re:Python by Tassach · · Score: 1

      Nonsense. C is a general purpose language and you can do everything in it.

      Just because you *can* do something doesn't mean you *should* do it. A good engineer uses the best tool for the job, period. If you worked for me and spent hours writing a C program that could have been done in minutes in a dynamic language, you'd get a reprimand (at the very least).

      Providing you have the time to design, code and test everything properly in C it will give you the most efficient and reliable programmes.

      2 problems with that statement:

      1 - in the real world, there's never enough time to design, code and test everything properly. I've been programming professionally for 23 years, and I can count the number of times I've had enough time to do something on one hand.

      2 - Efficient, yes. Reliable, not necessarily. Even highly experienced C programmers write code with buffer overruns, memory leaks, etc. Those kinds of bugs are basically impossible to create in a memory-managed language. Using libPCRE in C it takes a dozen lines of code (if not more) to duplicate what you can do in a single line of Perl. How much additional code would you have to write in a C program to duplicate the behavior of turning on Taint mode in Perl?

      The reason you don't use C is that other languages are easier and faster to program for a lot of things.

      Exactly. When you are writing code for a living, time is money. The tool that lets you do the most work with the least effort maximizes your RoI. Time to market is a competitive advantage. Programmer efficiency is almost always more important than execution efficiency.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    91. Re:Python by Tassach · · Score: 1

      C is a perfect language to cut teeth on if the goal is to become the best programmer one can be.

      Then explain to me why the best engineering schools on the planet (MIT, Stanford, CalTech) now use Python as their instruction language. Prior to that they used Lisp. At no point did they ever use C.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    92. Re:Python by CCarrot · · Score: 1

      sounds a bit fishy to me

      Then you forget the late 60s to early 70s timetable, when programming flourished and no one had heard of the Internet.

      I guess I'm just floundering around in the current age. I suppose I'll have to trawl around a bit, casting my net wide in hopes of reeling in some history to help me land some understanding. :)

      --
      "I love animals! Some are cute, others are tasty, what's not to like?" - Betsy Schroeder, Jeopardy contestant
    93. Re:Python by mcswell · · Score: 1

      No dace, sucker, your accusations are bassless. What a piker! Surely you can trout out some fresh ideas. If not, quit carping.

    94. Re:Python by Anonymous Coward · · Score: 0

      The class start next Monday, so go enroll http://www.udacity.com/overview/Course/cs101 ;]

  2. Not sure about a book... by Anonymous Coward · · Score: 1, Insightful

    But Python would be great to learn on. It's nice that it can be run interactively, like BASIC.

    1. Re:Not sure about a book... by Anonymous Coward · · Score: 0

      I humbly recommend:

      http://learnpythonthehardway.org/

  3. Datasheet by Matt_Bennett · · Score: 4, Funny

    Print out the datasheet for a microcontroller and hand it to him. It might discourage him, but you could just be creating a prodigy.

    1. Re:Datasheet by Quaoar · · Score: 4, Funny

      Or the Unabomber...

      --
      I'll form my OWN solar system! With blackjack! And hookers!
    2. Re:Datasheet by Anonymous Coward · · Score: 0

      I have to agree, get him a pic or arduino development board and watch cool stuff happening. One can make a lot of practical things with these and they are easy enough to work with. More inspiring than programming on a pc.

    3. Re:Datasheet by Anonymous Coward · · Score: 0

      Why is that modded funny? Have you seen the AtMega8 datasheet? And the free IDE with cycle accurate interactive emulator? That's more than anyone who started with the C64 documentation would have ever dreamed of. You know, the book that listed the VIC registers for sprites and told you to convert hand-drawn bitmaps into decimal numbers and POKE them into memory. If you want to learn what computers do and how they do it, low level access is very instructive. It really helps the motivation that the fundamental stuff is very definitive and not as much a matter of convention and trends as high level programming. The learning curve is steep, but if you don't have the patience to master it young, when will you?

  4. Head First by Anonymous Coward · · Score: 2, Informative

    Most of the Head First books will be good for the young'n--I'm 30 and I still need their cheery images to keep me interested ;-)

    http://shop.oreilly.com/category/series/head-first.do

    Python is probably the language he should use first.

    1. Re:Head First by Bigby · · Score: 1

      Head First books are my favorites as well. Nothing like seeing an EJB with arms and legs getting shot by a person.

      To keep someone 11 interested (gaming connections) and demonstrate the usefulness of math (geometry), you could ease them into 3D programming.

      It is probably good for them to see the results of their labor, so web programming is a good start. Maybe PHP, since it is dynamically typed, has all the control logic, data types, and OO hacked into one language. Less errors = less frustrating to an 11 year old.

    2. Re:Head First by Anonymous Coward · · Score: 0

      I second this. Head First Python is fantastic and my younger nephew (13) finished it and made herself a funny snake-like game but on acid that works on Android.

    3. Re:Head First by Githaron · · Score: 1

      Most of the Head First books will be good for the young'n--I'm 30 and I still need their cheery images to keep me interested ;-)

      Yes. The Head First books are pretty awesome.

    4. Re:Head First by ShieldW0lf · · Score: 5, Interesting

      Set him up with Scratch.

      http://scratch.mit.edu/

      I taught my daughter to program using it. It uses most if not all of the standard logical constructs, but instead of having to type and debug code, you drag and drop, attaching little lego-brick looking things together. It lets you focus on logic errors instead of syntax errors, and makes it a lot more accessible.

      Also, you can log in to the scratch website and publish from within the Scratch IDE. This was a major source of encouragement for my kid, who is more driven by the appreciation of her peers than by the achievement itself. After our game got featured on the front of the website and over a hundred kids posted comments about how cool she was, it stopped being a way to spend time with Dad and became something exciting in its own right.

      You can also download other kids programs, open them in the IDE and see exactly how they work. If you then create a derivative work and publish it, that will all be preserved... anyone looking at your program will be able to identify that you made it, what it was derived from, and who made the original. So, it teaches them to share, too, and helps them learn from each other.

      Once he gets deeper into it, you can buy him some hardware and he can use scratch to control that. It's compatible with Lego, and also with the PicoBoard:

      http://www.picocricket.com/picoboard.html

      --
      -1 Uncomfortable Truth
    5. Re:Head First by jepace · · Score: 2

      I second Scratch. It is fun, easy, and powerful. I recently got a group of 3rd-5th graders playing with it in an hour and a half, as well as mentoring a 6th grade student who made a fun little fishing game in an afternoon. I'm working on a bowling game while debugging some of the advanced features of my Portal inspired game.

      Scratch!

    6. Re:Head First by ShieldW0lf · · Score: 1

      Incidentally, because of the time I invested in teaching her to program in Scratch and design toys in Art of Illusion for printing on our Makerbot, she got a free ride to a private tech focused junior high school worth thousands and thousands of dollars.

      These teaching tools WORK.

      --
      -1 Uncomfortable Truth
    7. Re:Head First by Anonymous Coward · · Score: 0

      There is also CMU's Alice. My 11-year-old uses both Alice and Scratch quite a lot, including for a technology class at school.

      http://www.alice.org/

    8. Re:Head First by Anonymous Coward · · Score: 0

      I agree - I teach technology part-time at a local charter school. The kids love this tool

    9. Re:Head First by Anonymous Coward · · Score: 0

      My son is 12 and loves Scratch. The only problem is that he has no incentive to move to a more powerful language. I may have to bribe him with a summer coding project to get him to learn C.

  5. codeacademy.com by Anonymous Coward · · Score: 3, Informative

    I'm an experienced programmer, but I really liked the step-by-step stuff on codeacademy.com, where the language du jour is javascript, actually.

    1. Re:codeacademy.com by CanHasDIY · · Score: 2

      I'm an experienced programmer, but I really liked the step-by-step stuff on codeacademy.com, where the language du jour is javascript, actually.

      I'm not a programmer, and I find the cobbled together, unforgiving, often poorly written lessons on codecademy.com, many of which will allow bad code to pass but fails good code, to be quite frustrating at times. Also, I doubt I'm actually learning much, as I have yet to be able to apply any of the material from the lessons to a real world situation.

      And yet, I still enjoy going through them (the Q&A section is typically far more informative than the lessons themselves), and keep finding myself going back for more. I would recommend anyone using the site develop a good understanding of programming structure and syntax before starting the lessons.

      --
      An enigma, wrapped in a riddle, shrouded in bacon and cheese
    2. Re:codeacademy.com by LMacG · · Score: 2

      Site name is codecademy.com (no first "a" in the "academy" part).

      --
      Slightly disreputable, albeit gregarious
    3. Re:codeacademy.com by Will.Woodhull · · Score: 1

      I have not looked at codeacademy.com, but I will.

      I favor javascript as well for a first language. There will be trade-offs no matter which language he starts with. Javascript offers trade-offs that favor kids and new programmers at the expense of the rigor and formal approaches that the something like C would require. If he stays with programming, then he will need to learn more than can easily be done in javascript, but that is down the road and around the bend. If he never goes any further than javascript, he will still know a thing or two about tricking out a web site, etc, that will help him more clearly present himself in college, etc.

      The best first language, though, is going to be the one being used by some project that he has gotten involved with. For example, Blender is a FOSS 3D modeler and animation package that has standardized on Python. There are some music - MIDI - mixing packages that use Perl. Some websites he might want to contribute to run on Rails. These all offer kid-accessible APIs that are like virtual Lego sets (for that matter, Lego's robotics are pretty cool, I think they use Forth). So maybe he should be encouraged to select a project and get his feet wet with whatever that project is using. If he ends up switching languages a few times as his interests change, so much the better. Learning how to quickly learn a programming language is a major skill set of its own.

      --
      Will
  6. This book worked well for me... by SethJohnson · · Score: 0

    Kids and Computers. Available from Amazon.

    Seth

  7. C? by Tim+Ward · · Score: 0

    A language from the last century. Survives in odd corners, eg some embedded applications which haven't worked out how to use C++.

    1. Re:C? by Desler · · Score: 1

      Because C++ isn't from last century?

    2. Re:C? by Anonymous Coward · · Score: 1

      Yeah, because the language you are currently using to communicate with me was created last week. C would actually be quite good to start out with, for all you know the kid will become a device driver writer.

      I just started reading and don't really recall what books I started with in the 80s but take him to technical bookstore, or even B&N, and let him peruse the programming selections. Let him pick a book that he might like after reading through it, that was what I did.

    3. Re:C? by Lunix+Nutcase · · Score: 1

      Outside of a couple of toy langauges pretty much all major programming langauges in use are from last century. That's a really dumb qualifier to use as a negative.

    4. Re:C? by muon-catalyzed · · Score: 1

      C and C++ are the only languages, IEEE certified and deployed for mission critical tasks. Created in dire times and under pressure to get things done, and it shows.

      Everything else is just mostly a scam, a corporate interest language, a self-promotion language, a graduation paper language, a support feeder language, a 'secure' language, a wikipedia entry language, we need to slow things down to push our hardware kind of language, an Amazon book language etc.

    5. Re:C? by ChatHuant · · Score: 1

      Survives in odd corners, eg some embedded applications

      Looks like the computing world is composed mainly of odd corners, otherwise how could such a peripheral language be the most popular in the programming community?

    6. Re:C? by Imagix · · Score: 1

      Nope.. C++ is from last year... (C++11....) (Yeah, I know there are previous versions of C++...)

    7. Re:C? by Anonymous Coward · · Score: 0

      Everything else is just mostly a scam, a corporate interest language, a self-promotion language, a graduation paper language, a support feeder language, a 'secure' language, a wikipedia entry language, we need to slow things down to push our hardware kind of language, an Amazon book language etc.

      ... a bytecode language that only works with a certain virtual machine, a begins-with-J-and-or-ends-with-# language, a "-let" language, a founder now works at Google language, a mine is more semantic or aspecty than yours language, a language just like C++ except there are no commercial compilers...

    8. Re:C? by kkaos · · Score: 1

      This. The nerve of that guy for bashing C, why I oughta...er-uh...I digress.

      For a kid that is truly interested in learning to program, I see no need to waste time starting him off with a simple, beginner-minded language. Just start him off with C. Not only would it be beneficial for him in learning procedural and modular programming concepts, it would also benefit him in understanding how to work closely with the OS in an efficient manner, as C has become the de facto standard for system programming. Yes, memory management is much more involved in C than in many modern languages, but I feel it's important to understand the importance of efficiently using system resources, even in a day and age when we have more than 640 KB of memory with which to work; after all, don't many on this board lambast Windows and Firefox for being resource hogs. Heck, for C, just give him a copy of K&R's "The C Programming Language", and let him go to town.

      Afterwards, give him exposure to more modern programming concepts with C++. For that, I recommend Bjarne Stroustrup's "The C++ Programming Language".

    9. Re:C? by geekoid · · Score: 1

      Hey dumbass, what about C11, approved last year?

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    10. Re:C? by Xtifr · · Score: 1

      C99 was most recently updated in 2007 (technical corrigenda, but still...). And C1x may not be a completed standard yet, but it's getting close.

    11. Re:C? by Imagix · · Score: 1

      C++11 (and C11) were voted on and passed last year. C++ in August and C in December.

    12. Re:C? by Xtifr · · Score: 1

      Well, C++11 is irrelevant to what I was saying, but after double-checking about C11, you're right. The ISO WG14 home page confused me. It says, "The current C programming language standard ISO/IEC 9899 was adopted by ISO and IEC in 1999. Technical corrigenda TC1, TC2, and TC3 were approved followingly, TC2 in 2004, TC3 in 2007." (Emphasis mine.) Apparently, they need to update that page. 9899:2011 is available from ISO here.

      So much for the claim that C is in any way more "last century" than C++. Thanks for the tip.

      (Curiously, GCC includes experimental support for C++11, but has almost no mention of C11 anywhere.)

    13. Re:C? by 91degrees · · Score: 1

      If it's just learning to program, language doesn't really matter. Understanding how programming languages work and what they do is the key skill at first. C, Python, Perl, or even Intercal or Basic would be fine.

      C does have the advantage of working at a lower level. Teaching you that memory exists, for example. Understanding this low level stuff is useful.

      My only real concern is that it does teach a procedural rather than OO mindset. I'm not sure if this is a problem or not.

    14. Re:C? by Anonymous Coward · · Score: 0

      Amen to that. When it comes to really innovating understand and have the power to do whatever, nothing beats C.

  8. CodeYear by Anonymous Coward · · Score: 0

    Check out Code Year: http://codeyear.com/
    It teaches OOP via JavaScript.

  9. Javascript by Anonymous Coward · · Score: 0

    I can't recommend a specific book, but I would recommend starting with Javascript.

    The main reason for this is that he will be able to share his creations with people more easily.

    1. Re:JavaScript by SebNukem · · Score: 1

      But how does one exactly program in Javascript? Is creating a section in an html page the preferred way to do it? What about runtime engines like Node.js? What other ways?

  10. Normally C but... by danwesnor · · Score: 4, Insightful

    For an 11-year old who's learning, I can't imagine C is a good fit. He'll want to spend his time making working code and not chasing crashes. Something safer.

    1. Re:Normally C but... by Anonymous Coward · · Score: 0

      WTF, I started out with assembler and BASIC. Let the kid choose, if he really is in to it he will follow his own path.

    2. Re:Normally C but... by Talennor · · Score: 1

      Conversely, chasing crashes is a fun problem solving activity, and pointer arithmetic (while bad in the real world) really lets you know what's going on.

      --

      //TODO: signature
    3. Re:Normally C but... by Hatta · · Score: 1

      Plenty of 11 year olds got their start coding a mix of BASIC and 6502 assembly. C shouldn't be much worse.

      --
      Give me Classic Slashdot or give me death!
    4. Re:Normally C but... by Anonymous Coward · · Score: 0

      For an 11-year old who's learning, I can't imagine C is a good fit. He'll want to spend his time making working code and not chasing crashes. Something safer.

      I learned 2 dialects of basic at 9-10, and pascal and C/C++ at 11-12, by 13 I was doing 2 dialects of assembler. A child's mind at those ages is exceptionally well equipped to learn this sort of stuff. I'd say if he wants to learn to program a computer, get him to learn C++ before he hits 13 and starts getting interested in girls. If you lose this chance, he's not going to get around to it until he's 18, at which time instead of having a big advantage over his peers, he'll be a regular student.

    5. Re:Normally C but... by Anonymous Coward · · Score: 0

      Actually there are some decent introductions like ANSI C for Programmers on UNIX Systems that are short and focused enough to be useful. Combining that with something like python (which is quite well supported on Ubuntu and has abundance of online resources, including online consoles with training exercises) should get one quite far, for relatively minor effort on the student's part.

    6. Re:Normally C but... by kpainter · · Score: 1

      Plenty of 11 year olds got their start coding a mix of BASIC and 6502 assembly. C shouldn't be much worse.

      Isn't that how Bill Gates got started? Look what that got us.

    7. Re:Normally C but... by Anonymous Coward · · Score: 0

      I bought my 11 year old 3 different books on game programming. One about Python/pygame, one about Flash/Action script and one about game programming with html5.

      I think he forced himself through the first chapter of one of the books before he gave up and moved on to a different task (creating minecraft texture packs).

      Kids today....

      Lars

    8. Re:Normally C but... by Rhacman · · Score: 2

      I started toying around with QBASIC when I was around 8 but was always frustrated about why my attempts to write code to work with graphics didn't run as efficiently as I thought it ought to. At the time I felt like the holy grail would be to learn C so that I could do some more advanced graphics programming. The problem I discovered was that C was a PITA to learn unaided (and be able to do the type of things I wanted to do). It wasn't even that the language was that confusing so much as troubleshooting code that won't compile / link / run. Linker errors in particular baffled me as a newb, particularly since I just assumed that if I had example C code it should just work.

      That said, I think C (or any language really) would be a fine beginner language for an 11-year old IF there is hands-on guidance available from someone who knows what they are doing. I'm not saying an instructor would be necessary, just the ability to step in and provide some guidance. The REAL determining factor to what language he learns should be related to what type of software he would like to write. Back in college I downloaded the SDK for the original Half-Life and poked around writing C++ code to add new items and features to the core game. Even something as simple as tweaking existing code to alter the behavior of a weapon in the game was a learning experience in working with actual code and provided immediate satisfying feedback in terms of seeing how it impacted the game.

      I'd recommend starting by helping him search around for an existing project that is related to his interests (that is entirely or partially open-source of course). Pick out a book based on the language that project uses (I'm somewhat partial to the Deitel and Deitel books but don't have a strong preference) and help him get the code initially built and running. He'll probably write a few standalone Hello-World applications first but from there can jump into tweaking an actual working project.

      One last thing I'll say is to not get too hung up on picking the perfect beginner language for fear that a particular language wouldn't be as useful to him in the future. I took a course in high school where we spent two weeks at a time to learn various different languages such as x86 assembly, COBOL, Fortran, Pascal, Visual Basic, JavaScript, etc. I hardly use ANY of those languages in my current work but I found that the more languages I learned the easier learning new languages became. Every language you learn gives you a glimpse into the different ways you can write code to solve problems. Even if you never use that language again it broadens your perspective and gives you additional experience to draw upon when deciding the best language to use to approach a programming task.

      --
      Account -> Discussions -> Disable Sigs
    9. Re:Normally C but... by Anonymous Coward · · Score: 0

      I got my start at 14 on BASIC(taught at school) and 6502 assembly(the only programming book I could find in 1983). I don't recommend either for a youngster starting out.
      Probably any O-O language that has built-in garbage collection and good tutorials will be fine.

    10. Re:Normally C but... by Anonymous Coward · · Score: 5, Funny

      Isn't that how Bill Gates got started? Look what that got us.

      Yes, but look at what that got him.

    11. Re:Normally C but... by tool462 · · Score: 4, Interesting

      I disagree. I was 10 when I started programming, and when I did it was in C. There are some advantages in being close to the hardware like you are with C, as opposed to the higher level languages like Java, Perl, Python, etc. Just like how everyone learns arithmetic by hand to start, but once that's mastered most people just use a calculator for anything they can't do in their heads. Without learning the manual process first, you wouldn't understand the guts of how arithmetic works. The calculator would just become a magic box that spits numbers out at you.

      Just like with math I MUCH prefer to spend my time in a high level language like Perl or Python, but I'm much better at using them because of my early experiences with C. An example:

      One of the early C programs I wrote was an implementation of Conway's Game of Life. It's a fairly simple program, conceptually, but it hits a lot of major gotchas in programming. At by "it", I mean me :)
      - array bounds checking
      - data integrity (you have to have a buffer array to create the next generation or you'll get very screwy results)
      - array copying (pointers are both powerful and dangerous)
      - static vs. dynamic memory allocation (free your pointers, kids)

      All of these things can cause issues in most programming languages, but the bugs they cause can be a lot more subtle in some of the higher level languages.
      Consider a one-dimensional array
      C-style
      int a[3] = {1,2,3};
      int b[3];
      b = a;
      a[1] = 5;
      *** b is now {1,5,3}

      Perl style
      @a = (1,2,3)
      @b = @a;
      $a[1] = 5;
      *** b is still (1,2,3)

      For this, Perl seems better since it matches what the user likely wanted to do.
      However, now look at 2d:
      C-style
      int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
      int b[3][3];
      b = a
      a[1][1] = 10;
      *** b[1][1] is also 10

      Perl-style
      @a = ([1,2,3],[4,5,6],[7,8,9]);
      @b = @a
      $a[1][1] = 10
      *** $b[1][1] is ALSO 10

      Why the difference? Array assignment in perl only copies the top level structure, which happens to consist of array refs in the second case. So after the assignment both $a[1] and $b[1] point to the same array ref. If you're already familiar and comfortable with C pointers, this kind of bug is a lot easier to find and fix. You're less likely to make this mistake anyway, though, because you have that intuition that array copying is a hard thing to implement and that different languages will do so differently. So if you need to copy some kind of complex data structure, you better look into how that particular language does it.

    12. Re:Normally C but... by Anonymous Coward · · Score: 0

      I began with Commodore PET BASIC and moved on to 6502 machine language on a Commodore PET, Commodore SuperPET, and finally a Commodore VIC-20. By the way, for those claiming BASIC is a poor language to learn programming all I have to say is the entrance examination for computer science at the university I began my undergraduate studies was a walk in the park because of the concepts I implemented using BASIC such as bubble sort, linked lists, and recursion.

    13. Re:Normally C but... by zammer990 · · Score: 0

      1st/2nd richest person in the world?

    14. Re:Normally C but... by Anonymous Coward · · Score: 0

      Incorrect.

    15. Re:Normally C but... by Darinbob · · Score: 1

      You need something in between very high level languages and very low level ones. If it's too low level you get frustrated as you say, unless they're given a specific environment to work on (ie, Mindstorms or a microcontroller board). Too high level then you never really learn any fundamentals and I think we do have a problem with a lot of people today who've never used anything but high level interpreted languages who continue to write inefficient programs. Do you want this kid to grow up to be just Joe Average IT guy, or a superstar engineer who can write a browser and the operating system and the compiler and even design the CPU and get any job he wants?

      Let's say this was a child who wanted to learn about mathematics. Do you shove them directly at an advanced calculus book with the excuse that real mathematicians don't actually bother with basic algebra much so you can skip past it because it'll just be frustrating?

      Besides this is an 11 year old. Let the kid figure out what to do and go their own way. Nothing ruins creativity like an adult trying to direct it. At that age most nerdy kids want to know how things work! Teaching Python or Ruby won't teach how things work. Programs and computers are built up from small tiny pieces that are organized together in order to create more complex results; so you need to understand those small tiny pieces. If the kid wants to hack into the Linux kernel then let him. If you're going to do any prodding then I hope you prod the child towards learning the basics and fundamentals first.

      Some people seem overly concerned and frightened that a child might get bored or frustrated as if that's the ultimate crime.

    16. Re:Normally C but... by geekoid · · Score: 1

      A multibillion are pouring money into curing diseases?
      A bunch of delusional people who think if someone else would have done it at the time computers would be magically perfect?
      Linux?

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    17. Re:Normally C but... by caseih · · Score: 1

      If this is a reason you prefer a language like python over C, then you should be aware that python does the exact same thing, since python doesn't have variables in the C sense, only names. if you rebind a to b, then any change to the list represented by either name will show up in the other since they are the same list.

      One of the few things I can say that school did for me was to teach me programming language theory. names, variables, binding, late binding, early binding, pass by value, pass by reference, pass by object, etc. This helped me to comprehend the array dilemma you mentioned, and also helps me understand python's scheme.

    18. Re:Normally C but... by hobarrera · · Score: 1

      I started with C when I was 12. I wouldn't recomend it, at all.
      It was actually 12 years later that I *really* got around to learning C.

    19. Re:Normally C but... by gl4ss · · Score: 1

      I coded with basic first when in elementary school.

      the reasons were that you could get some basic books from the library(when I was maybe 11-12), that qbasic came with a pretty helpful help,that qbasic came with ms-dos.. a good c resource and access to compilers earlier would have been much more helpful actually than mocking around in qbasic, especially then - qbasic wasn't too strong in the graphics department or speed...
      something like c++ with qt would have been pretty ideal, more ideal than playing around with shareware graphics libraries with shitty documentation anyways.

      one thing I did understand about basic back then though was that it's damn good language for writing by hand on paper and debuggin by following the program flow by just reading, can't say that I'd have the patience for that now... you know, coding a virtual textmode casino to paper for fun whilst on boring car trip to a place without a computer... c, c++, java etc suck bigtime for that btw.

      --
      world was created 5 seconds before this post as it is.
    20. Re:Normally C but... by danwesnor · · Score: 1

      Yeah, I was one of them, only Z-80 before 6502. Difference is with assembly you know you're in the danger zone. C looks safe until you're at the bottom of the pit with bamboo stakes coming through your chest. Also, the scope of what we were writing was much narrower. Pong is easy to code, and so is Space Invaders. The structure is straight forward and fits functional programming well. Hello World on an iPhone is more complicated. It's a whopping one line of code, but you have to understand a lot of concepts right off the bat.

    21. Re:Normally C but... by Bucky24 · · Score: 1

      Agreed. When I first learned C I had a lot of "wait, why on earth does this work at all?" Wasn't until I got to college that I actually started to understand how pointers worked and all the little intricacies in the language. Though on the other hand it was the fact that I already knew the basics that allowed me to learn the little things that the instructors probably didn't even intend to be teaching us. Little things that just came out in their code and make me think "whoa that's pretty cool", when the rest of the class was focusing more on the primary lesson. So it's a mixed bag. Definitely the exposure early on helps tremendously.

      --
      All the world's a CPU, and all the men and women merely AI agents
    22. Re:Normally C but... by rrohbeck · · Score: 1

      As long as you can't draw little boxes representing memory locations with arrows between them (and show that you're correct via the debugger) you haven't grok'd how your particular language does it.

    23. Re:Normally C but... by Anonymous Coward · · Score: 0

      Thanks for making my day.

    24. Re:Normally C but... by jadrian · · Score: 1

      Your b is a constant pointer, you can't do b = a. If you, with your whole experience, managed to mess that up, imagine an 11 year old.

    25. Re:Normally C but... by Anonymous Coward · · Score: 0

      That's why sensible people don't use perl.

      I truly would not have expected _assigning_ a to b to _copy the contents_ from a to a new array.

    26. Re:Normally C but... by JamesUD · · Score: 1

      FYI, your C examples are wrong. Arrays aren't pointers (even though they act like them at times). You can not assign b = a. And the best book for C that everyone should have is "The C Programming Language". http://en.wikipedia.org/wiki/The_C_Programming_Language

      --
      There are two types of people in this world, those with loaded guns, and those who dig. You dig. 001010011 001110101 00
    27. Re:Normally C but... by Anonymous Coward · · Score: 0

      b = a; // error: array type 'int [3]' is not assignable

    28. Re:Normally C but... by Anonymous Coward · · Score: 0

      Opsee, you seem to have your languages confused.

      b = a

      is not allowed in C.

      And besides, your C example will only work if b is a pointer, which it is not.

      It is much better to really understand how things really work at the assembly level before using higher level languages.

    29. Re:Normally C but... by hobarrera · · Score: 1

      I must say, I very much agree on everything you just said, it has been so in my case as well.
      Additionally, you need to understand a bit more on how computers work to *really* understand C - ie: memory, cpu, and a couple more low-level things.

    30. Re:Normally C but... by Bucky24 · · Score: 1

      We had a class, intro to assembly, it was called, where first they started us out learning how a transistor works, then how logic gates work (with a few lessons on boolean algebra), then we finally moved to assembly language, learning first how each instruction got interpreted by the CPU and how it all fit together. We never went into it in the class, but the book eventually went on to C, explaining what ASM instructions make up various C commands and constructs. Not only did it help me actually understand why the hell ASM looks the way it does (and why some of the commands are so strange), but it also, I imagine, would help a C programmer write more optimized code, since they would have a better understanding of what machine code gets generated. This was a computer engineering course, though, focused more on practicably applications (as opposed to the more theoretical computer science degree) so I suspect that had something to do with it. Incidentally, it was after taking this course that I actually started to understand pointers, since we did cover the basics of how the CPU allocates memory.

      --
      All the world's a CPU, and all the men and women merely AI agents
  11. How Computer Programming Works by Anonymous Coward · · Score: 0

    By Dan Appleman. Covers many concepts and is designed for use by young people.

    http://www.amazon.com/Computer-Programming-Technology-Action-Series/dp/1893115232/ref=sr_1_5?s=books&ie=UTF8&qid=1334258291&sr=1-5

  12. Java / BlueJ by bennomatic · · Score: 2

    I don't know about books, but if you go to http://bluej.org/, you'll find a nice, simple IDE, and some documentation and exercises that I know have been used successfully in high-school level classes. I know there are some other languages and associated programs that are specifically targeted at teaching younger kids, but I figure it's nice to get them into real, modern practices quickly.

    I also like scripting languages, like Python, Javascript, Perl and Ruby. The advantage with Ruby is that there's an intro text that's a comic book. Something like "The Poignant Guide to Ruby". Check it out.

    --
    The CB App. What's your 20?
    1. Re:Java / BlueJ by bennomatic · · Score: 2

      Oh, and if you want him to work in a large Microsoft-centric enterprise, have him learn C#.

      And if he's got an iDevice, push him towards either Javascript for mobile web development or Objective C for native iOS programming.

      --
      The CB App. What's your 20?
    2. Re:Java / BlueJ by Anonymous Coward · · Score: 0

      Speaking as the parent of a kid who's been programming Java since 5th grade - so about the same age. I'd recommend Java/Android. It's a pain to set up the development environment, but being able to show off your apps on your phone/tablet is cool.

  13. Start with a goal... by SkipF · · Score: 1

    and build to that goal. that's how I learned Basic programming. I am still amazed at how much I use what I learned from basic today. As fathers have from time immemorial, teach what you know. Unix Shell Programming is a good starting point.

    1. Re:Start with a goal... by Nutria · · Score: 2

      Microsoft BASIC taught a jillion geeks to program on Apple II & C64 and there's no reason why it can't do so now.

      http://en.wikipedia.org/wiki/Basic-256
      http://www.basic256.org/index_en

      --
      "I don't know, therefore Aliens" Wafflebox1
    2. Re:Start with a goal... by Bengie · · Score: 1

      It all depends on the kid. Basic is a great starting ground, but don't rule out C/etc. I found Basic hard and confusing and got quickly bored when I was 11, but C/Asm was fun and easy.

      I didn't get past the basics of C/Asm when I was young, but it got me interested and showed me how computers work. This paid off as now I design systems that take advantage of how the CPUs work. Macro level optimizations.

      Very think like me, but if someone does, then Basic will turn them off from programming. I would still start with something like Basic or Python.

  14. hope this is first post by Anonymous Coward · · Score: 0

    first post111111

    1. Re:hope this is first post by Anonymous Coward · · Score: 0

      moron

  15. A plug for Alice by crazyjj · · Score: 4, Interesting

    I would like to put in a plug for Alice as a great introductory language and IDE too. Unlike a lot of introductory languages, it teaches actual object-oriented programming, and it's fun to boot.

    --
    What political party do you join when you don't like Bible-thumpers *or* hippies?
    1. Re:A plug for Alice by crazyjj · · Score: 4, Interesting

      I should also mention that there are a bunch of books available that will help with it too.

      I would also urge you to ignore all the "If he can't start out with the hardest stuff, he doesn't belong in our fraternity" snobs here who are recommending you try to get your kid to learn stuff like C, and Python hand-coding right out of the gate. If you subject him to that, not only are you setting yourself up for child abuse charges, but you're probably going to turn him off to programming for good. He should learn the principles first (which Alice teaches in a fun way), and save the hard stuff for when (and if) he's ready to pursue it further..

      --
      What political party do you join when you don't like Bible-thumpers *or* hippies?
    2. Re:A plug for Alice by Bengie · · Score: 1

      I started on math word problems. My math books had some fairly hard word problems, they were so much fun. Problem solving applies everywhere.

    3. Re:A plug for Alice by rrohbeck · · Score: 1

      C is easy if you start with K&R. I've never read a gentler yet very effective intro to a language. Everything more modern is so verbose that you fall asleep at least once before you have your first program running.

    4. Re:A plug for Alice by wrook · · Score: 1

      I think you are over generalizing. Different approaches are good for different people. The summary says that the boy wants to learn on his own. He's probably fairly self motivated. When I was a kid I was the same. My father offered to teach me to program, but I wanted to do it myself. He threw me a textbook for a first year introductory university course and I read it cover to cover. I loved every page of it. I started out writing stupid text games, but I never really played them. I just liked programming. There are people (even kids) who don't want to be constrained by how someone else thinks they should learn.

      C, Python, Ruby, Java, and even LISP based languages are all fine. The second language I learned was FORTH and it was fun. I might not throw them generative style C++ out of the gate, but for me learning every new style of programming was like an adventure. It really just depends on the person. Both syntactically and semantically programming languages are conceptually a lot simpler than human languages, but we throw our kids into foreign language study with abandon. We don't make them learn Esperanto because Spanish is too hard.

  16. Art of Assembler by Majik+Sheff · · Score: 1

    Break his spirit early (or discover how awesome your kid is).

    --
    Women are like electronics: you don't know how damaged they are until you try to turn them on.
    1. Re:Art of Assembler by ArhcAngel · · Score: 4, Interesting

      what's funny is I got hooked on programming by typing in the machine code/assembler programs from the back of Byte (or was it Compute!) magazine on my C64. I'd wait for each new issue and sit at the keyboard for what seemed like hours to see what I could "create" I had no clue what I was actually typing in but the fact that I put it in the computer and it did something meaningful led me to investigate it further and eventually I took an advanced math class that was basically a 7th grade computer programming class. ( Ah that TRS 80 and BASIC! ) By the time I got to high school I went for C/C++ ( IBM ATs in class and an Atari 1040 STe @ home ) I thoroughly enjoyed breaking down the logic and figuring out how to have a computer do what I wanted it to do. Then reality set in. I got a job...programming! It was never as much fun after that.

      --
      "A person is smart. People are dumb, panicky dangerous animals and you know it." - K
    2. Re:Art of Assembler by Anonymous Coward · · Score: 0

      Break his spirit early (or discover how awesome your kid is).

      Assembly is easier to understand, just more typing.

    3. Re:Art of Assembler by rrohbeck · · Score: 1

      Meh, assembler. My first computer was an IMS6100 SBC with an 12-key octal keyboard and a 6 digit seven segment LED. It has 256 words of RAM.
      I think starting with a simple system is the important part here. I know only a small subset of the functionality of the box that I'm typing this on. That sucks. My PET and C64 I knew inside out.

    4. Re:Art of Assembler by Anonymous Coward · · Score: 0

      Then reality set in. I got a job...programming! It was never as much fun after that.

      There speaks someone who works in the wrong place. I work for myself and get paid (usually!) to do something I love and would do anyhow...

  17. Anything by Packt by turkeyfeathers · · Score: 2

    I'd recommend any book from Packt. They are by far the best source of books on programming, as evidenced by the many glowing reviews posted on Slashdot.

  18. Hello World! Computer Programming for Kids and Oth by LordNimon · · Score: 3, Interesting

    My nine-year-old is using "Hello World! Computer Programming for Kids and Other Beginners" to learn Python. She's not really very motivated, though.

    http://www.amazon.com/dp/1933988495

    --
    And the men who hold high places must be the ones who start
    To mold a new reality... closer to the heart
  19. Python by Anonymous Coward · · Score: 1

    I can't recommend a good book, but I can recommend a language. Georgia Tech teaches Python as the default for introduction to computing and this was a great language for me to really get started right. I tried messing with Java and C when I was 13 or so but the ability to use Python (which your Mac should already have) takes away all of the boring (to a kid) steps of compiling, etc.

    Of course Python has its limitations but for a good tradeoff between power and learnability it's perfect.

  20. Find out why. by JustAnotherIdiot · · Score: 3, Informative

    Different languages excel at different things, so It's probably a good idea to figure out what he plans on doing with programming knowledge.

    --
    What do I know, I'm just an idiot, right?
    1. Re:Find out why. by Anonymous Coward · · Score: 1

      Dude, he's 11. He's going to "program" boobs.

    2. Re:Find out why. by dunezone · · Score: 1

      Different languages excel at different things, so It's probably a good idea to figure out what he plans on doing with programming knowledge.

      Or its going to take some time to be able to make some cool games if that his end goal.

  21. I am self taught by Anonymous Coward · · Score: 3, Interesting

    I am a self taught programmer. For me it started with video games which I practically grew up on. My mom bought a nintendo to keep busy while staying at home with her new baby. I started playing before i could walk, and my interest was sparked when I basically said "Who set these rules, what if I want to jump higher or have more bullets". My parents got me a Vtech computer from walmart for ages 9 and up. I was 6. It had a single line text-only display with 20 characters. But it had BASIC on it and I learned it myself through reading the book.

    Get him going on BASIC. It's not out of date.

    C has way too much involved features that would confuse him. Scoping, inheritance, pointers, etc.

    Get him to the point of writing a small text based battle system. That's what I first wrote as a kid.

    "You encounter the enemy, who has 20hp"
    "Press 1 to punch, 2 to kick, 3 for magic list"
    1.
    "You punch the enemy doing 7hp damage, he has 13hp left"
    "The enemy kicks you dealing 12hp damage, you have 12hp left"
    "Press 1 to punch, 2 to kick, 3 for magic list"
    3
    "Magic list"
    "1: fireball"
    "2: heal"
    "3: whatever"
    1
    "You shoot a fireball doing 13hp damage."
    "THE ENEMY IS DEAD, YOU WIN!"

    1. Re:I am self taught by The+MAZZTer · · Score: 1

      Speaking of BASIC, VB.NET allows you to lay out Windows dialog visually via click-and-drag and it is easy to play with stuff and then check out the generated code. Of course you still need to write logic to hook it all together and make it actually do something.

    2. Re:I am self taught by i.r.id10t · · Score: 1

      That is the one thing I liked about VB... pages of code in Java or C/C++ to do the same task as a quick click-n-drag ...

      --
      Don't blame me, I voted for Kodos
    3. Re:I am self taught by Kizor · · Score: 1

      Word. I recently taught some BASIC to my sister, who wanted to learn about programming. She was 24 at the time. I've already gotten horrified looks about this, but as we saw it, she has neither the time nor the inclination to code anything actually useful. And if that somehow changes, I'll fix her bad habits personally.

      I chose BASIC because it's a great playpen. It made it easy for her to spot cause and effect, tweak the code and see the consequences, and try out new ideas. What's more, it was easy for her to parse, and she did not have to hunt down a single missing semi-colon, nor care about the semantic difference between = and ==. Again, those would no doubt give her much more expressive power. We were more concerned with such concepts as control flow, loops, and variables. (Oh, how proud I was when I saw the shock of sudden understanding as she learned about variables.)

      Python probably has many of the same advantages. I stuck with BASIC because it was easier for her to set up and I knew its basics better - it's what I was first taught. That said, when she went to look for some further instructions, she ended up doing a Javascript tutorial.

    4. Re:I am self taught by Jiro · · Score: 1

      BASIC (and I'm referring to the variety of BASIC on old 8 bit computers), is not as out of line as some people think, but it teaches very specific things. Ultimately a machine language program will be doing things very much like GOTOs, GOSUBs, and globally accessible variables.

      Of course it doesn't have modern language constructs (it barely has for loops), and if you were to use it for teaching at some point you would move on to something else, but that's not really the problem. The real problem is much simpler: the variety of BASIC that runs on old 8 bit computers--runs on old 8 bit computers, and your 11 year old probably isn't interested in old 8 bit computers. If the target doesn't care about the platform it runs on, that's going to end up a pretty big barrier.

      I often suggest Javascript when it comes to languages. It is a scripting language and produces immediate results, it does things the kid would be familiar with, you can create something useful relatively fast, there's lots of existing code using it that you can examine, and you're guaranteed to have something that can run it.

      Of course this is a digression. All these recommendations for languages and not so many for books, which was the original question.

  22. BASIC by Gothmolly · · Score: 1

    10 PRINT "I am awesome"
    20 GOTO 10
    30 REM ROFL

    Try basic first - no variable types, its all human readable, no semicolon hell, etc.

    --
    I want to delete my account but Slashdot doesn't allow it.
    1. Re:BASIC by CaptainLugnuts · · Score: 2
      Pedantic alert: BASIC has different variable types, or at least the ones I used did.

      A is a float, by default

      A$ is a string

      A% is an integer

      On my VIC-20 it was important to use integer variables as much as possible for speed. They were also 16 bits so you saved two bytes, which is important when you 3583 bytes available at boot.

  23. Java Programming for Kids by Anonymous Coward · · Score: 1

    Java Programming for Kids is a free e-book which will walk you through creating your first Java applet using Eclipse.

    http://myflex.org/books/java4kids/java4kids.htm

    I can verify that it is appropriately written for an 11-year-old, because *my* 11-year-old son taught himself how to use Java and Eclipse using it. (Using his own Ubuntu Linux laptop.)

  24. A book? by Serious+Callers+Only · · Score: 0

    1. Why do you need a book to learn in the age of the internet?
    2. the most important factor in learning is motivation - he'll be motivated by some goal, so get him to choose a goal first, whether it is to print his name 99 times, make a website building tool, or make a robot which does his algebra homework for him.
    3. Start with a scripting language, not something like c, which is full of traps for the unwary, and requires learning lots about the functioning of the computer before you can produce something concrete. Don't believe people who tell you that our choice of language will stunt growth later on, or the only true language is c etc etc. the only mistake you can make in computer languages is to only look at one or two - where you start doesn't matter too much of you are willing to learn and develop your ideas as you discover the wealth of ideas and languages out there.

  25. College textbooks by edelbrp · · Score: 1

    It's obvious that the kid will need something age/experience appropriate, but don't discount buying a good college textbook or two. My parents used to let me buy the occasional college textbook while growing up and even though they were way over my head at the time, they turned out to be some of the most useful books I've ever used.

    Also, BASIC and Pascal are still very good languages to start with. C might be a bit complex to start with, especially when dealing with pointers and such. Another language to consider is Javascript. A kid could have a lot of fun with interactivity working with JS (as well as sharing the work), although debugging can sometimes be a bit of a pita.

  26. Just use online resources by Anonymous Coward · · Score: 0

    I'm enjoying the JavaScript lessons at www.codeacademy.com . The lessons are great (far easier to follow than the books covering the same subjects), and you get a constant measure of your progress. Honestly, I think it would be great if you have a sharp kid who is decent at math. He can graduate to the more advanced stuff later. Codeacademy is a great place to start.

  27. how about python? by Anonymous Coward · · Score: 0

    MIT OpenCourseWare Into to Comp Sci & Prog...all you need is internet access and time

  28. Here's a strange one by NoNonAlphaCharsHere · · Score: 1

    Starting Forth by Leo Brodie. Possibly the best book I've ever read about how to decompose a problem into chunks, and turn those chunks into code to solve the problem. As an added bonus, Forth works very well in immediate mode, allowing one to write and test simultaneously.

    1. Re:Here's a strange one by Anonymous Coward · · Score: 0

      The Erlang Programming book by Joe Armstrong is pretty good with the philosophy of certain species of programming too.

  29. Re:Tube classics by Anonymous Coward · · Score: 2, Insightful

    All far too dense for an 11 year old, and all pretty much require more background knowledge than an 11 year old is likely to have. I'm not sure there really is an answer to the OP's question though, at that age, even a very bright kid is almost certainly going to lack the prerequisite knowledge to learn to program from just a book.

  30. what drives him to program? by Anonymous Coward · · Score: 1

    Probably any head first book is good, I would start him with python or ruby, or maybe Java, but first be clear, what drives him? what has he seen that made him want to program? with that in mind maybe the community could be more specific.

    If he wants to be a web app developer I would start him with HTML5 and python or ruby, maybe jquery after or javascript then jquery.
    If he wants to be a mobile app dev, maybe java, or javascript...

    See what I mean..?

  31. www.codeacademy.com by Anonymous Coward · · Score: 0

    Code Academy is a free website targeted at people learning to program. It will start him off in javascript with how to declare a variable and Hello World! type stuff, but later moves on to functions and object oriented concepts.

    I'm not sure if there are modules in anything other than javascript, but it seems like a good free way to introduce him to programming in general. It seems to me it's more useful to know how to program than know a specific language, one can learn a new syntax later once you have the fundamentals down.

  32. No book, High level Language by Anonymous Coward · · Score: 1

    From my own experience:

    1) Don't use a book. Books can be completely discouraging in this age. Instead, point him to tutorials. Much more fun, because he'll have the feeling that he actually created programs, not boring stuff like age guessing etc. If he's creative, he'll soon start to copy & paste different codes together to create new programs. And he'll eventually learn the important stuff from that.

    2) Let him learn a high level language like Javascript/HTML or Visual Basic. Creating good looking programs from day one on is much more fun than having to use the console. And it's better suited for showing off the new skills to friends :)

  33. re "Help me Slashdot; you're our only hope." by Anonymous Coward · · Score: 1

    That is not something one wants to hear.

    1. Re:re "Help me Slashdot; you're our only hope." by CanHasDIY · · Score: 1

      Lack sense of humor, you do.

      --
      An enigma, wrapped in a riddle, shrouded in bacon and cheese
  34. Visual Basic for Quants by Anonymous Coward · · Score: 1

    That's how I made my fortune.

  35. Mobile by CharlyFoxtrot · · Score: 4, Interesting

    I don't know about a book but I'd teach him Objective C or Java. Something you can use to create an app for a mobile device. There's nothing like being able to carry your work around with you in your pocket and showing it off to people. Personally I'd go for Objective C because making a UI in Xcode is quick and easy and you can then focus and the real coding.

    --
    If all else fails, immortality can always be assured by spectacular error.
  36. Python or JavaScript by GeneralSecretary · · Score: 2

    I'd first look at KhanAcademy. They have courses on Python. See http://www.khanacademy.org/#computer-science-container Python in general is a good first language. I first learnt it with http://www.greenteapress.com/thinkpython/ But, I would highly recommend Head First books to start learning any language. I think they'd be great for an 11 year old. Head First Python http://goo.gl/tKRMu Another option that has been discussed recently as a good first language is JavaScript. It has the advantage of running in every browser and allows the ability to see nice visual feedback right away. When I was in high school I learnt a bit of Java using , which I also enjoyed because Swing gave me the ability to create GUIs right away.

  37. Free Python Book by reiserifick · · Score: 3, Interesting

    I highly recommend "Learn Python the Hard Way". Best of all, the online HTML version is free! (as in beer) http://learnpythonthehardway.org/

    1. Re:Free Python Book by tommituura · · Score: 1

      I could recommend this book too, but... Well, it certainly has some huge pros:

      a) teaches a relevant language,
      b) actually teaches some higher-level concepts like lists as they should be teached,
      c) ...not to mention teaching the reader to actually think algorithmically
      d) actually gives exact (as in really, EXACT instructions how to actually get the code run... Oh, how I would have liked a book like this when I was younger...)
      e) it's available at no cost in HTML form

      But there are also cons with that book, which might or might not be a problem especially since the intended audience in this case is 11 year old:
      a) language is worded in a way that's somewhat "direct" and "in your face",
      b) it also goes through the "drab" things first, and quite thoroughly too. On the other hand, there's a promise of teaching the reader to develop a game out there, so it doesn't leave motivation out... even if a text adventure might not be what 11 year old at this time and age thinks first when thinking about "computer game".

      I'm not saying a 11 year old couldn't learn immensely much from that book. I would have liked to read it with a computer at my hands when I was 11 year old. But this is something the original submitter should make the final call on. Personally, I would think that it might be better to go through the setup and first two or three chapters together with the child and only then leave him get cracking at it by himself.

  38. MIT's Scratch by preaction · · Score: 1, Redundant

    http://scratch.mit.edu/

    Explains programming concepts though visual components.

  39. http://www.khanacademy.org/#computer-science by crab · · Score: 1

    http://www.khanacademy.org/#computer-science seems to have some tutorials for python. I think Khan Academy is a pretty good resource for people who are interested in learning...

  40. Minecraft / Lua by CliffH · · Score: 2

    Funnily enough, my son has gotten into programming via Minecraft and Lua scripting. Through this he has moved into VB (although he was interested in this prior to Minecraft), Javascript, toying with C++ now, and still tinkering with C as well. All in all, maybe a book may not be the best option.

    --
    sigs are like a box of chocolates, they all suck remove the underscores to email me
    1. Re:Minecraft / Lua by Anonymous Coward · · Score: 0

      Moved into VB after using Lua? That is certainly the wrong way to go. Lua is awesome and "Programming in Lua" by Roberto Ierusalimschy is the best programming book I have ever read (and I have read many).

      Not close enough to the metal? No problem, Lua integrates very well with C. And Lua will run anywhere there is a standard C library, even on those tiny little home routers.

      I programmed in C for over 20 years, before coming across Lua. No more big projects in C.

    2. Re:Minecraft / Lua by Anonymous Coward · · Score: 0

      My kid is 15.7 years old, has done a lot of logic in 'redstone' to automate his farms, games in the game, etc. He downloaded an EE text to learn logic, can discuss adders, half-adders, the nibble -> 7-segment display decoder he did, ...

      He recently started program the new computer also, spends a lot of time in Lua. Is writing a hub for the network at the moment.

      I don't think anyone could pay him enough to put in the intense hours every day that he does 'for fun'.

      Teachers aren't needed for anything. Google for 'hole in the wall experiment' (a TED talk, among other things) and for the 'unschooling movement'. People to answer questions aren't even necessary, given the internet.

  41. Possible languages to choose from by Shoten · · Score: 2

    Java - Good because it's C-like, but more directly useful and without the challenges of memory handling that few computer languages have to worry about these days. If he ends up writing in C++ later, he can learn how. Also in use in a lot of places.
    C# - Good because it's also in widespread use, and again, lacks some of the pitfalls of lower-level languages. Much like Java in construction as well, and useful for both native executables and website development. It's also a bit easier and cheaper to get hosting space that will run C# than a Tomcat server for JSPs.
    PHP - If he wants to just play with web application development, this is a great place to start. Lots of documentation and examples, and the hosting is super-easy to come by.
    Ruby on Rails - Good for putting together apps in a hurry, and will teach him about frameworks early on as well, which will probably turn out to be very useful.

    Another thing...once he gets started, he's going to have trouble finding problems to solve. That's another way you can help him. I had the exact same problem when I was younger (I, too, learned to code when I was 11...back then it was Applesoft BASIC). So that's one way that web apps might be better...he can actually produce an app with a functional purpose for the family. Just make sure that you either restrict access to it, or that you ensure that he uses secure coding methods. Sanitizing inputs takes you a long, long way and is pretty easy to do.

    --

    For your security, this post has been encrypted with ROT-13, twice.
    1. Re:Possible languages to choose from by amaupin · · Score: 2

      Languages you inexplicably did not mention:

      Python - Less boilerplate code than other languages, easy readable syntax that encourages clean code but more importantly allows a beginner to easily focus on control flow logic, functions, etc. Forget every other language mentioned - Python is where a beginning programmer should start. It's fun, will teach all the concepts, and can do anything.

      Javascript - Runs inside any web browser and is the de facto language for web development. Exploding all over the place thanks to node.js and html5 canvas games/apps. Every web browser is a platform, making distribution of code to friends/family a snap.

    2. Re:Possible languages to choose from by sttlmark · · Score: 1

      If you go the MS route, I'd suggest that he gets his feet wet in Microsoft's Small Basic rather than dive into C#:

      http://msdn.microsoft.com/en-us/beginner/ff384126.aspx

      Small Basic is a simple QBasic-inspired language that runs in the .NET CLR that's designed with kids in mind, right down to the non-threatening IDE. The site points you to a decent curriculum and community, too. It's very friendly and has a low barrier to entry--he can start making his programs do interesting things almost immediately.

    3. Re:Possible languages to choose from by Anonymous Coward · · Score: 0

      Sorry pal, Python has had its day. It's way overrated with plenty of annoying quirks and bizarre idiosyncrasies.

  42. He wants to? by Anonymous Coward · · Score: 0

    Does he really want to learn to program or is it something that you want him to?

    I suggest C++, C# or Java - they have wonderful IDEs that are availble for free. Free is good because at his age, he's more than likely going to loose interest.

    If he were my son, I would teach him to use his hands: carpentry, fixing a car, and something else along those lines.

    I would also engourage him to learn basic science: chemistry, physics, and of course math. No, programming is not math and you can do quite a bit without never having to touch the stuff. I think basic science will do the kid a lot more for his future than programming. Programming is becomming a blue collar type of commodity skill and if he really needs it one day, he'll pick it up quite easily - especially if he's got the math and science background. He starts getting basic science into his, he can go on to a career that has some sort of future in the US of A: like medicine and well, medicine is prety much it for a middle class kid. Everything else is reserved for folks who know folks who are connected (read: he'll never be a big shot CEO getting hundreds of millions of dollars in bonuses for drilling the stockholder's company into the ground. Stockholders being us poor slobs and out IRAs and 401Ks.)

    Yep, I'm cynical and bitter. Oh yeah, teach your kid to be cynical and pessimistic - cynics and pessimists are almost always right.

  43. Gortek by kodiaktau · · Score: 1

    I would avoid Gortek and the Microchips, it is a little aged. Scripting seems to be an easy start and there are a ton of Perl or Python tools ready and available on the internet. I am mentoring a high schooler now and let him chose his language and he is using Perl - easy, tons of tools, lots of flexability. One thing I see with these languages though is that you have to unlearn bad habits unless you have some structured education. Personally I learned Assembler, Basic, C and Pascal as first languages but they will ruin his spirit for programming.

  44. Find an e-zine with example programs by Anonymous Coward · · Score: 0

    Back in the day, I had K-Power and TI 99/4er magazines that had programs to type in and explanations of what the code did.
    By learning each segment, function, subroutine, etc it was easy to write your own code or play with "what if" scenarios.
    Ended up writing routines that emulated Apple Graphics on the TI which was character re-definition based to get the drop of water into a volume of water programs to work on the TI.

  45. Udacity by Anonymous Coward · · Score: 0

    or any of several organizations offering free online classes. The next Udacity (www.udacity.com) term starts up next week, and they're offering CS101 again.

    I just finished taking the "How to Program a Robotic Car" class and I thought it was great, especially considering the price.

  46. www.udacity.com by frallon · · Score: 1

    new free 7-week CS101 starts next week. It teaches python.

  47. popular game with programming language built-in ? by Anonymous Coward · · Score: 0

    Maybe book-learnin is neither the question nor the answer. Instead consider to turn the kid loose on "minecraft". (Minecraft's "redstone" appears to me to be most of a programming language.)

  48. K&R Text by amasiancrasian · · Score: 1

    I am not sure if your 11-year old is ready for the K&R text, but if he wants a full stack education, the K&R book will give him in-depth knowledge of how low level languages work. It's clearly written, succinct, and arguably one of the best technical manuals ever written. I will caution that It will require more maturity and self motivation to finish, but he'll go through the book understanding how almost all software works. If he is truly motivated, I would even go lower level to leading him to computer organization and have him play around with assembly using a MIPS emulator. Things like caller or callee saved conventions will make more sense to him, as well as pointers and such. Knowing C opens the doors to all programming languages, and if he's more pragmatic he'll probably pick an interpreted language to learn next, or if he's more math-minded, a language like Haskell will follow.

  49. How to think like a Computer Scientist. by Anonymous Coward · · Score: 0

    I'd get a copy of the Python version of "How to think like a Computer Scientist".

    It's not too dense and uses a language that's relatively easy to learn but still has practical applications.

  50. Parenting 101 by Anonymous Coward · · Score: 0

    Give him some attention. Show him how to use online resources. Do a few projects with him, then let him go and see if it sticks.

  51. Perl rocks! by swm · · Score: 5, Funny

    Learning Perl
    Schwartz & Christiansen

    Or just send him to http://perldoc.perl.org/

    1. Re:Perl rocks! by Gazzonyx · · Score: 1

      Ugh. Then he's going to have to learn to use CPAN, etc. Perl is cool enough, but it took me a while to get a good environment up and running. Then again, I've had the same problems with Java/C/C++/etc.

      --

      If I mod you up, it doesn't necessarily mean I agree with what you've said, sorry.

    2. Re:Perl rocks! by eminencja · · Score: 1
    3. Re:Perl rocks! by Tassach · · Score: 1

      On a decent Linux distro, virtually all of the Perl modules you need are installable through the package system.

      That said, I'd rather wrestle with CPAN than JVM classpath issues.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    4. Re:Perl rocks! by WhitePanther5000 · · Score: 1

      Every kid is going to be different, but Learning Perl was a great first programming book for me (Python wasn't as popular at the time, but that seems to be the prevailing opinion today). You get to learn basic programming concepts, see results right away, and not worry about the fine-grained details. The book's examples were really good, and string parsing is dead easy. And because string parsing was easy, I was able to code little games, AIM bots, and administration scripts for my web server pretty early on. Of course, I didn't learn to program *well* until I got into compiled languages, but the goal of the first language is usually just to understand the basic concepts which can be built upon. I guess the most important thing is to pick A) something easy to learn, and B) something you can use for your own projects.

    5. Re:Perl rocks! by Anonymous Coward · · Score: 0

      Absolutely!!!
      Why is python so popular when Perl is so much better?

  52. If he likes games, check out Roblox by Anonymous Coward · · Score: 0

    My kids play on Roblox quite a bit and it uses Lua as a scripting language. If he likes playing games, too, then this might give him something where he can see immediate results. The game is free and comes with an editor to create your own levels/games. You can build with blocks graphically and then script interactions with them or use scripts to create objects. You can start simple, but there are some pretty complex, involved games that people have constructed.

    http://wiki.roblox.com/index.php/Scripting

    For a straight up programming language, I'd go with Python. I don't know what book would be good for him, though.

  53. Real Programmers Do it in C++ by Anonymous Coward · · Score: 0

    Have him read bjarne stroustrup's The C++ Programming Language. Once he makes it through that, everything else will be a piece of cake. And if he can't make it through that, well, maybe he would be better of finding other ways to spend his time.

    1. Re:Real Programmers Do it in C++ by CaptainLugnuts · · Score: 1

      Ugh. That's like giving a six year old a translation of 'The Brothers Karamazov' to further their reading interest and ability. Except that 'The Brothers Karamazov' had reasons to be written like that.

  54. Book? by Anonymous Coward · · Score: 0

    What century are you in?

    http://www.khanacademy.org/#computer-science-container

  55. It's 20 years old by Drummergeek0 · · Score: 1

    and may be hard to find. But the best book I always refer back to as what seriously started me on the path to being a programmer was Microsoft QuickBasic Primer Plus. QB may be old, but it is still available and the book is an amazing text as to the details of programming and why/how things work.

    --
    http://en.wikipedia.org/wiki/First_Amendment_to_the_United_States_Constitution
  56. _why's stuff? by Schiphol · · Score: 1

    I'm surprised that nobody has brought up Hackety Hack and Why's (poignant) Guide to Ruby.

    1. Re:_why's stuff? by Ken_g6 · · Score: 2

      I'm surprised nobody's linked to Why's stuff yet. (Since it's a free online book and all.)

      --
      (T>t && O(n)--) == sqrt(666)
  57. Think Like a Computer Scientist by cjhuitt · · Score: 1

    If I was recommending a book for a peer in a non-computer related field, I'd definitely recommend How to Think Like a Computer Scientist, which assumes no programming knowledge and builds up the thought process behind decomposing problems, etc. It's been a while since I read it, but I think it would work reasonably well for an advanced preteen. The version I read used Python, which I think is a great introductory language.

    http://www.greenteapress.com/thinkpython/ for a dead-tree version, or in various electronic formats (for free[-as-in-beer-and-in-speech]).

    1. Re:Think Like a Computer Scientist by kragniz · · Score: 1

      I very much agree with this. This is what I started with when I was ~10-12 and it sparked a large interest in computer science in me.

  58. If using Python... by CJSpil · · Score: 5, Interesting

    You might want to check out the book Snake Wrangling for Kids

    --
    For people who like peace and quiet. A phoneless cord!
    1. Re:If using Python... by Anonymous Coward · · Score: 0

      Title is wrong on so many levels.

  59. TI BASIC manual by razorh · · Score: 1

    It comes with the TI-99/4A and was extremely informative at 9 so should be a breeze at 11.

  60. I'm a dinosaur. Sue me. by OhSoLaMeow · · Score: 1

    I learned C programming from a great book by Stephen Kochan: Programming in C. It's imminently readable, practical examples, and doesn't read like a reference manual (e.g.: K&R). I also strongly suggest getting a good understanding of what's going on underneath the hood of a Unix system. Advanced Programming in the Unix Environment would do nicely.

    From there you can branch to most any other language. But aside from assembler, C is closest to the metal.

    --
    They can take my LifeAlert pendant when they pry it from my cold dead fingers.
    1. Re:I'm a dinosaur. Sue me. by dutchd00d · · Score: 1

      This reminds me of another great book (from which I learned most of my C): "The C Book" by Mike Banahan. It is out of print now, but it has been made freely available at http://publications.gbdirect.co.uk/c_book

      I liked it a lot.

    2. Re:I'm a dinosaur. Sue me. by frogola · · Score: 1

      I learned C from Kochan too and agree it was a great book. But C was my third or fourth language, not my first, and I don't recommend C as a first language. Probably Java is a good first language today.

    3. Re:I'm a dinosaur. Sue me. by OhSoLaMeow · · Score: 1

      C was not my first language either. That was COBOL and I don't recommend starting with that.

      Or RPG. And I don't mean the DOOM kind of RPG. :-)

      --
      They can take my LifeAlert pendant when they pry it from my cold dead fingers.
  61. "Hello, World", by Sande & Sande by dbc · · Score: 2

    "Hello, World" uses Python. It has aged a wee bit, only because Python has moved on, so the "how to install Python" section of the book is slightly stale. Other than that, I think it is great. A Real Computer Scientist(tm) wrote it with his 10 year old son, so the book reflects the interests and questions of a young kid. I used it with my daughter, and she loved it. I've recommended the book to adults that want to learn Python, and they liked it.

    As for what language to use, I say use Python. You can teach proper computer science with it, and the language doesn't get in the way. Save C for later. Pascal is of historical interest only at this point. If you don't know Python, work through "Hello, World" with your son (or on your own) -- you will be glad you did.

  62. yo by buddyglass · · Score: 1

    I recommend C or Java, and echo others' recommendation of the K&R book. Big benefit = it's short. Recommend against dynamically typed scripting languages, e.g. ruby, python, php, perl, et. al. Other benefit = both C and Java are near-ubiquitous. Possible alternative is C#.

  63. Re:Only hope? by CanHasDIY · · Score: 0

    Or, he's googled too much, and is suffering from information overload.

    You don't have to be a dick about it.

    --
    An enigma, wrapped in a riddle, shrouded in bacon and cheese
  64. Code: The Hidden Language of Computer Hw. & Sw by Anonymous Coward · · Score: 0

    http://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319

  65. If he's into World of Warcraft... by tilante · · Score: 1

    Then Lua might be a good language to start with. It's what WoW addons are written in, and several other games use it as well. (Minecraft, RIFT, more.) I'd say the main thing is that he needs something that he's interested in making the computer *do*. Working with a goal in mind makes it much easier to learn things beyond what you can learn from "toy" programs.

    1. Re:If he's into World of Warcraft... by dririan · · Score: 1

      A server-side Lua interface is planned for Minecraft, but it's not actually out yet, and even after it comes out, nothing will be client-side. See here. Everything now is done in Java, usually with Bukkit on the server and Spout on the client.

  66. Python for kids by kakapo · · Score: 1

    Snake Wrangling For Kids http://www.briggs.net.nz/snake-wrangling-for-kids.html

    Free, python based, and downloadable. Worked for my kid.

  67. Lego Mindstorm by mrops · · Score: 4, Interesting

    If he is 11, get him lego mindstorm. Out of the box it comes with a UI that lets you do logic and control your lego creations. Once he gets the concepts of loops and ifs, wipe the firmware with community Java firmware (lejos) where he can write Java code to control his mindstorm bots.

    By this time he would have bootstraped himself into programming and internet would be enough.

    1. Re:Lego Mindstorm by jodosh · · Score: 1

      I second Lego Mindstorms (with RobotC) that has been mentioned earlier, or if that is a bit too pricey look into an arduino. There is nothing quite like doing something in the real world with your computer program to make programming more fun.

    2. Re:Lego Mindstorm by Darinbob · · Score: 1

      Arduino is like Mindstorms, it assumes a ridiculously dumbed down graphical programming environment. At least Mindstorms is oriented towards kids but I don't know what Arduino's excuse for being patronistic is. Once you've got the hardware then do some REAL programming on it; put on C, or Forth, or raw assembler, or some other low level programming language suitable for a low level device. Using a high level language for something with 3 binary inputs and 3 binary outputs is just ridiculous. This stuff is not too hard for a bright 11 year old (though I agree it may be too hard for the average IT professional).

      In short, don't be patronistic. Nothing turns off a kid like being patronistic. Don't say "oh, this is too hard for you let's try this programming language instead", it's just as stupid as saying "War and Peace is too long and full of big words, how about a nice book about talking animals?"

    3. Re:Lego Mindstorm by jodosh · · Score: 1

      That is part of the beauty of arduino, it is geared towards getting involved with things like micros but you don't have to start off fully understanding concepts that aren't normally taught until first and second year of an EE degree. Once you get the hang of programming and understand what can be done with a micro the arduino can be programmed in C or ASM. It is ideally suited to teach kids programming and get the interested in "REAL" programming. To quote from the arduino homepage: "Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments." It isn't meant to be a serious hardware design platform. It is a great prototyping tool and tool for introducing popular to programming and the world of micros. When I was doing my undergrad in EE I used an arduino to prototype what I wanted to do and moved on to an MPS430 for the real thing (stereoscopic vision for a robotic platform.)

    4. Re:Lego Mindstorm by Anonymous Coward · · Score: 0

      Or arduino.

  68. Learn Ruby with RubyMonk online by Anonymous Coward · · Score: 1

    In my opinion, ruby is a great choice to start with. A really cool way to learn ruby is: http://rubymonk.com/ . It teaches you and gives you little challenges to solve as you go, a lot more fun and interactive then just reading a book.

  69. Google is your friend by l0ungeb0y · · Score: 1

    I haven't bought a book in ages -- yet have learned a couple new languages and technologies in the meantime without them.
    Every language will have a dedicated community site with tutorials covering most your essential topics and lots of code samples and user help forums, where most the questions any novice will have are already answered.

    When I did buy books though, I found that ones that were lighter weight and focused more on the practice than the theory, because the dense ones, while a good resource of information has simply too much information to deal with for someone who just wants to get their feet wet and start wading deeper so they can seeing results quickly.

    So in closing: Pick a language (Ruby, PHP, Java, Python) and a DB (MySQL is best for now) and associated framework or platform (Rails, Spring, Zend, jQuery), pick a specific and narrow focused problem such as "How to setup a basic Form to save data to my DB using Language X and Framework Y", search Google, start reading articles, chose one that makes the most sense and get busy coding and learning.

    1. Re:Google is your friend by Anonymous Coward · · Score: 0

      What 11-year-old wants to learn programming by setting up a form to save data into a DB?

  70. K&R & Oreilly Linux Device Drivers by mallyn · · Score: 1
    K&R is a given. It should be either 'under the tree' or 'under the pillow via the tooth fairy'.

    If the child already has that one, then give them the Oreilly Linux Device Driver writing book.

    Then give them a connection to Google

    And then give them a system with Linux that has a device driver that occasionally crashes the kernel

    --
    Most Respectfully Yours Mark Allyn Bellingham, Washington
  71. Try "Invent With Python" by Bob+the+Hamster · · Score: 2

    Try Invent With Python: http://inventwithpython.com/

    1. Re:Try "Invent With Python" by Anonymous Coward · · Score: 0

      My 11yo is going through this book RIGHT NOW. I highly recommend it.

    2. Re:Try "Invent With Python" by tom112358 · · Score: 1

      I learned computer programming from Invent With Python, and I know four programming languages now (Python, Java, C++, C#), not to mention HTML, CSS and Javascript. I would definitly recommend it.

    3. Re:Try "Invent With Python" by Anonymous Coward · · Score: 0

      -1 for being a snoozefest of a read.

  72. Everything in this list, eventually by medcalf · · Score: 1
    --
    -- Two men say they're Jesus. One of them must be wrong. - Dire Straits
  73. Warren and Carter Sande: Hello World! (Python) by John+Bokma · · Score: 1

    Hello World! Computer Programming for Kids and Other Beginners by Warren and Carter Sande. Uses Python.

  74. C++ is still evolving. by Anonymous Coward · · Score: 0

    C++ has kept evolving with Template Meta-programming, the auto keyword, and Lambdas.

    1. Re:C++ is still evolving. by next_ghost · · Score: 1

      Which is SOOOOO important to a complete beginner...

    2. Re:C++ is still evolving. by Anonymous Coward · · Score: 0

      It's important when recommending the language to anyone, beginner or not.

    3. Re:C++ is still evolving. by Smallpond · · Score: 1

      Pretty soon it will catch up with Lisp.

  75. Small Basic by SuiteSisterMary · · Score: 1

    One could try Microsoft Small Basic. Some self-directed learning guides are available on the site as well.

    --
    Vintage computer games and RPG books available. Email me if you're interested.
  76. Build from what he likes doing by Anonymous Coward · · Score: 0

    For my son (age 10), I started him off with Java and it went no where fast. He then got into minecraft and wanted to learn Java again to be able to mod the game. After learning Java somewhat and making mods, he got a hand me down iPad and started tinkering with it.

    For the iPad, I'd recommend something to go step-by-step with like http://www.deitel.com/Books/iPhone/iPhoneforProgrammersAnAppDrivenApproach/tabid/3526/Default.aspx

    For Java, we just got a learn it in 24 hours kind of book.

    First find what he *wants* to do, whether that's arduino, minecraft, WoW, etc. and then build from there.

  77. Stanley Lipmman, Qt, assembly, DX11, and engines by 0111+1110 · · Score: 1

    Stanley Lippman's C++ Primer, 4th ed. and Inside the C++ Object Model.

    Why C++ and not something like Python or Java? Becuase C++ is what you use to program games and I think one of the best thing a kid can to is try to write a simple game.

    I'd also recommend a book on Qt 4 or whatever your favorite cross platform GUI library is. He should understand early on that there is more than just Windows or OS X out there and Qt looks good in all 3 major OSes.

    If he is interested in writing a simple game I'd also recommend some texts on assembly language so that he can practice using inline assembly in inner loops. Great fun and it helps build intuition about how computers 'think'. Obviously DirectX and/or OpenGL are also quite essential.

    He could even play around with game engines like Torque, Ogre, Leadwerks, Unreal Development Kit, CryEngine 2, Unity, or Unigine.

    If he is interested in writing internet apps then C/C++ is probably not the best platform. In that case maybe C#/Mono might be better. And don't forget the MIT's computer introductory computer science courses.

    --
    Quite an experience to live in fear, isn't it? That's what it is to be a slave.
  78. Haskell by John+Bokma · · Score: 1

    If you supervise/assist, how about Learn You a Haskell for Great Good!

    1. Re:Haskell by rot26 · · Score: 1

      that's child abuse, man.

      --



      To ensure perfect aim, shoot first and call whatever you hit the target
    2. Re:Haskell by LocutusOfBorg1 · · Score: 1

      Oh my mistake, I meant Haskell :) sorry

  79. ProgrammingBasics.org by my2iu · · Score: 1

    I actually run a website at http://www.programmingbasics.org/ . It focuses on teaching a few simple programming concepts in JavaScript to younger kids. It uses Java applets, but other than that, there's nothing to install. Everything is integrated right into the website (like Codecademy), so kids can dive right in and start programming.

  80. Arduino by Anonymous Coward · · Score: 0

    Get an arduino board and some various sensors. There is a lot of working sample code and many available libraries. It is a great way to learn coding that is more focused on problems you solve, and less on the syntax. Plus it's fun.

    http://arduino.cc/

  81. Personally I think the best programmers program. by BeansBaxter · · Score: 1

    Books are all fine and good for reference but if he wants to learn he really should try to find something simple and go from there. The language isn't as important early on as being able to try things quickly and getting feedback / good explanation of errors. Heck in elementary school I was copying Apple II code from magazines just to try to get some silly demo / game to work at school. Without any floppys it all went away when the power was turned off. Pretty much an exercise in typeing but it led to me trying to understand the logic and eventually to an understanding of compilers and binary executable files vs interpreted scripts. Just get a basic interpreter and help him learn some branching and prints to the screen. My sons have spent an immense amount of time playing with switches in Minecraft to do silly things like create clocks or open remote doors or whatever. It makes me laugh to see it because in my mind they are learning to program without knowing it. Legos Mindstorms come with logic / programming modules. Might be a fun and interesting way to include robotics into his learning.

    Good programmers program. Doesn't matter where or how just because it is fun is usually enough. Work on understanding logic and execution flow through different systems and the languages will be easier to learn.

    One other thought find challenges or projects on the web. Having a goal or a problem to solve usually motivates a lot more than "learning". I know osix has some coding challenges that are fun and may be very educational. They are language agnostic and can be done with any language you are comfortable with. Very fun all together. -Beans

  82. Python is the best by Anonymous Coward · · Score: 0

    I just picked up Python by myself, and it is fairly straightforward as far as programming languages go. As a college student, I am cheap, so I bought python for dummies and it is alright... But honestly, the internet is the best source for help. As far as learning the concepts goes, just go and try to find a Python book that has good reviews on Amazon or something.

  83. Want to scratch? Get an itch first... by angularbanjo · · Score: 1

    A desire to solve problems is a must, and there might be safer waters to try before you get to all the stumbling blocks and white space sensitivity that certain text editor programming languages will gleefully hurl in the way. There must be other means of analysing and describing attractive problems first, and to drive a thirst for solution-finding, before selecting a tool to go further on the journey.
    I'd want to go at it from the angle of kindling a need to build or fix something, rather than assuming that learning a particular paradigm, at any age, will be of much intrinsic value. I'd like more creators and inventors than career programmers ;-)

  84. Re:Tube classics by thomasw_lrd · · Score: 1

    I learned Dos and Basic from two books back in '89 when I was 10. I had no background knowledge.

    My suggestion is to learn Android. Then he can have the world as an audience.

  85. Hello World! by The+Dunce+Baron · · Score: 1

    The book, Hello World!: Computer Programming for Kids (And Other Beginners) by Warren Sande, Carter Sande is an excellent book to teach programming to kids.

  86. Depends on intelligence and motivation: by bodangly · · Score: 1

    I believe it depends on how advanced your son is and what it is about programming that interests him. If he is highly analytic and mathematically inclined C could be a good start. Memory management in C is not simple though and pointers can be very confusing. Also, since it is pretty low level he won't be doing much in the way of graphics without learning an API. The good thing is so many languages share syntax with C.

    However, if your son wants to learn programming predicated solely on his love of video games for instance, C may be a little too dry so to speak. In that case, I feel Flash is a good learning tool because it lets you very quickly and easily get graphics on the screen doing something. JavaScript/HTML5's canvas are a good choice as well.

    If your son is gifted, and I don't mean in the way every parent thinks their child is, I mean truly advanced; I'd highly recommend the text "Structure and Interpretation of Computer Programs". It is the text used for the introductory computer science at MIT and many other colleges. The entire book is available for free online, with sample exercises, answers, etc. And since it is so widely used and well regarded there is quite a bit of help out there. The language this uses is Scheme, a dialect of Lisp. Again, this is if your son is at the level of an honors-student high school senior or college freshman. If he does make it through this book he will have a very firm understanding of important computer science concepts.

    http://mitpress.mit.edu/sicp/

    No matter what, your son will need SOME guidance. If you aren't able to provide it, you may want to set him up with an account on some web forums related to whatever you choose where he can ask questions.

  87. Re:Tube classics by Anonymous Coward · · Score: 0

    A world that doesn't buy apps.

  88. Sudoku by bbbaldie · · Score: 1

    Turn him on to sudoku puzzles. Solving them strengthens the same brain cells that put 1's and 0's together. Seriously.

  89. Re:Everybody Poops by PerlJedi · · Score: 0

    Peter: "Well, lets see, we're catholic."
    Sales clerk: "Ohh, then you want: 'You're a naughty child, and that's concentrated evil comming out the back of you'".
    Peter: "That's the one."

  90. Re:MIT's Scratch or KTurtle by oys_ · · Score: 1

    You may also want to have a look at KTurtle [wikipedia.org].

  91. There is a reason... by Anonymous Coward · · Score: 0

    ...that most programming courses assume a working theoretical knowledge. Without knowing basic things like linear algebra, graph theory, probability, calculus etc it is simply not possible to learn good programming.

  92. You're right. C by Anonymous Coward · · Score: 0

    I started with C when I was 12. And I'm now an accountant. I know that sounds bad, but it was due to circumstances out of my control. But It did create a lifelong interest in the subject. I still practice programming years and years later. But I must say, all the new technology baffles me. RoR and ASP.NET and new whatnots make me feel like an idiot. And that is why I'm probably suggesting C.

    It makes me laugh when someone says you can't learn C as your first language. Just because you couldn't do it, doesn't mean it's impossible. C has an incredible amounts of complexity, and with it so many new things to learn. But it starts out very simply with printf("hello world"); and you go from there. I don't think any other language teaches you to be a better programmer given how many ways you can be a bad programmer in C.

    I refuse to believe had I started out with any other language (ahem.. java) I would have the same interest as I do now, even when I'm not in the field. And I also believe, after C, it's all too easy to pick up something else.

    Disclaimer: Apparently kids are different these days. If he wants to make a game in the second week, you may want some other advice.

  93. Pull internet by fluor2 · · Score: 1

    Give him any book. Pull the plug on the internet.
    Tell him that he will get internet back when he has made a small math- guessing-game. ;)

  94. Why's Poingnant Guide to Ruby by jtara · · Score: 3, Informative

    For an 11 year old? That's easy: Why's (poignant) Guide to Ruby

    Just make sure you stock-up on chunky bacon.

    (Multiple formats linked from the Wikipedia article)

    http://en.wikipedia.org/wiki/Why's_(poignant)_Guide_to_Rubyhttp://en.wikipedia.org/wiki/Why's_(poignant)_Guide_to_Ruby

    1. Re:Why's Poingnant Guide to Ruby by Anonymous Coward · · Score: 0

      Different people like different things. I don't much like Ruby, and I really hated Why's Poignant Guide.

      So, if the 11-year-old shares your tastes, he should learn Ruby from Why's Guide. If he shares my tastes, trying to teach him Ruby from Why's Guide is a very bad idea.

      (Why do I hate Why's Guide? The whimsical silliness is IMHO very overdone. Here I am, excited to learn a new language with lots of favorable buzz, and I get pages of material about "I found a dog one day" and such. If you hate programming, maybe the silliness can engage you and hook you in; in my case, it pushed me away. If you love that book, you aren't wrong, because that's opinion and yours is as good as mine.)

  95. JavaScript by Anonymous Coward · · Score: 1

    JavaScript: Hands Down!!!
    - Language of the web
    - Only way to write cross device apps, iPhone, iPad, Android, windows etc.
    - No fancy dev tools needed, text editor and a browser(Chrome)
    - Even dev native apps for Windows 8
    - Great video tutorials by crockford

  96. Are you sure you want a book? by nine-times · · Score: 1

    I don't have a helpful answer, but are you sure you're looking for a book? There might be a website or application that is aimed at teaching programming in a way that's a little more interactive-- like your changes become apparent without recompiling or anything.

    With that in mind, I would wonder if the best place to start would be web development. HTML and CSS are relatively simple and can give instant feedback. He can make a change, reload the browser, and see how the change affected the outcome. He can figure out concepts like grouping information to use the same tags and classes, and inheritance of formatting. It's a pretty good introduction into the idea of data structures and strict logical rules. As he gets to be comfortable with making static pages look the way he wants, you can help him throw in some Javascript, and eventually PHP and MySQL databases.

  97. Machine/Assembly by Anonymous Coward · · Score: 0

    I started with machine language (yes, I mean machine language - not assembly - wherein I used dip switches to program). Shortly after, I used assembly. Then BASIC. Then C. Then much much more.

    Because I incorporated "chip level" knowledge into my learning, I am able to learn languages very quickly - because I understand what happens at the lower level.

    I would start him with a micro-controller (like a Microchip PIC) - don't go right for the Arduino to start - high level stuff in the way. Have him learn assembly and basic electronics - he will also be using a PC at the same time. This will allow him to move to C, or whatever, at a much greater pace and with much more understanding.

    When I first learned machine level programming, it was hard to comprehend how that turned into characters on the screen - but in a very little time a relatively complete understanding of computing emerges - a very powerful understanding.

  98. Head First Books by jmDev · · Score: 1

    All of the Head First books are ridiculously easy to follow and use all kinds of methods of teaching. From pictures to funny jokes. It really is a good time and makes learning programming fun.

  99. Final Post by schnikies79 · · Score: 1

    Goodbye Slashdot account. It's been fun but it's time to move on.

    --
    Gone!
    1. Re:Final Post by Anonymous Coward · · Score: 0

      I'll hold you to that. Your account comments page is now bookmarked and will be checked regularly.

      It's a shame you're leaving, but at least it gave me the opportunity to procrastinate for a couple of minutes.

      Have you tried filtering Roblimo on the front page? It helps.

      Ask Slashdot has been a cesspool for a long time now. This article certainly isn't the worst. I was just going to reply 'Maybe you should teach him how to use the library first.', but I won't do that now (don't want to get Slow Down, Cowboy! messages for the next half hour).

      Honestly, I think the real reason this place sucks now is not because of the bad stories - they've always been around - but because of the lack of good stories. I don't know, that Taco brought a certain undefinable interestingness to this place that is apparently gone.

      Happy trails to you, hope you find a similar site out there. Be sure to drop by from time to time and spam for it if you do.

  100. Pascal was good by jd · · Score: 2

    Because it forced people to understand how to write programs, rather than how to hack something that worked in a specific language. Very few people used Pascal in the real world, but because Pascal was so rigid in style, the thinking that resulted would work with any language in any era of programming. That's exactly the approach that should be used in learning programming, since you don't know (and can't know) what will be used in a decade's time (assuming he goes on to take a 3-year degree followed by a career in something utilizing programming skills).

    Pascal is not the correct choice for today, but the strategy is still sound. You want something that allows him to learn programming (the subject) with as few dependencies on the specific stylistic choices of any given era as possible. In other words, you don't want something that depends on templates, aspects, objects or other phenomena which may or may not even exist in later languages, in just the same way that you wouldn't teach a person to drive one specific make and model of car where you're guaranteed those skills won't transfer and that the model won't exist for 90-95% of the person's actual time behind the wheel.

    Python or Ruby might be good choices - however I dislike modern interpreted languages as they don't have the immediacy of feedback of BBC Basic or PET Basic, and if you don't have immediacy you might as well use a compiled language and get the additional feedback of warning and error messages. I'm not impressed with their GUI support, either.

    Tcl/Tk has a really ancient GUI design, but does give you a lot of useful core concepts. The syntax is horrible, though. It looks like a cross between LISP and line noise after being put through a blender. It makes a great second language, but probably not a good introductory one.

    MARS D has the concepts, the syntax is good and in most respects it is exactly what you want for a teaching language. It lacks development and debug tools, though, which means it's harder than necessary to make the jump from theory to practice and then from cause to effect. However, if he's willing to put in the extra effort necessary to bridge the gap, I'd say D is the best teaching language currently out there. It's also distant enough from commercial languages that the inevitable bad habits picked up when first starting won't impact him later on, yet close enough that good habits can be adjusted and recycled.

    Java is NOT suitable as an introductory teaching language, because it forces a particular methodology. That is absolutely the WORST thing you can possibly do at the start. Java IS correct for teaching OO design and OO methodology as aspects of programming, but should absolutely NOT be used to teach programming itself. Further, because it IS used in the real world, bad habits picked up at the start will be congealed and reinforced rather than eliminated - always a bad move in education, although you wouldn't know it in many modern schools.

    --
    It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    1. Re:Pascal was good by Darinbob · · Score: 1

      I agree here. Pascal really has what you need for a beginner. It also comes without the rigid style dogmas of Python purists, it doesn't have the overly complex features of C++, it protects against shooting yourself in the foot much better than C, and it enforces good programming habits from the start. And since it is not a popular commercial language you can use it without worrying if the language's popularity will last until the kid is out of college and in the job market. I think Scheme is good for college kids but probably requires too much formal abstract thinking for an 11 year old.

      Here's the snag with most languages. People want to make something that does something. Most languages can only do this portably with text. No widely respected and portable language has a built in graphical interface, and a GUI really does not give you anything useful except a graphical button to click on (boooring). When I first learned we had turtle graphics in Pascal which was great because you could do more than just text and you could do it simply (without being stupid like dragging boxes around with Visual Studio). I understood recursion almost immediately this way just be drawing a fractal tree, whereas doing a recursive text only program took a lot more effort to figure out what was going on. You also had your entire program there in a straight forward way, without tons of widget initialization or callbacks or just code snippets in various on-screen boxes.

      So the trick is to figure out what is fun and interesting in a text-only program. If you figure that out you can use just about any language and succeed. Later maybe put it on the web (which I think is pointless, HTML is not programming and you don't want to warp the kid's mind into thinking that computing is about the web).

      Suggestions: a text adventure game, or other textual game. Not cool enough for the bratty kids but cool enough for smart ones. Plenty of opportunity to expand and grow it when you learn more techniques. Or a simple calculator that lets you enter simple equations (maybe reverse polish for simplicity until they learn more).

  101. How to Design Programs by dlsmith · · Score: 1

    How to Design Programs.

    It was written with zero prerequisites in mind. Works as a CS 101 course, but also works as a do-it-yourself course, and ought to be accessible to a bright young kid.

    The language is Scheme, although that's sort of incidental—the point of the book is to teach programming, not to teach Scheme. The good thing is that DrScheme is an no-distractions IDE tailored specifically to teaching. The bad thing is you probably don't have access to the same kinds of bells and whistles (graphics, robots) you would in a more industrial language.

    1. Re:How to Design Programs by tebeka · · Score: 1

      Second that. IMO Schems's simplicity makes it great first language.

      --
      -- Miki Tebeka The only difference between children and adults is the price of the toys.
    2. Re:How to Design Programs by Anonymous Coward · · Score: 0

      For an 11-year old, even better might be the Bootstrap curriculum [http://www.bootstrapworld.org/], also developed by the Program By Design [http://www.programbydesign.org/] people who do How to Design Programs.

      Bootstrap is oriented towards MIddle-schoolers and reinforcing algebra and geometry concepts to make video games.

      If you check out HTDP I'd suggest at this point looking at the 2nd edition [http://www.ccs.neu.edu/home/matthias/HtDP2e/], as the first edition is really out of date now.

      The focus of HTDP is the program design process (how to go from a written problem statement to a working program, e.g. addressing "blank-page syndrome"). It uses a series of languages that introduce only about 7 common concepts in all programming languages, but even with that you can develop multi-player graphical networked games. The IDE is keyed to the language levels so that new users don't get confusing error messages that refer to concepts they have not yet read about. The language simplicity allows stuff like (automated) complete test coverage calculation.

  102. Self-taught as kid and a home school parent by Anonymous Coward · · Score: 0

    I learned basic when I was 5 from my parents. I taught myself assembler in middle school and high school. And since then I have learned countless other languages and do it professionally for fortune 500 companies. Now I have four kids and we are home-schooling them. So keep all of this in mind that I am both self-taught and have experience working with kids who want to learn to program. I have also taught other homeschool kids using tools like Inform7 and Scratch.

    First off, the language doesn't matter much as long as it is flexible and somewhat "real" in terms of writing real applications with it. Scratch is a good toy, but it sucks for abstraction so move past that one. The curriculum matters most, however. It helps to go with a language that is not over-burdened with syntax rules or confusing code semantics (java is not a good first language, and I know that because I remember how long it took me to learn it even after having a lot of experience with C, C++ and Pascal.) Anyway, back to the point: A good computer science curriculum will help your kid build better skills working with Algebra and logic, which are far more important than understanding where to put a semi-colon. Functional languages can be useful here, since they look more familiar and work more interchangeably with math than top-down procedural languages.

    Two great resources: Kahn Academy (uses javascript as the language) and Bootstrap (http://www.bootstrapworld.org/), which is scheme-based. Both of these focus on an online curriculum and do not require any software other than a modern browser. Kahn focuses more on programming mechanics whereas Bootstrap is more algebra-focused and could really help your son get a leg up in math later on. Both are free and actively maintained, though I'm sure that Kahn is better funded.

    Otherwise, there are some great guides at "Learn code the hard way" for different languages: http://learncodethehardway.org/ Each of these will cover a lot of the core fundamentals of each language (functions, loops, conditionals, logic, abstraction, etc) and help your son understand the mechanics of whatever language he is trying to use. But still, it goes back to the "why." Most programmers don't program because they like typing or because they like being smacked around by a compiler. The fun of solving problems keeps most programmers happy. So it's a good idea for him to find a curriculum that is solutions-focused so that he maintains a set of requirements to follow, thus providing his program with a purpose and direction. Too many times as a kid, I started making a game and only got as far as an awesome menu routine or a display engine because I would quickly loose focus... SQUIRREL!! If I had a way of breaking big problems down into small solvable problems, I would have been even better at programming and better appreciated abstraction and refactoring as much as I do now (well, now that I learned it all again the hard way in college. ;-)

    If he really wants to be self-directed then you might want to see if there are any games he likes that are moddable and maybe he can take a focus on modding his favorite game in small measurable steps. That's the sort of the focus I want to take with my kids, by making a minecraft mod that allows you to make your own mod using Groovy and duck-punching (e.g. you can do live coding without restarting the client or sever). Sort of a work in progress.

    Best of luck to your son! As long as he maintains a passion for learning and solving hard problems (hint: there's not much difference between the two) he'll likely never get bored of it.

  103. More creativity, please by NEDHead · · Score: 1

    This post would have been more interesting were it in the form of a small animated hologram

  104. Robocode by sckeener · · Score: 1
    I'd recommend doing something fun regardless of what language.

    If you are fine with Java or .Net, try out http://robocode.sourceforge.net/

    I know I'd love to write code as a kid to battle other players.

    I learned most of my programing as a kid by picking apart other code. I learned on a trs80 loading up basic games and then in my teenage years, tweaking code for BBS sites when 1200 baud was awesome.

    --
    "Only one thing, is impossible for god: to find any sense in any copyright law on the planet." Mark Twain
  105. Hope this helps by magikfingerz · · Score: 1

    This site is very useful for your situation: http://python4kids.wordpress.com/getting-started/

  106. C Programming Language by bulldog060 · · Score: 1

    Pick up "The C Programming Language", will give him a solid base to work off which is really the important part ... language is less important. But speaking as someone who learned perl first and went back to work with C, C++, and Java later I wish someone had me learn those first before moving on to others, going the other direction tends to make people stubborn and lazy ( and i will avoid the python topic like the plague since i am not sure if people are trolling or actually believe that it is a good place to start ).

  107. Open Source by Talennor · · Score: 1

    Find something open source that's exciting to him. He'll read the code, compile it, find the tools, edit it, and learn. The language isn't as important as the problem solving part and not getting lost in hello world programs and simple problems.

    However, I'd recommend staying away from PHP or Perl. You can learn some bad things there.

    I wouldn't limit the search for a fun project to high level software, either. Arduino is an awesome platform for embedded stuff with tons of open source code out there.

    --

    //TODO: signature
  108. World of Warcraft, duh. by Anonymous Coward · · Score: 0

    Honestly, asking what language is probably the wrong question. Asking what environment is closer to the right question. Good programming often is *re-programming* (aka, finding bugs) so if this kid doesn't use what he creates, he's not really going to learn anything. I'd get him into a video game that allows scripting and customization - I think World of Warcraft allows this but I don't play it so I'm not sure. That way he'll actually enjoy playing around with it. I mean, seriously, he's 11. What is he gonna do? Databases? Financial spreadsheets? A useful web app? Not likely. Go with a game.

  109. Scripting languages by scharkalvin · · Score: 1

    Since he has a Linux computer available writing simple programs in any of the scripting languages such as Perl or Python is a good way to start. Then move on to Tck/Tcl and simple GUI constructs. http://oreilly.com/ has a good selection of programming books for Linux and would be a good place to start. Some of their titles are available freely on line too.

    1. Re:Scripting languages by Anonymous Coward · · Score: 0

      Avoid any GUI programming and focus on command-line terminal environment and use a good introductory language such as Python (modern) or even Pascal or Modula-2 (more pedagogical languages nowadays). I would opt for Python and vi/vim all running within a GNU/Linux virtual machine and to keep it interesting only provide a terminal environment. Kids need to learn that a windowed-environment is not a necessity.

  110. Javascript by Anonymous Coward · · Score: 0

    Seems obvious, but I think it's important for anyone learning programming have a strong visual component tied to what they write. Javascript is perfect for this.

    In terms of something more formal and structured, yet highly visual, Foundation Actionscript 3 Animation would also be a good match. It's closely related to Java, is mature, and has many real-world applications, especially for artists. Learning AS3 would allow him to move between other languages much easier than if he were to start with just Javascript.

    http://www.amazon.com/Foundation-Actionscript-3-0-Animation-Making/dp/1590597915

  111. LOGO / Turtle Graphics by N0Man74 · · Score: 3, Interesting

    Have you considered LOGO (or Turtle)?

    It helps teach some basic concepts, while at the same time giving more feedback (which is good for kids). BASIC on a TRS-80 Color Computer and LOGO on a TI-99 4A were 2 of my earliest introductions to programming. I also learned about logic through some very old game that used many types of logic gates to solve various puzzles involving flow of power (I wish I remembered the name).

    You could also pick up a copy of the board game Robo Rally, which is an amusing game that involves planning and visualizing instructions that you will be executing at a later time (with lots of uncontrolled variables screwing things up). While not being like actual programming, it's a fun way to exercise some of the types of thought patterns involved.

    In my opinion, at that age, the choice of Language isn't really as important as just some of the basic ideas involved, such as sets of instructions, iterations and control structures, and logical decisions.

    1. Re:LOGO / Turtle Graphics by Anonymous Coward · · Score: 0

      Turtle graphics is crap, and I can't understand why anyone would recommend it to anyone. It was uninteresting on the Apple II, and it's still uninteresting.

    2. Re:LOGO / Turtle Graphics by Anonymous Coward · · Score: 0

      Language doesn't matter, but Logo would be a poor choice as it misses the mark of being a proper functional language. Scheme (bootstrapworld.org) would be a better direction to shoot for if you want to go functional. Or perhaps Scala. Clojure might be taking it too far though.

    3. Re:LOGO / Turtle Graphics by Anonymous Coward · · Score: 0

      +1 for Logo. You can do interesting things with very little introduction and start to pick up same basic concepts. If he takes off, then you can move on to some of the other scripting languages.

      ucblogo is available as a standard package for Fedora - don't know about Ubuntu

    4. Re:LOGO / Turtle Graphics by Anonymous Coward · · Score: 0

      ROCKY'S BOOTS was the logic flow game. I played it on Apple ][e

    5. Re:LOGO / Turtle Graphics by Anonymous Coward · · Score: 0

      Waiting for someone to mention LOGO - recursion made easy! The only trouble with it is that the final result looks like spaghetti.

    6. Re:LOGO / Turtle Graphics by Anonymous Coward · · Score: 0

      If moving into the land of basic then perhaps look at Small Basic from microsoft : http://smallbasic.com/

  112. A Book On C by Anonymous Coward · · Score: 0

    ... is what I tought myself to program out of as an 11 year-old.

    http://www.amazon.com/Book-Programming-4th-Edition/dp/0201183994

  113. Why not start with HTML by Anonymous Coward · · Score: 0

    May not be a programming language, but at least he can make a few pages, and see fast results. He can even learn how to install Apache or some other web server and after he has played around with a few static pages, can then jump into something that involves more logic.

    He can even start to understand the way a system is assembled using different resources, like styles sheets, images, etc.

    Then improve upon that by adding a form with JS validation. Then add some basic DB logic to store the data in the form. After that, he can send an email notification...

    That way he will eventually learn all the basics components of any application.

  114. Smalltalk and Squeakland by richieb · · Score: 1
    --
    ...richie - It is a good day to code.
    1. Re:Smalltalk and Squeakland by Anonymous Coward · · Score: 0

      I second smalltalk. It is still taught as a four day course at one of the leading investment banks to get experienced programmers with bad habits picked up from the languages they learnt. Smalltalk is the Latin of computer languages and should be taught in schools.

  115. No by Anonymous Coward · · Score: 0

    Tell him to start studying finance and go into banking or law and go into politics. Anything else and he's got a 99.999% chance of being a fucking sucker for the rest of his life. The other 0.001% manage to make some stupid thing that, through some confluence of luck, gets bought out by a finance person and they can pretend they got rich through good old American hard work.

    Oh, I'm sorry. The truth hurt?

  116. HTML and JavaScript by AttilaB · · Score: 0

    I actually think HTML is a great way for a young person to get started with programming. You get pretty much instant gratification and is very easy to pick up. Once they get comfortable with the basics they can start using JavaScript to manipulate the page. Sure, it's might not be the most "pure" approach, but half the battle is keeping interest.

  117. Re:Tube classics by crankyspice · · Score: 2

    All far too dense for an 11 year old, and all pretty much require more background knowledge than an 11 year old is likely to have. I'm not sure there really is an answer to the OP's question though, at that age, even a very bright kid is almost certainly going to lack the prerequisite knowledge to learn to program from just a book.

    Say what?! I was programming at age 11, self-taught, using 'just books.' (Unless you count some early -- and very rudimentary -- Logo exposure in grade school; later scholastic use of the computer was, IIRC, limited to Oregon Trail, though once you got to high school you could take a class that taught Pascal...)

    I got started hand-keying source code from magazines and books available at local booksellers. As I progressed, I picked up a copy (likely got it as a present) of the AppleSoft Basic Programmer's Reference Manual.

    These days, I have to imagine it would be both easier (every API you need to get started is quickly available online, often with excellent accompanying tutorials and/or with user-contributed sample code snippets), and perhaps more intimidating (as the complexity of our systems has increased precipitously). (On the flip side, much, much easier to get a GUI working under Java than back in the day when you had to hand-code memory bank switching and deal with the bizarre "but it saved a chip!" oddities of Apple II graphics programming...)

    Mind you, I wasn't a very good programmer, and honestly wouldn't be until I was finally exposed to proper procedural programming (C), then OOP (C++, and when it was released, Java), in college. But I had fun with it, and my stuff worked. Wasn't terribly robust or full-featured, but, it worked. (My database was a flat-file, not relational, and, um, written in BASIC... ;))

    Okay, all that said, it might be worth checking out the Head First books. Head First Programming uses Python and is supposed to be a general introduction to programming. There's also Head First Java. No direct experience with either, but people rave about 'em.

    --
    geek. lawyer.
  118. If he's interested in c++ then... by blahplusplus · · Score: 1

    ... C++ primer plus by Stephen prata is a good starting point when just beginning, at some point pretty much all programmers come into contact with C and Prata's pedagogy is sound. Teach each concept, have student master that concept, then move onto the next concept, building up as you go.

    http://www.amazon.com/C-Primer-Plus-5th-Edition/dp/0672326973/

  119. And for the reading by Hentes · · Score: 3, Informative

    The Python manual, embedded in the official distribution contains a very nice tutorial.

    1. Re:And for the reading by dr_leviathan · · Score: 2

      I know two teenagers who went through the official python tutorial and started their way toward being great programmers:

      http://docs.python.org/tutorial/

      --
      Religion is poison to rationality, and we lose sight of that at our own peril. -- Lurker2288
  120. Python or Scheme by Anonymous Coward · · Score: 0

    A lot of people these days recommend Python as a first language. It is easy to learn and powerful. I don't know which of them is best, but here's a list of Python tutorials aimed at non-programmers.

    Another interesting choice might be Scheme. There are two very good books that use Scheme to teach programming:

    DrRacket is a good programming environment to use with either of them.

  121. What an 11 year old wants... by richieb · · Score: 1

    .. is to write video games. My son used Megazuex - a self contained ASCII graphics environment for building and playing games. He learned it all on his own - and in 5th grade science project he presented one of his games.

    --
    ...richie - It is a good day to code.
  122. get a real computer first by Anonymous Coward · · Score: 0

    First and foremost, destroy the apple computer and stick with linux or windows. Since everything is going mobile and android, start by showing how easy it is to create an app for android. He can impress his friends by showing him his app running on his android phone and he can then get some apple nut jobs to switch from iphone to android as well.

  123. Forget procedurale languages - Go Straight to Scra by Anonymous Coward · · Score: 0

    Forget C, Python, etc. Start here - it is amazing what you can do and there is a great progamming model:

    http://scratch.mit.edu/

  124. Re:Tube classics by Anonymous Coward · · Score: 0

    Depends on the kid. Some 11 year olds have PhDs and others have a very narrow, but precise focus that makes them experts in a very small area. Get him something current, concise, and the hardware to work with. StackOverflow is the one of the best resources for programmers and leads to just about every resource you could ever need.

    The first question you should ask is what do you want to accomplish? If it's "write a game" expose him to Unity or XNA. The best language to use for that is C++, but there are far more programmers that use C#, Java, or Objective-C. Python isn't a bad suggestion. It runs Eve Online.

    Artificial intelligence might win him some science projects. This algorithm for flocking is surprisingly simple and not out of reach for someone new.

    If he wants to make physical objects using programs, consider getting a makerbot and writing software that generates mathematical objects or just print cool stuff like quadracopters and robotic hands.

  125. Don't detach him from the physical world just yet by eminencja · · Score: 1

    Go for Lego Mindstorms or something similar. http://en.wikipedia.org/wiki/Lego_Mindstorms_NXT#Programming

  126. What about a game? by cowboy76Spain · · Score: 1

    For the basic introduction (so he finds if he likes the idea of creating algorithms from simple instructions) maybe this game will be more enticing.

    If he likes it, then you can introduce the more complex stuff relating it to the game.

    --
    Why can't /. have a rich-text editor? Editing your own HTML is so XXth century.
  127. Re:Perl rocks! - but the goal is most important by Digicrat · · Score: 2

    +1, though I was ~13 when I started learning Perl myself and it remains my favorite (if sometimes under-appreciated) language.

    More important than the language though is the end goal. For me, I had no interest in Perl at that age, it was merely a means to an end-- in my case a login system for my Starcraft Clan.

    Start by identifying what the kid is interested in and/or wants to build, then find the right tool that they can learn in order to achieve their goal.

  128. Basic Computer Games by David H. Ahl by Megane · · Score: 1

    ...and an emulator for an 8-bit computer with some sort of MS-BASIC. Preferably a Z-80 or 6809 version, so maybe some kind of CP/M emulator, or a TRS-80 or CoCo emulator. The 6502 versions just weren't as well made, sorry Apple and Commodore fans. And an MS-BASIC with line numbers! That VisualPoundNet stuff can get the hell off my lawn.

    Seriously, typing in other people's code, then hacking it up, that's the best first step. No need to get fancy with programming languages or APIs, just get used to code and how it flows. Super Star Trek alone can give weeks of hacking fun. After a few months he can move to GCC on Linux or something like that.

    Just make sure the kid understands he's not going to create the next World of Warcraft in six weeks.

    --
    #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
  129. My son started the same way. by Anonymous Coward · · Score: 0

    I gave my son two books; "Teach Yourself C, 2nd Edition" by Herbert Schildt, and "Programming Linux Games" by John R. Hall. Both are now out of date (my son is 21 now), but both gave him an excellent base to write simple games while learning the language, and they are still available on Amazon. He wrote his first game when he was 12 (TuxBlocks). Since then, he has picked up C++, Java, and Python. He wrote several games while in High School for a Computer Game Design class (the rest of the class was using a game creator that is simple copy/paste development). His current project is Open RPG Maker.

  130. The right question by chinmoykanjilal · · Score: 1

    Your focus is not correct. You should think of the long term goal. Should you have your child learn a language or is it something else that you want to achieve? A language is a medium. Eventually, you would be proud that you picked a language for your child early in his life, that by the time he is 16, he has a stronger understanding of systems and their interactions. He is able to figure out the logic flow of data in the mot abstract of systems.

    That brings us to a few constraints: layers and platforms.

    Start with a language, which follows OOPS. Also, decide whether you want him to start with the web-dev side of things or with system programming.

    In any language you choose, make sure it is present across multiple layers. That way, he will face lesser roadblocks in his self-leaning.

    I personally suggest he leans Java. The reasons:

    • Good OOPS concepts
    • Standard C-style syntax
    • Extremely powerful API
    • Non-exhaustive help content online
    • Presence across desktop and web
  131. Re:Tube classics by next_ghost · · Score: 2

    Not really. The C Programming Language is really good. It's very straightforward, it tells you everything you need to know about each feature of the language and it doesn't confuse the reader by hiding important details until later. It's much easier to understand than those fancy books that try to be smart about what they tell you right away and what they try to hide because the writer thinks you might be too dumb to understand it.

  132. Not any of the above ancient languages by BlortHorc · · Score: 1

    Speaking one who learned BASIC on various micros , and then taught himself more complex coding using http://www.commodore.ca/manuals/c64_users_guide/c64-users_guide.htm, pretty sure that was the book, assembly code in any case, tom fooled with fortran and pascal, can I just say: none of those languages are well suited to learn coding on one's own, especially. Most importantly, all of those were designed when computers were far more expensive than programmers
    And for fuck's sake: not C. Pointers and memory management are not things one should learn when grasping simple coding concepts, as we all know, the only result of this will be: segmentation fault and a bemused look

  133. BOOK? Finding Problems to Solve... by wikthemighty · · Score: 1

    I started playing around with BASIC at random on the PET, and a few years later had a Commodore 64 where I learned much more. I remember having two books which contained a basic storyline, but had coding problems ranging from fixing the code to writing a lock for a door (or a program that would test all combinations, etc) but for years haven't had the slightest idea of where the books went (and neither do my parents.) They were written for young adults, and general enough to work on any BASIC (at the time C64, Apple II and Atari 400/800 were the targets) Does anyone know of these, or something similar? They are exactly the sort of thing the OP needs. (That being said, BASIC may no longer be the best language to start with, but aside from provided code, these books would have worked just as well with Ruby/Python/Perl/etc...

    --
    "There are people who do not love their fellow human being, and I _hate_ people like that!" - Tom Lehrer
  134. Python by Anonymous Coward · · Score: 0

    I think one of the best resources I had learning to program was the python docs themselves. They have a great tutorial here: http://docs.python.org/py3k/tutorial/index.html
    The only language I've really seen better docs for is POV-RAY. ;P

  135. Invent your own computer games with Python by Dennis+Sheil · · Score: 1

    I have a relative around that age who knows a lot about the Xbox and iPad. I remember from my Commodore 64 days how these machines were not "walled gardens" and how I could start programming in BASIC as soon as I turned my Commodore 64 on. So I looked for some programming books for him.

    I looked at a lot of books. I suggest cursorily flipping through the first few chapters of books you consider. It came down to two books, I don't recall what the second choice would have been. I picked Invent your own Computer Games with Python. Why? Because Python is a good tool to teach kids a language, but it is also used for real stuff out in the world, it is not a toy language like BASIC. Because kids are interested in games at that age, and with this they can program their own. And because it is basically written for kids and beginners - it is not a "learn Python" book for someone like me, who already knows C, C++, Java, PERL etc. and is just picking up one more language.

    I bought a hard copy of the book, but it is also online for free on their website. He mainly uses an iPad, so I installed a free SSH client for iPad so he can ssh into an account I created on my web server and run Python. My web server had an old version of Python, so I installed a local copy of the latest Python and redid the PATH for the account to hit the local python binary first.

    I'm still mulling how he can edit programs. I used nano (and vi) when I first was showing him, but might download scp for iPad and an editor for iPad, so he can scp the programs. I want to make it as easy as possible, and he can learn harder stuff later.

    Aside from the book needing Python 3, which just made me have to do a little work, so far so good with the book.

  136. UCode by Anonymous Coward · · Score: 0

    If he lives near Los Angeles, UCode (www.ucode.com) teaches kids how to program through worksheets and exercises. Sounds ideally suited for him. The Ruby programming language is used. Ruby is an excellent choice for an 11 year old, easy to get started and serious enough to do amazing production applications (particularly for the web). There are some great tutorials online including tools to try ruby code (http://tryruby.org and http://19pad.charlie.bz/). Code School has a free short course using tryruby: http://www.codeschool.com/courses/try-ruby.

  137. C for Dummies by Dan Gookin by TheSpoom · · Score: 1

    C for Dummies by Dan Gookin is my favorite C book, but it might be a bit beyond the reach of an 11-year-old, what with its two volumes comprising ~1200 pages.

    --
    It's better to vote for what you want and not get it than to vote for what you don't want and get it.
    - E. Debs
  138. Python by steveha · · Score: 1

    I strongly recommend Python.

    The reason I like Python so much is that it has the least syntactic silliness of any language I've used: Python code often reads like psuedocode, but it actually works.

    To learn C, you need to start by learning what a variable is, and that means learning what the different data types are, and when you use them. In Python, there really aren't variables: you just bind values to names.

    And Python has lots of great libraries, so that he can easily write a non-toy program that does something interesting. In particular, there is the library, which would allow him to write a game.

    And Python is useful for doing real work. It would be a poor choice to write an operating system or a word processing program, but it is useful for all sorts of actual problems in many fields. Particularly in science, Python is becoming a top language, thanks to SciPy.

    Python is also the language used for SAGE, which he might enjoy using to plot graphs.

    P.S. If he loves Python and wants to learn a second language, I would suggest C. Not C++, C.

    steveha

    --
    lf(1): it's like ls(1) but sorts filenames by extension, tersely
  139. Re:Tube classics by Shifty0x88 · · Score: 1

    Sam's Teach Yourself C in 24 Hours This looks to be the entire book online!

    There is also Sam's Teach Youself Java in 24 Hours, and Sam's Teach Yourself C++ in 24 Hours. If he wants to do web programming there is Sam's Teach Yourself HTML in 24 Hours, however it doesn't go into Javascript so you would need to get another book as well.

    I would say the big languages are C, C++, and Java for main-stream languages. If you want to do Windows programming, there is C# and I guess Visual Basic(C# is better in my opinion but Visual Basic is taught to IT professionals who aren't programmers so it may be easier to learn)

    I love the Sam's series, especially when I was in High School. Just enough information to make something useful, yet you don't need to be an expert to read it. Definitely a great first book into a programming language, it just highlights the basics and possible differences if you know another language.

  140. Standford CS101 by Anonymous Coward · · Score: 0

    Give your little prodigy a shot at the big leagues with this free online stanford intro course: HERE. If he already has that nailed...then he is well on his way to learning a language. For an 11 year old, something that produces a GUI or APP may be more interesting than ASCII art:)

  141. Javascript in 24 hours by hesaigo999ca · · Score: 1

    Do it with something that u need nothing to run, just a web page and some javascript.
    a 24 hour keeps it simple with simple examples and makes life easier on everyone....nothing to install, and nothing to configure.
    he sees the results almost right away, and can actually go further into ajax, & jquery etc....

    my top pick for learning stuff and still feeling like it aint rocket science.

  142. Re:LOGO / Turtle Graphics (Python has it) by yorkrj · · Score: 1

    Python has a built in LOGO library so I'll add that as another reason Python is a great language to start off with. It's easy to get started with yet powerful enough to write useful programs. I started as a wee lad with Apple's BASIC which is pretty much useless these days but if Python was around back then, I'm sure it would have been on my radar.

  143. Microcontrollers... by Anonymous Coward · · Score: 0

    I second the Micro-controller idea - I learned z80 assembly language at age 9 using one and it really did help me understand how digital computers work at a very low level. Many programmers today know how to write code, but they really don't understand what is going on underneath - thus the vast amount of poor software that litters the software landscape.

    This experience did not, however, teach me how to write good English.

  144. All of Dr. Suse books by Anonymous Coward · · Score: 0

    The kids is out of his/her mind. Talk common sense and let childhood be childhood.

  145. Create a goal for him first... by Tasha26 · · Score: 2

    By that I mean, don't make him start from scratch. Create the compiling environment. GUIs are fun to fiddle with so if you think C++ or Java are good languages (in the event that you don't want him to learn Visual Basic and then he gets stuck with it till the age of 18 because his brain has developed an affinity for VB like kids do with pets), then give him a skeleton source code which compiles to an empty window or GUI. Then let him have fun adding code that will shape the GUI into a calculator or depending on his drive, maybe he'll want to parse expressions lol... For kids, I think GUIs are fun so he can code: A paint program; A simple car game. The goal is more important (i think). Then pick a language. And when he's faced with a problem, he'll google it or find a Youtube tutorial.

  146. UCode by smueller · · Score: 1

    If he lives near Los Angeles, UCode (www.ucode.com) teaches kids how to program through worksheets and exercises. Sounds ideally suited for him. The Ruby programming language is used. Ruby is an excellent choice for an 11 year old, easy to get started and serious enough to do amazing production applications (particularly for the web). There are some great tutorials online including tools to try ruby code (tryruby.org and 19pad.charlie.bz). Code School has a free short course using tryruby: http://www.codeschool.com/courses/try-ruby.

  147. Re:Tube classics by Anonymous Coward · · Score: 0

    All far too dense for an 11 year old, and all pretty much require more background knowledge than an 11 year old is likely to have.

    Baloney! What background is required to program? I assume this kid isn't going to start out writing a new compiler or numerical analysis package.

    When I was in 3rd grade (about 9 years old). My dad took a course in Basic at the local community college and showed me a flow chart he wrote. I was fascinated and discovered a bug in his flow chart. Then, I snagged his text book. I taught myself to program Basic from that book. I didn't have access to a computer. So, I wrote out programs on a legal pad. These programs didn't do anything fancy. I simulated dice rolls with a random number generator. Another converted a number to a Roman numeral string. One weekend Dad took me to the college and allowed me to type in some of my programs on a teletype.

    I'm bright, but I'm not a genius. I enjoyed math and I had an unusually high curiosity. The arithmetic I learned in elementary school was enough to get me started. Perhaps, it would have been a little easier to grasp arrays if I had already been exposed to linear algebra. But, it only took me a few days to understand them.

  148. Re:Tube classics by shiftless · · Score: 1

    Android? LOL

    I also learned BASIC from keying in a couple example programs when I was 8...and I would say that if I'd had to start with Android programming, I'd have probably shot myself at 10.

  149. You're thinking all wrong wrong... by Joce640k · · Score: 0

    Get him an Arduino kit with lots of LEDs and servo motors and stuff.

    The hardest part of learning to program is knowing what program you want to write. "Flash an LED" makes this a no-brainer.

    He'll learn programming and plus a lot more besides...

    --
    No sig today...
  150. Java? by gstoddart · · Score: 1

    I know a lot of people don't like Java, but for teaching a language to an 11 year old, it abstracts out a lot of the crap and it's easy to get a development environment going.

    So, maybe for an 11 year old "Teach Yourself Java in 21 Days" or something. If he gets through that then find the boy a new machine and get him whatever he needs.

    Eclipse + Java and your kid is half way to being a rock star. From there, he could probably teach himself most any language out there.

    --
    Lost at C:>. Found at C.
  151. Python, Java, CoffeeScript by steveha · · Score: 1

    it seems now everything has to be JavaScript-based...

    I agree with you about Python; I think that for learning, Python is the best. Not JavaScript.

    But if someone did want to learn to program using just web-based stuff, maybe CoffeeScript would be a good choice; I have heard very positive things about it here on Slashdot.

    http://coffeescript.org/

    steveha

    --
    lf(1): it's like ls(1) but sorts filenames by extension, tersely
  152. Interactive Python + Curriculum = Awesome by daveagp · · Score: 1

    Try http://cscircles.cemc.uwaterloo.ca/ and http://thinkcspy.appspot.com/build/index.html the latter is an interactive version of the famous "thinkpython" book. They both have structured curriculum and interactive exercises starting from ground[0].

  153. Micro Adventures by wikthemighty · · Score: 1

    After spending some time POKE-ing around, the books I had sound like they might have been Micro Adventures

    --
    "There are people who do not love their fellow human being, and I _hate_ people like that!" - Tom Lehrer
    1. Re:Micro Adventures by Alzheimers · · Score: 1

      This, along with the type-in programs in the back of Family Computing Magazine, helped fuel my enthusiasm for programming at an early age.

  154. JavaScript by CowboyRobot · · Score: 1

    I had taken some programming classes when i was younger. First in C and then in Java but it was only by fooling around with JavaScript that I really got the concepts of coding down. With JavaScript all you need is a text editor and a web browser, no compiler. And the feedback you get is so immediate that debugging is much quicker and less frustrating than with other languages. All the instruction is free on the Web, and with HTML5 gaining traction, JavaScript is again a useful language to know.

    --
    every stain tells a story
  155. C=64 Programmers Reference Guide by Omeganon · · Score: 1

    If this were another era.... This book did wonders for me -- http://www.commodore.ca/manuals/c64_programmers_reference/c64-programmers_reference.htm

    --
    Omeganon
  156. HTML5 & Javascript to write games by Anonymous Coward · · Score: 0

    The Essential Guide to HTML5: Using Games to learn HTML5 and JavaScript - look it up on Amazon - is a pretty basic book and it allows the kid to have immediate results from the browser and notepad.

    A friend of mine's 11 year old just started on it - he loves it - 3 chapters in and really enjoying it. The key is each chapter has an entire program / game that they can type it in and see the results - tweak some variables and viola they are "programming".

    This is how I started 25 years ago with the BYTE magazines.

    To those saying the Python book - I had better results from the HTML5 book with my son than the python one (snake wrangling for kids) which had more "boring stuff" in his words.

  157. A few suggestions by subreality · · Score: 1

    I learned C by reading K&R... that method probably isn't for everyone.

    I would suggest looking at languages outside of C. Rather than bogging him down with string indices and static arrays, point him toward something that gives maximum results with the least work - something very high level and interpreted instead of compiled. Ruby is my favorite, but Python is also excellent. Learning C is an important step for any programmer, but I wouldn't make it the first step if he's programming on a modern PC.

    On the other hand, you could get him an Arduino. That means C, but the Arduino community has tons of good newbie-friendly snippets, tutorials, and documentation to get him started.

  158. Qbasic by Example (Que publishing) by Anonymous Coward · · Score: 0

    I know Qbasic is old school... well anyways, that's the book I read at 12 that got me hooked. I'm sure there are better ones out there now-a-days, but I wanted to nostalg a bit :-P.

  159. Re:By Himself & Google by TaoPhoenix · · Score: 4, Interesting

    Interesting approach, but there is also a theme that some learners need a guide so that the 5 stunning ideas they never thought of don't become warps to their understanding.

    You said "don't spend money" - some of the new languages have free mini intro books. We can decide later in Language Wars about Python vs Ruby but for example Why The Lucky Stiff's Poignant Guide To Ruby looks stunning to capture the attention of an 11 year old with humor. That kind of thing is sorely lacking in most texts that feel they have to impress other academics. I have the programming aptitude of a gnat but I'll glance over that just because the sidebars are fun. From what I gather the programming content is well done, and a couple people have praised some of the language design mechanics of Ruby.

    --
    My first Journal Entry ever, in 8 years! http://slashdot.org/journal/365947/aphelion-scifi-fantasy-horror-poetry-webzine
  160. APL by fahrbot-bot · · Score: 1

    Start him off on APL. If he's still interested in programming, have his head examined, then let him do Perl :-)

    --
    It must have been something you assimilated. . . .
  161. Turn in into play time with computer graphics by znigelz · · Score: 1

    I recommend he learn some well established api. He should get straight into it. Something graphical with very intense visual feedback. He should start by just getting the demos to work. They are *really* simple to get setup, and give great insight in to the capabilities of the frameworks. Then as he progresses he will learn other things he can accomplish and add to them. http://code.google.com/more/ http://developers.facebook.com/ http://qt-project.org/ https://developer.apple.com/library/ios

    As a base. he would need javascript (w3schools), or python (Python: Essential Rererence), or C (Programming in C), or C++ (Programming: Principles and Practises Using C++). He does not need to read these books. He just needs to reference them. All the information in them is available online, but having a physical reference is always great to have within reaching distance.

    When I was a kid, I would only read a book if I knew it contained the solution to a problem. I would read the book cover to cover if I had to, but in general, I was always more interested in building rather than reading.

    My only intent was to play video games, and I would do anything to get them to work. I would save every penny just to by another mb of ram. I was constantly changing the motherboards and processors as well. When I was 11, I was writing batch scripts. At that time, I was using 80386 architecture and DOS. I moved to windows to play games like ski-free, and to play around with winsock and tcp. I got into irc for videos and music, which also introduced me the concept of a newsgroup. At this point everything changed. Any problem I had could be solved with ease. Generally, somebody else would always have faced the same problem I had, and they had solutions!

    I got into web development pretty early, but I got bored with it quickly, since at that time, the specification was pretty limited, and I was always more interested in playing video games and sports instead. I'm 29 now, and I have a bachelors in computer science, and a masters in engineering. I do numerical programming with C++ and OpenCL.

    I only got into hardcore programming in university, but my general experience with computing placed me highly with my peers. My university was arguably the best in the country for that particular undergraduate program. Lots of my friends had fathers who were programmers, and taught them a lot at a young age, but none of them progressed faster than I did. I easily caught up to them.

    My point is that you do not need to push him into programming, He may loose interest very quickly. My interest in things has always been very volatile, since there are so many other things to be interested in as well (sports, music, novels, etc). If his passion is genuine, he can catch up easily. The one corollary is that each generation is exponentially more intelligent than the previous generation. My generation was the first to have access to an over abundance of information. Before, there was a deficit of information and a surplus of attention, but now there is a surplus of information, and a deficit of attention. Access to such an infinite pool of information has made me much more ingenuous than my father's generation. Our kids will most likely be exponentially smarter than we are. Of course, previous generations more easily focused on one particular field, which had its merits, as they made incredible discoveries. The argument that there are less things to discover now is bulls$%*. We still understand very little in the scope of things. He does need to become the next teenage billionaire. His passion(s) just need to be nurtured properly. LET HIM PLAY! He has to work for the rest of his life.

  162. Google It by Anonymous Coward · · Score: 0

    Googles own language Go would be a better start than C in my opinion. Go is fast enough for low level stuff, more sane than C and includes everything you need to get simple web apps up and going or send e-mails right out of the box.
    http://golang.org/

  163. Search by Anonymous Coward · · Score: 0

    Show him how to use the search box here on Slashdot

  164. I disagree by Anonymous Coward · · Score: 2, Interesting

    He should read "C++, How to Program"

    Why C++?

    1) It is lower level than Python. Having a solid grasp of these lower-level concepts will make learning any other programming language easier in the future.

    2) The sharp distinctions between pointer variables and regular variables, stack and heap, etc., will (when mastered) give him a solid intuitive grasp of the key organizational structures that DO support all other programming languages, even when the grammar abstracts some of them away. This will make it easier for him to troubleshoot broken code written by people who only have a high level understanding.

    3) C++ is still in use and in-demand in a much wider variety of industries than Python.

    4) He will be forced to deal with cleaning up his own data structures, which will ensure that his code stays clean after he moves to languages that have garbage collection. People who start with garbage-collected languages often forget to release their unmanaged resources in the rare cases that they are used...C++ veterans are much better about this sort of thing.

    5) It is an unwalled garden, allowing him to do all kinds of crazy hacky things. He should get that worked out of his system as early as possible, and also get as much experience dealing with the problems hacky code causes, so that he won't be tempted to write like that (in ANY language) once he does anything serious.

    6) His brain is young and nimble, making him more able to grasp novel, abstract, and difficult concepts. Dumbing things down for him would be a waste of his potential. C++ is harder than other languages, which is precisely what gives an advantage to programmers who have mastered it.

    1. Re:I disagree by Benaiah · · Score: 1

      I think regardless of what language he learns, the important thing is how he learns.
      I found i learned 90% of my programming skills on assignments with deadlines as opposed to tutorials and lectures, which I found more just good reference tools.
      Find a simple set of projects for him and have him progress. For example,
      1) HIgher lower game
      2) Lotto numbers
      3) Calculator
      4) tetris
      5) Threaded web server
      6) search engine

      I think that's the basic order of things I learned. Just also know that there is a whole lot more to programming then just programming. Understanding how computers work, the OSI network model, assembly and low level hardware interfaces with C are all part of a well rounded understanding of CS.

    2. Re:I disagree by Anonymous Coward · · Score: 0

      I disagree with your disagree! :) C++ is a poor choice in comparison with Python for some of the very reasons you list namely:

      • It is lower level than Python

        ... which will bog him down in minutiae at the time when he should be gaining a global understanding of programming. Moreover since that level of control is unlikely to be necessary to him early on it will be all pain for no gain. A lack of reinforcement for effort is poor pedagogy and could result in loss of interest.

      • The sharp distinctions between pointer variables and regular variables

        Much the same considerations apply. Moreover the lack of temptation to engage in all-too-clever pointer arithmetic (personal grudge in regard to some of the legacy code I have to maintain) may just foster a better style.

      • It is an unwalled garden, allowing him to do all kinds of crazy hacky things

        Enough said really.

      • His brain is young and nimble, making him more able to grasp novel, abstract, and difficult concepts

      • Python is so obviously better for grasping "novel, abstract, and difficult concepts," than any low level language, it is laughable that you would raise this point. I guarantee he will be approaching good architecture, design patterns, meta-class programming etc. with Python faster than he could ever hope to with C++. Apart from readability, this is Python's greatest strength.

      On balance Python is among the best teaching languages. My concerns, apart from the point you raise about memory management**, would mainly be that Python "variables" behave differently from most other languages, and that the related mutability/immutability concerns, which play large in Python programming, are similarly not of general application. The problems with C++ as a teaching language are manifold (you've pointed some of them out). Actually I would advocate plain old C over C++ as a teaching language any day.

      As an alternative to Python, however, I would suggest at least considering something like Arduino, not because the language is a model of good pedagogy, but because the real word effects of programming provide an immediate and rewarding feedback.

      **[Arguably, on security grounds we should remove memory management entirely from all programmers apart from the (hopefully) highly security conscious GC designers providing compilers anyway. With great power comes great probability that you will fuck up ... err I mean great responsibility of course].

    3. Re:I disagree by thestuckmud · · Score: 2

      Why C++?

      1) It is lower level than Python. Having a solid grasp of these lower-level concepts will make learning any other programming language easier in the future.

      Honestly, I don't believe learning C helps one to programs in Prolog, Scheme, Haskell, Smalltalk or other non-traditional, but at times very handy, programming languages. If you insist on starting out with low level concepts, buy the kid a copy of Knuth Vol. 1 and work through some example on a MIX simulator!

      2) The sharp distinctions between pointer variables and regular variables, stack and heap, etc., will (when mastered) give him a solid intuitive grasp of the key organizational structures that DO support all other programming languages, even when the grammar abstracts some of them away.

      Pointers and stacks are not required organizational structures for progamming languages. I'm qualified to comment, having worked on the stack-less, continuation passing style back end of the SML/NJ compiler way back when. If you approach programming assuming these as fundamental, you limit your vision of what is possible. The way I see it, teaching a kid to avoid incredibly useful modern features like garbage collection and first class functions just seems cruel.

      3) C++ is still in use and in-demand in a much wider variety of industries than Python.

      A self-motivated 11 year old has plenty of time to learn c++. My high school band teacher offered sage advice when asked about accepting a gig when you don't know the style of music: "Of course you take the gig! You then spend every spare minute learning a set and you show up ready to perform." The same approach worked for me with regard to programming languages. I never lied about my experience, but I have often promised to be ready to perform in a new language, and I have never disappointed. Of course, you don't get there out of complacency, I had read Stroustrop and knew the concepts of C++ long before writing a line of code and accepting my current MFC/COM/C++ job. If our 11 year old is going to be a great programmer, he'll do the equivalent because remaining ignorant will simple not be acceptable for him.

      6) His brain is young and nimble, making him more able to grasp novel, abstract, and difficult concepts. Dumbing things down for him would be a waste of his potential. C++ is harder than other languages, which is precisely what gives an advantage to programmers who have mastered it.

      "Harder than other languages" is an understatement. One apt critic describes C++ thusly: " It's just beastly and horrendously ugly - confuses students like heck (huh? copy constructors? virtual destructors?)"

    4. Re:I disagree by chaosite · · Score: 1

      Bravo, good sir. Bravo.

      I absolutely agree with everything you just said.

  165. Scratch, Storytelling Alice, Looking Glass by awilden · · Score: 2

    I second the comment on Scratch. My son started on it around 7yrs old and still uses it at 11. One thing he liked a lot is that in Scratch you can spend time editing your icons in a paint-like subprogram; this activity uses different parts of the brain than traditional programming, so it let him work longer on the system w/o getting burned out. He also liked the online aspects a lot. You should also look at Storytelling Alice or it's newer incarnation "Looking Glass". These were specifically designed to pull in middle school girls, but there's nothing "girly" about the environments. The basic idea is that you control a stage, add actors and props to it and then animate a "play" by telling the different actors to do things like "tell Jane to walk up to Bob", "tell Jane's left hand to hit Bob's left face", "tell Bob to say 'what was that for' " and so on. Has a lot of the "share" features of scratch too. My son started SA at the same time he started Scratch and he still uses both. They definitely teach different things, though both are drag/drop programming instead of typing free text, but they're also both efficient drag/drop programming as opposed to the VeX system which I always found incredibly painful...

  166. Objects First With Java by Anonymous Coward · · Score: 0

    This worked really well for me. Admittedly, I was at university - But regardless, it was really good.

    http://www.bluej.org/objects-first/

    Either that, or have him learn Python

  167. What did I like when learning to program? by rob_osx · · Score: 1
    I grew up learning BASIC on a C64, then learning assembly, using books and magazines as guides. As a new programmer I enjoyed getting visual feedback of my programs, so my first programs were the simple print "hello world", then moving on to colors, then sprites, and then assembly since BASIC was not fast enough to move sprites around on the screen.

    If I had to do it now, I would recommend javascript for many reasons.

    First, no IDE is required. I would avoid an IDE as long as possible, that limits what box you can work on, whether XCode, .NET, etc.... With Javascript you can work on either Ubuntu or the Mac, and see results on either via the browser.

    Second, an interpreted language doesn't need to be compiled (which is better than C/C++ or other complied languages) so you can code and run your program. Javascript just requires refreshing the page (though you may have to help him understand caching).

    Third, there are many good javascript examples out there. I would recommend viewing Crockford's videos.

    Fourth, if you setup an external server, he can show his friends what he has made, which has a definite coolness factor. "Hey, look at this program I made to do our physics assignment." "Look at this game I made"

    Why javascript over python? Personal preference, plus I think there more answers to problems already documented on the web for javascript, though you can ask python group a question and get an answer quickly.

  168. Content over style by Anonymous Coward · · Score: 0

    At 13, I picked up a "How to learn c++ in 21 days" book at a half-price bookshop. I got as far as a the chapter in pointers (ch 18 i believe) before even reading a word of the description text. I just looked at the code and occasionally the comments. It is just like picked up another human language for a kid that young, and you should treat it the same. Find a book with good codehuman readable translations, or code that is human readable as is.

    This is why I would not suggest python, as it has syntactical format that feels close to a human language, but does not have a word to word translation like a c++ or java program do.

  169. He Doesn't Need a Book by Patman64 · · Score: 2

    What he needs is a project. It is far, far easier to learn a language by practice and discovery with some supplementary materials than by reading some book. Books aren't interesting. Writing plugins for a server running one of your favourite games is.

    So find something that interests him and is extensible and start there. Language is irrelevant. It's just a matter of learning enough syntax to get started and then learning new things as you need them.

    (My bias: I taught myself my first language, C++, by fixing bugs in a piece of open source game server software, a year after completely failing to learn it from C++ For Dummies.)

  170. A sandbox to play with... by leonardop · · Score: 1

    I commend you for your genuine interest to aid your son now that he's starting to explore the exciting, wild, large, fuzzy, beautiful world of things we usually refer to as "programming".

    There are some excellent recommendations for books already posted, but I just wanted to point out a video that might help you get a different perspective on what might be worth pursuing when teaching these things to young people: ART && CODE Symposium: Hackety Hack

    It's a talk made by someone that has already been mentioned in other posts, a legendary figure that goes by the name of Why the Lucky Stiff (creator of the Poignant Guide to Ruby), and let me tell you, if you have already read something about him and felt curious about why he did the things he did and in the way he did them, seeing him on video really helps you see where he comes from and what his motivations are.

    Make sure to see the bits of the talk where he presents a video made by a kid where he explains in his own words the experience he (the kid) had learning programming from books, and then trying to learn it from a sandbox like Hackity Hack (a creation of Why, but it really could be any other similar tool).

    Best of luck to you and your son!

  171. Assembly by Anonymous Coward · · Score: 0

    At 11, it's time to become a man.

    Learning assembly language with hexadecimal mnemonics is the best option, and not the macro assembler language which is for sissies.

    It's important to start by understanding how basic things work, and then look at a higher level.
    You cannot build cathedrals without knowing how to build strong foundations, and then walls.
    A nice benefit is that he won't learn bad habits, since there is nothing to unlearn, contrary to self-teaching a high level language.

    Also, it'll help grow balls !

  172. Best book? by Anonymous Coward · · Score: 0

    Focal reference and a PDP-8 assembly book. Worked for me!!

  173. Code - Charles Petzold by Anonymous Coward · · Score: 0

    I'd have him read Code by Charles Petzold before you give him anything on actually coding. I think that book will be both accessible and set him up with the fundamental concepts necessary to tackle learning a programming language. After that I'd suggest something on obejct-oriented design, though many of the books that teach OOD through a language like Java, Python or Ruby would probably be okay at that point.

    http://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319/ref=sr_1_1?ie=UTF8&qid=1334265103&sr=8-1

    1. Re:Code - Charles Petzold by narcc · · Score: 1

      Code isn't exactly the best choice for an 11-year-old. The material starts off a bit too easy, and gets significantly more difficult in the later half of the book.

      Also, reading isn't playing -- which is what the child will be doing as he's learning to program.

  174. forums by BattleApple · · Score: 1

    After I got the basics down, I actually learned a lot by going to programming forums and trying to solve other people's problems. Then you can check your results against the responses from more experienced programmers. It exposes you to a lot of different uses for programming, and can give you ideas for writing your own programs. I learned enough that way to get a programming position where I work.

      www.devshed.com , www.tek-tips.com etc.

  175. Re:Stanley Lipmman, Qt, assembly, DX11, and engine by mlosh · · Score: 1

    Please mod this "Funny". Really, for an 11-year old? Maybe if he or she has a 200 IQ. Otherwise he or she will need at least a few years to work up to this stuff, user 0111 1110. Sheesh.

    I agree Python is pretty good although I don't have much direct experience with it. Javascript in the browser also leads to some quick, rewarding experiments.

    For an 11-year old I know, who found an old science experiment book with BASIC examples, I installed Bytewater Basic. It works a lot like the old GW-Basic. Available as C source code and runs on Windows and Linux. Debian (and others?) has a pre-built binary package in its repository.

  176. C/C++ self-taught. by Anonymous Coward · · Score: 0

    I started coding when I was 10. Began with QuickBasic (yeah, that DOS thing) which sucked. Somehow, i ended up doing stuff in AS2, later AS3 and then came to C when I was like 13 or 14. I still use C/C++ today and I really like it. The programming books I own are great when its windy and I don't want that my notes fly around. But thats it about them - Give him google, maybe recommend some good pages and give him some keywords to search for (like "How to", "tutorial", ...). He'll find his way easily through the internet and will learn a lot of stuff on his way. What i hated back then and hate still today about books is that IMO the examples are plain boring. I don't want to code some currency calculator - Who needs that? No one. Its not that the applications must make sense, but it helped me a lot because after my work was done I had something I could be proud of and what would help me. For example, I coded an MSN bot and implemented an IRC client thing in that application, so I could talk with random people over my xbox360. Sounds weird? Well believe it or not, but it somehow worked. It was challenging, fun and useful for me at that time. I think it is important to have a goal. Writing yet another calculator isn't one. Is he enjoying computer games? Just an idea, but why not write a hack/cheat for some game? Singleplayer of course. But that would be challenging, fun and entertaining in the end. Plus, this would teach about pointer arithmetic.

  177. Better question is what to DO with the language by sirrunsalot · · Score: 1

    When I want to get something done, I pick up a language and make it happen. When I want to learn a language for no particular reason, I pick up a tutorial, poke around, and forget about it within a few days. My first language was POV-Ray. Computer graphics. Raytracing. Kinda outdated now, but at the time it was something interesting to focus my energy on. I like the idea of one of those BASIC Stamps or Lego MindStorms. I think the best approach it to choose a goal rather than a language.

  178. BASIC again by narcc · · Score: 1

    I'll add to the others that BASIC is a great beginners language -- especially the old unstructured kind with (only) an interactive mode.

    Python, not so much... It has an interactive mode, but that's about all it has going for it pedagogically.

    There are some fantastic beginner programming books from the 1980's that expect the beginner to know absolutely nothing.

    Really, snag a working C-64 on eBay (it'll add quite a bit of novelty and fun) and a few Commodore 64 programming books.

    There's a lot of magic left in those old micros.

  179. Re:LOGO / Turtle Graphics (Python has it) by N0Man74 · · Score: 1

    Sure. I actually had Python supported Turtle in mind when I suggested LOGO/Turtle. I imagine it would be pretty easy to step into Python after being introduced to Turtle through Python. Though, I didn't actually complete my thought process in my post.

    The reason I mention it (rather than just straight Python) is that it is a lot easier to be visual, and I think that visual representations of patterns of code really does help the learning process. For example, nested loops are a lot easier to create a mental model for when you see it drawing a box or triangle. A 2-dimensional array becomes much easier to understand after you progress through Hunt the Wumpus or Battleship type games. What I remember about LOGO was that it was much easier to make certain types of shapes than in BASIC, and it seemed more analogous to a pen, which was more familiar.

    But as I said before, the most important part is really just developing the patterns of the types of thinking that are used. There will be a new cool trendy language by the time he's an adult anyway. ;-)

  180. lisp by Gunrunner00 · · Score: 2, Interesting

    The Land of Lisp has been a pretty good book thus far for learing lisp http://landoflisp.com/

  181. Pulling apart code by phorm · · Score: 1

    When I was younger, I learned a lot from pulling apart code and examples.
    Whatever language and/or book you choose, I'd recommend something with a lot of example programs, etc.

    It's one thing to see a big list of code and description of variables. Often you'll try and put them together and *damn* it doesn't work, which often leads to frustration and/or giving up.

    If you have a progressive of working code (here's hello world, here's how to add numbers, here's how to get input from the user and add the numbers, etc) then pulling it apart becomes quite fun as you get to see the full structure. If you make a change and it blows something up... well then you know where the issue is. It's a bit harder when you're trying to build something from scratch and don't know where to start searching for the bug.

  182. My Suggestion: QBasic console + Help file by Keith111 · · Score: 1

    Sometimes the best guide is no guide. I started programming with the QBasic help file... it made me approach programming significantly different than everyone else at college which is probably why I was always the one to come up with the creative ways to solve or bypass problems. I'd start with a more simple language though, its most important to just get used to the idea that you write code that a computer reads top down (or in other directions) so that you can start to understand that you need to keep the current state in mind, etc.

  183. Begin and the beginning.. by Anonymous Coward · · Score: 0

    I started with the CoCo1 basic books and about 12 months later went on to TRS-80 Assembly language programming and the EDTASM+ book. I started when I was 8..
    If the kid is going to program they will do it regardless of what books they have, they either have the ability or they don't.

    I would keep them away from java and C#, not so much because they are bad languages but because they don't make you accountable for subtle programming issues.

    Start with a non object orientated basic variant and move on from there to C, C++ and then onto Java and C#..

    This way they will appreciate the usefullness of each one as they go.

    Try to avoid delusions of stardome as a game developer.. If I have to work with another grad who thinks they are a rockstar game developer I will, engage in acts that are not inline with my employers corporate culture..

  184. The language doesn't really matter ... by Anonymous Coward · · Score: 0

    Getting the kids exposed to the basic programming constructs in a somewhat friendly environment where they can get quick results is the goal. The language doesn't matter as long as kids get feedback and don't have to suffer through too much debugging. Some debugging is crucial though to make them think problems through and see where they went wrong. It should never be just about the language and syntax so pick a language where the fundamental programming constructs (loops, if-thens, etc) are easy to learn and use. When they get comfortable, switch it up and move to a new language. If they find one that clicks with them, go for the deep dive and see what they can do with it.

    This made me think back to my days with a TRS-80 Model III. I cut my teeth on BASIC and hand-jammed hex code of precompiled programs that were in the Radio Shack magazine which led me to learn Assembly. (Imagine a vendor nowadays actually telling you how to hack their machine) I kept interested thanks to my parents not freaking out when the computer did wierd things and a teacher who kept giving me new problems to solve.

  185. MIT OpenCourseWare by bug · · Score: 1

    I highly recommend the MIT OpenCourseWare course on Python. It is written in a very simple and welcoming manner, and includes a free textbook, labs, lecture materials, and homework assignments. Python is probably the best route regardless, as it makes both an excellent teaching language, and a very useful language to use outside the classroom in the real world. http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-189-a-gentle-introduction-to-programming-using-python-january-iap-2011/ There are also a variety of Karel the Robot style introductory systems, including at least one ported over from the original Pascal dialect to Python. Karel the robot provides a limited subset of a typical programming language, and labs that allow a student to practice ordering a robot around an obstacle course. The pascal-based version was my first intro to programming, and it makes a great way to learn still to this day.

  186. Harwani's recent PyQT intro to Python programming by shmorhay · · Score: 1

    B. M. Harwani just came out with a very nice introductory Python programming book that covers Python basics in the first part, and then focuses on using PyQT to build GUI applications that link to a MySQL database. This combination of Python, PyQT, and MySQL works well on Windows, Mac, and Linux. The full title is "Introduction to Python Programming and Developing GUI Applications with PyQT" by B.M. Harwani, Dec. 2011, ISBN-13: 9781435460973, 300 pages, $30 -- http://www.barnesandnoble.com/w/introduction-to-python-programming-and-developing-gui-applications-with-pyqt-b-m-harwani/1103826486

  187. Head First Series by requeth · · Score: 0

    I'm a big fan of the Head First series and I recently used the Head First C# book to learn. It's great but requires a Windows OS/VM to use so maybe not the best for you. The upside is it's centered around building games, which would greatly interest a kid. I've been eyeing the Head First Java book for a while now, and for your purpose I just pulled up a comment from the headfirst site: "My thirteen year old son who is new to programming started writing Java programs after reading this book.He had so much fun writing a battleship game after reading this book!"

  188. cobal by Anonymous Coward · · Score: 0

    a book on cobal?

  189. Re:Tube classics by geekoid · · Score: 1

    Just because you don't have the brain to understand something, doesn't mean the 11 year old doesn't.

    There isn't anything wrong with android.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  190. Check out the free Stanford class w/video by icknay · · Score: 1

    The free Stanford CS101 intro-to-computers class is going to start April 23rd, so that's worth a shot: http://cs101-class.org/ It introduces programming with code and everything, but it's easier than a full programming course. It's a way to get started, warming up to a full programming course later on. Some people can read a book and poke around themselves. However for many having videos/lecture notes/assignments all geared together is an easier way to get started. Disclaimer: I'm teaching this class!

  191. How To Talk To Girls by Zildy · · Score: 1

    just sayin'...

    --
    Karma: Excer..ex...excellahhh...realll good (mostly affected by drinking not done in moderation)
  192. Here you go by geekoid · · Score: 1

    Start him at 8 AM.
    Have him be in a meeting about what he is going to day, be sure someone tangets into personal story for 40 minutes.
    Take him to starbucks and have him hang around there for 30 minutes.
    Bring him back to his desk and have him load a compiler.
    Have him wade through a series of emails that look like they might relevent, but 80% aren't.

    Have him write a few lines of code.
    Have another programmer come and talk about the cool ST blue ray they got.
    Spend 30 minutes talking about lunch.
    Go to lunch for 90 minutes.
    Have a Nerf fight.
    Listen to a coworker bitch about how much work they can't get done.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  193. The answer by Anonymous Coward · · Score: 0

    A cheap, paperback book that is intended for a language that said 11 year old has ready access too. And if HE likes that book, get him another one. Lather, rinse, repeat.

  194. The Little Schemer by Anonymous Coward · · Score: 0

    That's what he should read.

  195. he don't need no stinking book by Khashishi · · Score: 1

    Books are boring. I didn't learn to program from a book. I started from some sample code and just experimented with changing a thing here or there until I more or less got the basic idea. I remember hacking up nibbles.bas by changing a number here or there or a line here or there and seeing what happened. Most of the time it didn't work, but sometimes I got something awesome to happen.

  196. Learn You A Haskell by Vahokif · · Score: 1

    http://learnyouahaskell.com/ Haskell is really good for getting you to think about computation in higher level terms; where does this data go, how am I transforming it, etc. Also, functional languages are much easier to learn if you aren't encumbered with an imperative mindset, but you can easily continue on to imperative from functional. It's also the most beautiful language I know and your son will be a wizard.

  197. Don't! by Anonymous Coward · · Score: 0

    Don't force him into any particular single language! That is the wrong first choice. You should instead
    introduce him to a selection of scripting languages currently in use, because of the short amount of time it takes to produce
    results when compared to compiled languages, they are all better tools for learning.

    Then let him choose whatever he finds easiest. After he becomes capable in any particular language,
    show him interesting stuff in others.

    They will all be different when he gets out of high school anyway, so I would suggest also exposing him to
    some basic algorithms as time progresses. They will be more important in the long run.

  198. Self Taught by Anonymous Coward · · Score: 0

    Great website for everyone in the family.Free online courses from major colleges like Harvard, MIT, lots of programming courses and all free.
    http://www.openculture.com/freeonlinecourses

  199. Perl by Anonymous Coward · · Score: 0

    I'm 15, I've been learning to program since I was 10 or so. I started in VB.net, and even though I kind of regret that now (ew, .NET) it was still a learning experience.
    I've now moved on to Perl, and I absolutely love it. I'm teaching myself - I started with help from the great #perl channel on Freenode as well as my local LUG channel, and went from there. I'm still learning, and the best resource if you need to know something is definitely cpan.org.

  200. Let him explore? by Anonymous Coward · · Score: 0

    Like many of us, I'm another self-taught programmer, started getting into it at around 10 years old with QBASIC and then graduated to C. If my parents had tried to guide my learning I probably would've hated it. I had my own motivations for wanting to learn how to program (making video games!!) but it was something I did on my own. My parents would've probably wanted me to write programs to help me with my homework or something equally boring and I would've quit right then. Maybe I didn't pick the best technologies or the best approaches, but I sure learned a lot in the process. I'd say let him explore and pick the language / framework / toolset that excites him and then support that decision vs. "Oh you want to program? Well let me show you the -right way- to program and the -right tools- to do it. You like PHP? No, no, no, PHP is dead and you should just start with Ruby. No, don't read that book, that guy doesn't know what he's talking about, read this."

    I guess what I'm saying is don't be a dick about it and maybe he won't give up and play sports instead.

  201. Consider the Arduino by jschmerge · · Score: 1
    Rather than buying a book on programming for your son, you might want to start him with something real-world that he can make tangible changes with. At stores like Radio Shack and MicroCenter, they sell electronics kits featuring an Arduino microcontroller board. These things are *seriously* fun to play with because its so simple to write code for them. The language you program them in is actually C/C++, but the libraries provided make the C++ look more like javascript. There is a rather large community surrounding the platform, and a whole bunch of 3rd party add-on kits for making them do nifty things.

    I think the most important thing at your son's age is for him to be able to write a small fragment of code & see its effect. Something as basic and accessible as an Arduino is perfect for this type of experimentation. To link you to a few resources, the main arduino site is http://arduino.cc./ You can find examples of some of the cool add-ons at http://sparkfun.com/

    You might even have some fun with one of these things yourself!

  202. What's wrong with BASIC? by Anonymous Coward · · Score: 0

    I might sound like an old fool here, but look at how many languages have come and gone in 20 years.
    The "cool" kids say Python and Ruby now
    The older folks who used to be the "cool" kids say Perl, C++ and Java
    The still older folks who used to be the "cool" kids say Lisp and Ada

    All languages become passe, and most all the languages I mentioned are good languages to learn.... when you're a kid it's the concepts you're trying to teach, not making you good at coding.

    So why not BASIC? It doesn't matter.

  203. Basic by Anonymous Coward · · Score: 0

    Start on BASIC of course

  204. Texas Instruments by Anonymous Coward · · Score: 0

    Ti- Basic users manual.

    A Ti-99/4a off of eBay.

    It's how I started out in 1982. It gives you the background and foundation for programming. Sure, it is not applicable today. But the Ti and the commodore certainly inspired and started many a gen x-er down the programming path.

  205. Javascript by holophrastic · · Score: 1

    because it's basically direct-to-graphics output. It's closer to logo than to C, as it's little more than DOM manipulation and you get to see the results directly.

    I'd say perl, because it's my favourite, but there are too many advanced structure concepts and hidden context sensitivities that don't make sense until you've struggled without them.

    my first was logo, followed by turing, followed by A.I. bugs. Actually, the old 2D A.I. Bugs is also a pretty great first one. Program an insect to look for other insects and fire missles. basically the software-only version of battle bots. might be good, I don't know. but it's very simplistic with direct visual output again.

    for the love of code, don't ever go to lisp.

  206. javascript by houbou · · Score: 1

    I am surprised at the question. just let him learn Javascript. cheap, tons of online tutorials, all your basic programming concepts are covered in the language.

  207. Start here, follow each link, sometime by Anonymous Coward · · Score: 0

    http://programming-motherfucker.com/become.html

  208. Pascal is good by Anonymous Coward · · Score: 0

    Very few people used Pascal in the real world, but because Pascal was so rigid in style, the thinking that resulted would work with any language in any era of programming. That's exactly the approach that should be used in learning programming...

    Pascal is not the correct choice for today...

    Why not? Rigid? Yes, and that's exactly whats needed: understand and define your variables via types (learn how NetPay has a binary representation, how arrays work, how logical sets can be used, ..., and learn logical (not goto) flow of control/programming structure. Yeah, you will want to take off the training wheels later, but "rigid style" such as strong variable typing and type checking save much frustration when learning. The logic processes learned will make it easy to transition to other languages and grok why, in C, A[i] is identical to i[A]. You learn that compilers don't work by FM ("fucking magic") and you don't write things that just kinda "look like" what you want to do. At least that was my experience going from a no SC whatsoever background to learning programming for scientific computing. People I know who started with FORTRAN never got past the "it just does what it sorta looks-like stage.")

  209. Commodore 64 by Anonymous Coward · · Score: 0

    Its called a commodore 64. Its the kind of book that plugs in and hooks up to your tv. Lots of fun.

  210. Donald Knuth: The Art of Computer Programming by Anonymous Coward · · Score: 0

    Vols 1-4 should be enough material for an 11-year old.

  211. Re:Tube classics by Smallpond · · Score: 1

    This looks to be the entire book online!

    Wow. Teach the kid to pirate, too!

  212. Make him start with C by Anonymous Coward · · Score: 0

    I would recommend that you get him one of those Deitel books and let him start with C, python lacks structure, it is better for him to go crazy because of fatal errors rather than runtime errors, it is better if he writes a long code to simulate a hammer rahter than ponder why import.hammer did not do what he visualized to do. While he is learning C make him learn about API's and OS'es, then he can comfortably start using higher level languages and scripting languages, because he will be aware of the pitfalls.

  213. Python by Rtarara · · Score: 1

    I would say go with Python. I read a lot of research literature on the subject and it really is a GREAT first language. Pygame ( http://www.pygame.org/ ), is a great resource for creating games in python which a wonderful way to learn. There are free ebooks on that site. The Finch robot from CMU is very cool also http://www.finchrobot.com/ - AND it works with python. It can move around the house and do things, which is great for keeping a kid interested.

  214. ROR - just to get started... by Anonymous Coward · · Score: 0

    this site makes it easy for kids...
    http://railsforzombies.org/

  215. GOTOs by hamster_nz · · Score: 1

    I like GOTOs... and so does this this guy, and this guy and the book on writing Linux devices drivers

    Can you take your dogma out back and shoot it? 8-)

    1. Re:GOTOs by Anonymous Coward · · Score: 0

      I like GOTOs... and so does this this guy.

      Who starts his piece off with "Although the use of goto is almost always bad programming practice ..."[emphasis added] And then goes on to show the exceptional circumstances when it is "some might even argue" it's the "best choice."

      Yup a glowing endorsement!

    2. Re:GOTOs by jittles · · Score: 1

      So you found three sources that recommend the goto in one specific instance? And the goto is only needed in one of those three places, the kernel driver. And even then they say that the goto can get overly complicated and hard to maintain quickly.

  216. Playboy by Osgeld · · Score: 2

    save him now

  217. He needs... by n6kuy · · Score: 1

    ... an Altair 8800 and an Intel 8080A data sheet. Make him learn Hex and how to flip switches. Keep some extra switches on hand for when the "Deposit Next" switch wears out.

    --
    If you disagree with me on social issues, then it's pretty clear that you are a narrow-minded bigot.
  218. Avoid the books at first by Anonymous Coward · · Score: 0

    Grab a graphing calculator and some print-outs of code for a simple game and have at it. Punch the code in and figure out what it does as you go.. Four languages and ten years later, I look back on that as more influential than 90% of my high-school classes. And programming isn't even my primary job function... Once you have some instinct for programming you can read dry mathematical books about set theory and programming theory..

  219. Re:Python -v- Compiled and Strongly Typed by Anonymous Coward · · Score: 1

    As one who has been programming for 48 years most of the Language debate is nonsense.

    To program you just have to be able to instruct the computer to do what you want ... Assembly, Compiled+Linked, Interpretrd and/or Managed are all ways of doing that, functional || procedural || object are paradigms for conceptualizing program design. All have a place. If you want a portable, maintainable program written at fast speed do not write it in XXX assembly code. Perl|Python|javaScript are a good place to start, C/C++ is a must, Java, while a huge design mistake, if very popular.

    Most of you are just so stupid that you get into tribalized programming as well as tribalized politics.

    MFG, omb

  220. 2 mutually supporting books by jamej · · Score: 1

    Tom Sawyer & a schema book. Schema is pleasant and really gets you to master recursion. Tom Sawyer will him remember what boys do besides learning computer programming. Please remember structure is good for beginners. good luck, jim

  221. Mod parent up by Anonymous Coward · · Score: 0

    funny with more than a bit of the truth

  222. processing by jdx · · Score: 1

    Processing is really great for people who are starting out with programming as it is really good for visual stuff. Source: 4th year computer engineering student with no programming experience before 1st year. (Do most of my coding in Python at the moment but prefer Ruby overall). My university teaches it as out CS101 language, having recently replaced C++. By Comparison to our CS102 course (still taught in C++) we actually wrote much more 'advanced' programs (PAC man level editor/Fire simulation engine compared to writing a linked list class/card deck class in C++) that were more rewarding in terms of feedback. Main advantages I can see is that it teaches a code style that is similar to java or C++ (I guess still the two most commonly used languages) while allowing for creation of drawings, animations and games from the get go. This is probably going to be more interesting to an 11 year old than say generating the prime numbers up to 1000 or other common 'first program' tutorials. I would give secondary preferences to Ruby and third to Python - both are great to program in but Ruby might have a slight edge for first timers.

  223. processing by Anonymous Coward · · Score: 0

    I'd recommend processing. It's very java like, but focused on visualizations with lots of fun examples for kids.

  224. scratch or gamestar mechanic by Anonymous Coward · · Score: 0

    Both environments teach programming by making it fun to learn programming in a game making environment. Once he has mastered concepts of programming he can pick a language by himself.

    http://scratch.mit.edu/

    http://gamestarmechanic.com/

  225. There is no future in C# by Anonymous Coward · · Score: 0

    C# is a dying language that already has too many MCS looking for work.

  226. whiteboard by trudelle · · Score: 1

    He doesn't need a book, he needs a big whiteboard. Huge.

  227. The key thing is the dev environment by Anonymous Coward · · Score: 0

    The old 8-bit computers (Commodore 64, Atari 800, BBC micro, etc) were awesome tools for learning programming, because you turned them on and you booted directly into a BASIC programming command line.

    There was no other stuff you needed to know to get started. Just turn it on and type.

    Setting up the environment so that kids can get that instant feedback loop, that when they type then the computer does something, that is the key thing that hooks them on programming. They learn that the computer will do what they tell it to do, and there's nothing between them and the machine.

    For this reason, I think starting kids with HTML and CSS is the best way to go. Because you just need a text editor and a browser. Standard equipment on every computer (though it's still way harder to set it up than turning on an 8-bit was...go, go Raspberry Pi!!!).

    Plus, it's the lingua franca of the web, which is the heart and soul of everything worthwhile in the present and future of computing. And everyone knows about and loves web pages, it's so easy for the kids to relate to it.

    And then, once they know some basic markup and stylesheet stuff, it is very, very, very, very easy to start layering in some "real" programming with Javascript. And from there, go to Python or PHP if you want.

    Simple steps:

    1. HTML - make a page
    2. HTML+CSS - make it look the way you want
    3. HTML+CSS+Javascript - add some neat DOM-related tricks
    4. Make a couple pages the same way
    5. PHP/Python/Perl->HTML+CSS+Javascript - show how you can use the server to split up the pages into pieces so you don't have to repeat yourself, and you can control inputs from the user like forms
    6. Introduce databases if you want...

    Not only can they learn programming, but you gradually teach them the whole web stack. Since everyone knows and loves the web, this is highly relatable to kids, they want to get it.

    --Julian

  228. At the age 11 what programming language is good by Anonymous Coward · · Score: 0

    One has to learn to crawl, walk and run. Analogously, while most suggestions are based on personal and good matured people, every one thinks that the 11 old will be their mirror image. What ever programming language one wants to learn is secondary. What is to be learned first is the problem solving steps - simple algorithms, bench testing them with some data and to understand and use simple data structures. Then move on to a a procedural language that is simple yet allow most of the problem solving skills to be translated into a well developed procedural programs. At the age of 11, one does not understand the type checking, memory management etc. So, allow to learn BASIC with free software loaded into a reasonable computer and then to write programs. The underlying BASIC code will be useful to the child when he wants to learn Object Based Programming in Visual Basic. Next one can introduce the concept of "typing" and how the data is stored in the memory for easy storage and retrieval. So, move to C without worrying about how the efficiencies related to arrays. The key is some one should be there to help the kid in person. The above approach could be provided by the Dad. Then move on to a true Object Oriented language like C++ and show that the procedural part is almost in C. The boy can then learn Java or whatever he finds interesting to suit his need. No one has to say why learn three different languages instead of just one? The child has to mature gradually and begin to understand the underlying problem solving capabilities of each language and realise that there is no perfect programming language suited to solve problems in every domain. So allow his thinking to improved and he can later decide to learn any language. MIT's approach is based on "the superior intelligence of Undergrads". But for a 11 year old fun is the key to motivate him to learn.

  229. Fun Science with your Computer by Sedge · · Score: 1

    Fun Science with your Computer by Christophe Cornu.

    This book explains how to solve interesting (and progressively more complex) problems, using Java to work through the examples, building up from basic principles in Chapter 1 to implementing a chess program by the end of the book. It's not quite as polished as a professionally-edited book (you can tell his native tongue is French, although he writes in very good English), but it's a better self-study aid than any book I've seen from a mainstream publisher.

    (Full disclosure: I used to work with Christophe at a previous job).

  230. Small Basic by Anonymous Coward · · Score: 0

    Small Basic is a great option for kids to learn programming. http://smallbasic.com/ .. The tutorial can be downloaded from http://download.microsoft.com/download/9/0/6/90616372-C4BF-4628-BC82-BD709635220D/Introducing%20Small%20Basic.pdf

  231. INTERCAL by Anonymous Coward · · Score: 0

    INTERCAL, bitches! Your youngster will either kick ass or bail out. Either way they'll be happier.

  232. The Byte Brothers! by jdpipe · · Score: 1

    This did it for me... a while ago: http://www.amazon.com/dp/0553244183

  233. C Programming in Easy Steps (In Easy Steps Series) by Anonymous Coward · · Score: 0

    http://www.amazon.com/Programming-Easy-Steps-Mike-McGrath/dp/1840783230

    I Believe there is an updated version, but this is the one I read (roughly 2004-2005ish)
    Feel free to call me a bastard for suggesting c as a first language or even more so for recommending this book.

    But In my defense, it worked for me. Its kind of like teaching a kid to drive in a 1970's two ton steel death trap with bald tires, shitty brakes, and a sticky accelerator, but If you learn to drive a car like that that there's little question that you can drive damn near anything.

    Once you've gotten a grip on things and have become proficient with c, moving to another language should be little more than grabbing a cheap reference guide that is nothing more than a rough cheat sheet for syntax and language specific features/limits.

    Not to mention they'll appreciate the nicer features of other languages and not bitch and moan just because some otherwise perfectly good language doesn't happen to have function x, y or z, or other form of hand holding and still be able to get things done when those "features" don't exactly work as they should.

  234. Perfect Indentation is NOT Evil by Anonymous Coward · · Score: 0

    If the kid is anything like me he will hate Python for one simple reason: significant white space is evil.

    Annoying for a week or two. After that you learn how to set up your text editor.

    Eg on *vim put this in the rc file:
    au FileType python set expandtab shiftwidth=4
    And before you paste: :set noai ... obviously

    And if you are a *vi* user of any type learn to indent and dedent (in cmd mode) with ^T and ^D ... the number of folks I see using [tab] and [backspace] sheesh!

  235. LOLCODE by TemplePilot · · Score: 1

    Moar Fun LOLCODE!
    on caturday im in yr bed i iz sleepin!!10 visible "z!" kthx kthxbye LOLCODE *nice slashdot eats code tags which translates into a string of messy code, without formatting code looks fugly: bad bad BAD, Plus is yells for caps, moar bads! :p Meh- anyhoo funner langs can be enjoyable too.

    --
    This strange comment at the bottom of the message is illogical.
  236. BlueJ & Java by Anonymous Coward · · Score: 0

    C is a old meat. Start with Java.
    BlueJ is perfect for first timers.
    Objects rule.
    An impressive project of learning Java.

  237. The elements of computing systems by Gumby · · Score: 1
    I went through most of this book with one of my sons: http://www1.idc.ac.il/tecs/ The Elements of Computing Systems.

    You start with NOT gates and build (in simulation) RAM, CPU, etc. Then you go on to program it in assembly and then implement a VM and compiler. It eables somebody to understand how a line of java code is implemented down to the gates in the CPU. I can't recommend this book highly enough.

  238. Obligatory Raspberry Pi reference by Anonymous Coward · · Score: 0

    Get a Raspberry Pi (might need to wait until the kid turns 13) and the ZX Spectrum emulator.

  239. Repeat Question, same _WRONG_ answer: Python by necro351 · · Score: 1

    Its not about the language, its about the project. When I was young I wanted to make the most amazing 3D game ever. My hero was (and still is) John Carmack. He used C, OpenGL used C, and pretty much anything fast used C (or C++). There were scripting languages, like Perl, which were even used for some games (e.g., Frozen Bubble), but if you wanted to get serious, you needed to learn a language that lets you directly manipulate memory and devices. I _wanted_ to learn C because I wanted to do my project right. Ultimately, when I was in 12th grade I used flex, bison, and C++ to make a C compiler for SPIM based on what I learned at a local university. That experience wouldn't have happened in perl. Disclaimer: I use all the languages, python and perl mostly for scripting. My point is C is a great first language, if you want to build something best built in C, which is actually a _lot_ of stuff.

    So I guess what I'm saying is your question is being asked by the wrong person. Its your 11 year-old that should be asking about what tool he can use to get his job done. If you want to entice him into programming, then you are asking the wrong question. Maybe you guys should work on a project together, in which case, you can select the language that should be used and teach him what he needs as he needs it. My Dad and I did a lot of carpentry together because he tried to entice me into that when I was young. I found it boring, but he tried. I learned some stuff, but didn't go into carpentry. Hopefully it will be different for you and your son. Good luck.

    --
    --"You are your own God"--
  240. Re:Hello World! Computer Programming for Kids and by Elessar · · Score: 1

    My son has used this book, and I can thoroughly recommend it. It leads the kid through programming by getting them to write various games in python - increasing in complexity throughout. When I was kid learning to program, writing games is what I first wanted to do. The book gets the tone just right, and I think my son has enjoyed working with it.

  241. On Pascal... by Anonymous Coward · · Score: 0

    Ever heard of Delphi XE2 (formerly Borland's product). It'll produce 32 or 64-bit executables of ALL KINDS (gui, console, services etc. & more) for Macs, Windows, & soon even Linux in its upcoming next release (again, since Kylix could do that in the past but Borland killed it because the Linux folks were so 'stuck' on C/C++, even though there was a C++ Builder for it also). Free Pascal + Lazarus will do 32/64 bit apps too, & multiplatform also. Not a "huge jump" between using Delphi Object-Pascal & FreePascal + the Lazarus IDE either.

    Embarcadero/CodeGear (subsidiary of Borland) took it over and it's still got codebases worldwide in business by the truckloads. Having used it from 1997 after reading the article I note below? It "took me away" from VB largely (even though I used on jobs alongside C++ many times afterwards). It's got the BEST of C++ & VB in one box so-to-speak. The power of C++ (minus multiple inheritance, an 'esoterica' only imo & not of "huge" practical use (unless others can show me otherwise)) & RAD style building of VB, fast (saves time, vs. say, oldschool C for windows building your apps outta the raw API & your own schedulers + bugs galore - things have gotten WORLD better since the Win16 days is all I can say on THAT note).

    It's also soundly "dusted" both MSVC++ & VB5 (as well as Java) in tests done in a competing trade journal no less as far back as Sept./Oct. 1997 Visual Basic Programmer's Journal issue titled "Inside the VB 5 compiler engine" and did the same in the 2000's in "Jake's Programming Efficiency Test" (which allowed inline assembly in some tests between C++ & Delphi, others not).

    The results?

    Delphi literally DOUBLED MSVC++ string & math performances (which every program does) in the VBPJ mag tests, and outdid MSVC++ in the other test challenge. It's out there still & I've just tried the new Delphi XE2 & love it (after years of not having used Delphi 3/5/7 my former favs with Kylix for Linux).

    Don't knock Pascal either. It's NOT that much different than C/C++, or even Visual Basic. I'd almost call it a 'cross' between the two, but that'd be incorrect... I am just talking about how it looks/is structured is all. Doesn't take much to port code between all 3, imo @ least, because of that.

    I just don't like hearing misconceptions and falsehoods (I don't THINK you meant it that way though, just that you may be unaware of those IDE's + Languages that are PASCAL based that are still out there).

    Heck - ADA & Modula 2 are Pascal like also (ADA is used in military applications).

    You might want to "take a scan" of this http://en.wikipedia.org/wiki/Pascal_programming_language

    Anyhow/anyways: Last year I gave Python a shot though - it's great for string handling stuff!

    It's very easy to use + a wealth of information is online for it also to get you 'kick started' fast(er), because if you come in already knowing ANY coding language, face it - you've got MOST of the worst licked!

    This is 1 thing kids have going for them today that I didn't (heading 50 now) - the NET. It's got a LOT of working code one could use... this has a 'downside' imo too though, especially for new starters: Instead of sweating to do the work, inventing your OWN solutions? You can 'swipe code' off online & use it. Is this good? Yes & no for those reasons above & these below too:

    However - the "flip side" too - For production if the code's not protected by law (what the hell would it be doing out online in the open then though?), a good thing - makes for hopefully FASTER development time. This is also good when your books or help files do NOT have a good example.

    Any language is a good starting point, even BASIC/VB, but you have to consider this is a Dad with his kid - he probably wants the kid to get into a more "future & changes proof" language, vs. "here today, gone later today" also.

    I.E.-

  242. java is an island by allo · · Score: 1

    or however the english title is.

  243. Learn Python The Hard Way by David+Gerard · · Score: 1
    --
    http://rocknerd.co.uk
  244. Think Like a Computer Scientist by Anonymous Coward · · Score: 0

    Do you know "How to Think Like a Computer Scientist" [http://www.greenteapress.com/thinkpython/thinkCSpy/]?
    It is a Free Book available under the GNU Free Documentation License.

  245. InventWithPython by IThinkSoIAm · · Score: 1

    I learned Python to my 9-year old kid using this book: “Invent Your Own Computer Games with Python”. You can find it and a new book “Making Games with Python & Pygame” at //http://inventwithpython.com/ . I haven't used “Making Games with Python & Pygame” yet. Make it playful.

  246. Best learning by Anonymous Coward · · Score: 0

    I have worked in the IT industry for 30 years and have been a programmer for the first 15 or so. I also was self taught.

    Many of the professional development firms use a 4GL which allows multiple people to work on the same project and has heavy use of libraries. In my opinion, this type of programming usually results in garbage. Code that has to be recompiled and updated every year or so, is full of bugs because the libraries are full of them, and those bugs get inherrated by any program made with them.

    The best programmers in the world do their own individual coding and are usually self taught. Even in my agency where we have development teams, when they have something they can't fix, or need something reliable, we have a few solo programmers.

    Start with BASIC. (Beginners All-purpose Symbolic Instruction Code). It literally is the basics and it's freely available with almost ever Operating system, and does not usually require a compiler, but can be compiled.

    After that, go with another high level language like C or C++. Those Use structured programming and are standards in the business community.

    After that is learned, Assembly Language is the next big step. Steve Gibson is one of the top world programmers in Assembly (grc.com)

  247. Give him a football instead by Anonymous Coward · · Score: 0

    Give him a football instead.

  248. Python: Hello World! by BalleClorin · · Score: 1

    There seems to be a consensus on Python, which I agree to.
    I'd reccomend this book for a kid: http://www.manning.com/sande/
    Hello World! Computer programming for kids and other beginners.

    It was actually written by a dad and his 12 year old while taching him to program using Python.

  249. Re:Tube classics by Anonymous Coward · · Score: 0

    All far too dense for an 11 year old, and all pretty much require more background knowledge than an 11 year old is likely to have. I'm not sure there really is an answer to the OP's question though, at that age, even a very bright kid is almost certainly going to lack the prerequisite knowledge to learn to program from just a book.

    Rubbish!

    The fact the 11 year old wants to learn to program is enough.

    I learned to program around age 10/11 on the acorn electron. All i had for instruction was the book that came with the acorn. I didn't understand much to start with but as i copied text from the manual and watched the results i started to understand what was happening.

    You cannot teach a 30 year old how to program if he doesn't want to learn
    You CAN teach an 11 year old how to program if he DOES want to learn

  250. Learn good practices that are marketable by bwanagary · · Score: 1

    All the religious fervor for various languages notwithstanding we need to consider what's best for this 11-year old. At 11, he/she is not passionate about compilers or interpreters. The main interest here is to be able to command a computer to do his/her bidding - without a lot of aggravation or a heavily front-loaded learning curve. What the individual wants and needs is instant gratification, mental challenge to stretch the mind, self esteem by self educating in a skill that is still revered and respected and finally, a marketable skill. Given these criteria there are many viable choices. I am a self taught software developer with a career spanning 30 years. I'm also an employer - I screen, recruit and hire a lot of programmers. So rule out any compiled language. This teenager would be well served to learn either or both of Ruby or Python. I'd probably go with Python first because of the large pool of expertise, material, tutorials, ease of learning. It teaches good habits, has some decent GUI toolkit integration and performance is pretty good. A little way into the Python foray I would advise him/her to learn Ruby. Ruby will instill some outstanding programming paradigms and habits. And Rails/Scaffolding etc. will make it possible for this youngster to quickly deliver a sophisticated web site. Time to satisfaction (and therefore encouragement, reward and motivation) will be short with this approach and both Python and Ruby are amongst the most highly paid skill sets on the market right now. .NET/C# are in high demand now also, but have a much steeper learning curve. Go with Python and then Ruby. You will have fun, learn to program well and have marketable skills and a great foundation for furthering your computer programming career. If you lose interest during the Python/Ruby phase, then programming likely isn't for you. Unless you want to write device drivers (like me) - then learn 'C' :-). The Operating System of choice matters little for this purpose - whatever you're most comfortable with. Good luck with your endeavor.

  251. "Programming in BASIC for Engineers" by Anonymous Coward · · Score: 0

    I was in 4th grade when I used "Programming in BASIC for Engineers"* to teach myself the foundations of programming.
    * http://www.amazon.com/Programming-Engineers-Pws-Kent-Computer-Science/dp/0534918999

  252. Avoid mixed semantics like in modern languages by debruyck · · Score: 1

    I don't agree with most of the recommendations above. Mixing semantics as happens in a lot of modern programming languages is not good for learning: pointer vs. copy passing as in primitive types vs. objects etc. Floating point vs. integer arithmetic with its automatic conversions ... When learning to program, there are 2 totally different things to learn: 1. clearly structuring a problem 2. the nitty gritty messy stuff: pointers, floating point number issues (rounding), communication with hardware (I/O), A language like Pascal (if you have a dialect with supports pointer dereferencing (original pascal only made this possible via var-parameter passing) forces one to structure the problem, has very strict semantics and still lets one learn the complexity of pointers and the essential data structures: trees, lists ... Complement it with structured programming and stepwise refinement (Dijkstra) to learn to structure problems. Once one masters all this, it becomes a piece of cake to write a well-structured C program, and picking up on all the additional nitty gritty stuff that C doesn't hide. With ADT (abstract data type) based programming in Pascal, one approaches OO programming, and the step to OO-pascal or C++ can then be made. A great language for learning how to structure a problem is a functional language like Haskell. Strongly typed, lazy evaluation, support for unlimited lists etc. Based on lambda-calculus, hence with strict semantics. Sorry, but have no book recommendations at hand.

  253. How about Arduino C by Anonymous Coward · · Score: 0

    The fact is that Arduino is more likely to be the platform or similar for programming into the future as Robotics is where it is going to be at. Also he can get the download of the IDE FREE *Yeah!!!*
    In addition he can get all sorts of help and code examples and the devices are cheap and fun to work with.

  254. codeacademy.org, khanacademy.org by tbg58 · · Score: 1

    I'm surprised I don't see more recommendations for codeacademy.org or khanacademy.org. But I am with the majority of respondents in suggesting the Python is a good start and How to Think Like a Computer Scientist is a good book.

  255. Application Notes by Anonymous Coward · · Score: 0

    Application notes published by manufacturers are a great resource. For example, here is an old Motorola application note that begins with the basic parts and operation of a microprocessor: ccintern.dharlos.de/M68HC05AG.pdf It isn't programming, but it will help him understand what's happening in the box.

  256. JavaScript The Good Parts by Anonymous Coward · · Score: 0

    JavaScript The Good Parts by Douglas Crockford.

    Forget Python and the OS. Just go to the browser.

    1) Get Firefox
    2) Get Firebug
    3) Be Awesome
    4) ...
    5) Profit!

  257. Get him an Arduino kit by sgtrock · · Score: 1

    One thing that almost all of the suggestions to date (with the exception of Lego) is that they don't show how programming can affect the real world. Arduino projects, OTOH, will give him the opportunity to get immediate feedback. Arduino kits are used successfully by many teachers and camp counselors at the elementary and junior high levels. The base kits are cheap, the programming language is simple, easy to graps, yet powerful enough to get the kits to do an amazing amount of stuff.

  258. Learn Python the Hard Way by Anonymous Coward · · Score: 0

    I quite enjoyed Learn Python the Hard Way from Zed A. Shaw.

  259. It's not about the language by Aggrav8d · · Score: 1

    Learning to program is not about language. You need the fundamentals first, which means an understanding of what a compture is and how it works. From there things like pointers, memory allocation, stack, and threads make sense. After that you can get into algorithms, at which point the differences between one language and another start to appear - garbage collection, basic types, oopiness, APIs.

    TL;DR: if you've got the fundamentals down then the choice of language is really just a choice of APIs.

  260. Java, then Android by peter303 · · Score: 1

    Few people here have mentioned the "goal" of programming. That should be to write programs to do fun and interesting things. I would put graphics, video games and smart phones in that category. Of the three I'd recommend smartphones. There have wide variety of devices to control inside them, e.g. location sensors. The OS/graphics is relatively simple compared to their more ornate desktop relatives. And clever smartphone program can be lucrative if it becomes popular. Your son can easily show off his work to his friends.

    The most accessible smartphone OS is Android. Is base language is Java. Java is part of the half dozen C-like languages. Once you learn one you can learn the others more easily.

    My first program implemented the graphical Conways Game of Life on a teletype in 1970 Darmouth BASIC. I stumbled on a listing recently and it wasnt too bad.

  261. Structure and Interpretation of Computer Programs. by Anonymous Coward · · Score: 0

    There is no substitute.

  262. I'm surprised no one's recommended COBOL yet by tehcyder · · Score: 1

    It would help teach the kid about the real adult world of pain and disappointment and crushed dreams.

    --
    To have a right to do a thing is not at all the same as to be right in doing it
  263. askell by LocutusOfBorg1 · · Score: 1

    Askell could be a good language... :) Seriously, IMAO you can start with c and k&r, and after approach to python or java

  264. Protect us from self taught programmers. by rhalstead · · Score: 1

    Lordy! Protects us from self taught programmers that never manage to learn structured programming, I've spent many hundreds of hours unraveling and troubleshooting code written by MBAs who "knew how to program". Worse yet I had to interface commercial databases and programs with their kludges. Structured programming, flow charts, internal documentation: What's all that? Now this is not to say all self taught individuals don't get it right, but the odds are against them. We used to have a computing contest for high schools at the university every year. Not once did the kids who were considered gurus even place. They knew how to program in C, and Pascal,(This was before the visual languages came on the scene), but they did not know how to solve problems by applying those languages to the real world which is what the contest was all about. Now, who's to say the kid will be playing, but what does it hurt if he is? Of course if he's serious about programming he's going to have a lot of bad habits that he'll need to unlearn later on.. OTOH there are some special people out there that learn many things quite young. While I was struggling through calculus II in college there was a 14 year old in the same class. But, if he really wants to learn, my recommendation would be the old boring route of structured programming in Pascal first. If he can stand it by the time he finishes that he should know enough to make a decision on what real language he wants to learn. OTOH you could feed him straight C and he'll end up discouraged. C, the write only language.

  265. How to Do Everything with PHP & MySQL by Anonymous Coward · · Score: 0

    I started on this book about 6 years ago and haven't bought another PHP or MySQL book since. It is chock full of code examples. The explanations are usually short but concise. It's for more of the "learn by doing" type.

    Amazon: How to Do Everything with PHP & MySQL

  266. Javascript by minstrelmike · · Score: 1

    Javascript. Learn Javascript in 24 Hours or something like that. You'll learn the basic concepts of programming (variables, loops, conditional tests) in an easy-to-program-and-test environment. A text editor and a browser is all you need. (I don't know if Apple/Macs have an actual text editor available but I know Windoze and *nix all do).

  267. Start with simple, let him realize why he needs.. by Pro923 · · Score: 1

    Why he needs more - by running into the limitations. When I was 10 I talked my parents into getting my TRS80 coco. I mastered basic, extended and disk basic mostly for the purposes of creating games. I made LOTS of games (and spent LOTS of money (I spent $600 on a floppy disk drive!)). Eventually, I realized that I could never achieve the performance of the real games because the real games weren't written in Basic. I wanted to understand assembler - because I knew that was the only way to get the real performance - but at that time there was really no one to go to who could teach me the concepts. It was really all like black magic to me. I didn't understand the concept of compiling - or really why Basic was so slow. Anyway, I'd reccomend something simple like Python - where jr could focus on the logic in creating a program. Maybe he too will learn that there are limitations, and want to understand the lower level languages. I tried this a couple years back with my 8 year old... He sort of liked it, but definitely didn't have the drive to learn it like I did at his age.

  268. How oldtimers did it. by TapeCutter · · Score: 1

    BASIC, never had no luxury like that. :)

    My first 'program' that I have any recollection of was in RPN on my dad's HP calculator, it was a privalage to use it because it had cost his company the equivalent of a months wages for a senior engineer. He's almost 80 now but still keeps that calculator in its original box in his wardrobe, nowadays he's reimplementing vintage games in Delphi(*) and maintaing my brother's small bussiness systems. I haven't seen the calculator since I left home in 1977-78 but I think it might be a HP-35 going by the early 70's feel of the memories. I do recall it plugs into 240V Aussie mains, so whatever it is I don't imagine there'a a whole heap of them in existance today, particularly one still in its box with the manual. I hope to turn it into an unusual family hierloom after I die, (assuming the hyperactive old bugger doesn't outlive me).

    * Google "Barberic Games" - Please take a look and download if you are intersested, but for god's sake don't slashdot him. "BarbEric" is both a word play on 'barbaric' and a combination of my parents names.

    --
    And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
  269. An Eternal Golden Braid by Anonymous Coward · · Score: 0

    Godel, Escher, Bach: An Eternal Golden braid.

    Wonderful introduction to CS, applicable to all languages, great lessons about hierarchical ontology and human experience as well!

  270. Pen and Paper by Anonymous Coward · · Score: 0

    I have no lasting memories from first learning LOGO in grade 4, but I do like the way I was re-introduced to programming in high school...

    We didn't even touch the computers for the first full half of the term!

    Instead we were introduced to basic concepts in the classroom on the blackboard and worked with pencil and paper.
    First getting comfortable with the idea of instructions, the teacher would hand out simple mazes that we would have to write instructions for an imaginary robot to navigate through. There would be a simple instruction set, for example, forward 1 space, turn right, and so on. He would also have us draw our own mazes and solve them or pass them around the class. Eventually the instruction set was expanded after identifying repetitive sequences of instructions and imagining how to condense them syntactically. We would get loops and procedures.

    I remember loving the class when we were introduced to arrays. Here is a box that can hold anything.. a one dimentional array is a list of these boxes.. and he would draw that on the chalk board. Describe how they can all have a single name and how to reference the different boxes. Then he drew the two dimentional array... Then three dimentional.... My mind was blown when he said it didn't have to stop after three dimentions.. and how easy it was notationally, but try to draw that on the chalkboard! Not that higher dimentional arrays have come up too often in my many years of programming since then, or that wern't better substituted with a different structure, but what a nice thought experiment.

    I've always had a preference for the theoretical aspects though... I enjoyed woods class and metals and electronics shops and always had a very 'physical' sense for the way I would structure and visualize code.. or, I should say, data! In high school math I was always drawn to geometric proofs.. and in University I love Automata theory and proofs.. State Machines were always a lot of fun for me, powerful computationally and easy to associate with real world ideas.

    TL;DR Having good ideas about the structures you can use to organize your information and solve your problem is more important that any programming language!

  271. Go back to Basic by Anonymous Coward · · Score: 0

    Go back to BASIC.
    http://www.calormen.com/applesoft/
    Let him learn the base programming.

  272. Maybe an appetizer... by Anonymous Coward · · Score: 0

    Though I learned to program at about the same age the Commodore BASIC / 6502 assembly way, my (much) younger siblings got into programming with Processing. It's not a very versatile language, but it has some distinct advantages for young and inexperienced learners: it's easy, its emphasis is on immediate visual feedback, and it has its own built-in IDE with a big "play' button. I consider it the Logo "Turtle Graphics" of our times...

    Once the kid wants / needs something more powerful, Python or a Lisp would be great choices.

    I know a lot of us adult initiates want to throw the dense and useful stuff out there right away, but that assumes the child's interest is fixed... more likely, the kid still needs to develop a desire to program and a sense of fun in association with programming, as much as actual skills.

  273. code what? by mcswell · · Score: 1

    You might ask what kind of things your son wants to program, i.e. does he have any other interests. If he's interested in natural languages, for instance, there's a lot of good Python code, e.g. the Natural Language Toolkit (NLTK). I would imagine that other fields have their own programming languages--R for statistics (probably a stretch for an 11 year old), something else for gaming. (You can tell where I'm coming from ;-).)

  274. Land of Lisp ftw! by Jmc23 · · Score: 1
    www.landoflisp.com It's free online but you can get a paper copy if you want, it's got cartoon drawings, and it's an extremely gentle intro to programming. It even has a music video! http://www.youtube.com/watch?v=HM1Zb3xmvMc

    Personally I love lisp because it doesn't have a syntax. When your kid learns how to program it'll be easier for him to choose a syntax that he likes afterwards.

    --
    Don't complain about syntax, grammar, or spelling. There is no.hell like input on android.
  275. Soak It Up by Anonymous Coward · · Score: 0

    Kids Soak Knowledge up, don't concentrate on any one language, go after python and perl for sure but work with C and C++ possibly even some Assembly but the main goal is to find a way to make it fun and entertaining, make projects that have an end goal to do something cool or control some media device / network device / anything external or attached to the real world.

    1. Re:Soak It Up by Anonymous Coward · · Score: 0

      Also a really good place to start is TI-83+ calculator working with BASIC an then moving to Assembly language, BASIC will teach how to write efficient code to maximize speed. Assembler will teach memory management, routines, calls, pretty much everything without being too overwhelming but maintaining a high level of entertainment and fun so it will be able to keep their attention

  276. What about Ada? by Anonymous Coward · · Score: 0

    Have him learn Ada. It is clear and close to Pascal in terms of syntax (not the mess of C or Perl!). This makes the program easy.
    Ada is used in all context (from high security software, to simulation and Web devs). There is some online free book and
    a Wikibook. It has built-in tasking, concurrency and distributed computing. On Ubuntu just use the GNAT compiler which is
    part of GCC.

  277. COBOL by Anonymous Coward · · Score: 0

    1) learn COBOL Use Google.
    2) write a simulator for a three-address machine in COBOL
    3) write an assembler for that machine in COBOL
    4) write a linking loader in assembler.
    5) write a C compiler in COBOL
    6) write a COBOL compiler in C.
    7) think about what 5) and 6) mean.
    8) substitute other languages for COBOL and C and repeat 7).

  278. Computers are useless. by Anonymous Coward · · Score: 0

    "They cannot ask questions"

  279. Re:Hello World! Computer Programming for Kids and by feaglin · · Score: 1

    Get it direct from the publisher- http://www.manning.com/sande/

        They do ebooks right. No DRM and costs less than the physical book (pbook). Also, if you buy the pbook you get the ebook free. Sign up for their daily deal e-mail to see what book is on sale that day. Every day at least one book goes on sale, and sometimes more. Wait long enough and the book you want will go on sale, probably for half price. Their early access program is great, too.

        As for this book, I thought it was well done, but my kids didn't get into it. They didn't express interest up front, though. It was mostly parental pushing/hoping.

    Good luck

  280. Scheme by Anonymous Coward · · Score: 0

    Start with Scheme. Everybody likes Scheme. Alternatively, start with Haskell. Starting with Haskell is probably not going to work, but if it does, it will be the best thing you can do.

  281. Seriously, get this for him first by Anonymous Coward · · Score: 0

    http://www.amazon.com/The-Joy-Sex-Ultimate-Revised/dp/0307587789/ref=sr_1_1?ie=UTF8&qid=1334435480&sr=8-1

  282. Codecademy by Anonymous Coward · · Score: 0

    Surprised to see that noone mentioned codecademy.com. This site now has a very intuitive course on javascript.

  283. Head First by secret_squirrel_99 · · Score: 1

    I'll skip the Python/Ruby/Java/Whatever debate, and throw in my 2 cents for the head first series of books. They have a ton of them for every common language as well as a variety of other topics. They're written at a beginner level, aren't insulting and are really alot of fun. The combine all sorts of exercises and gimicky little games to make a more immersive experience, and it really does work.
    They're published by Oreilly which gives them all the credibility they should need, but they are written at a level that a novice, even a child can learn from and have enough content, that an experienced reader can likewise expect to learn something

    --
    If privacy had a tombstone it would read "We did it for your own good" . -- John Twelve Hawks
  284. Art of Assembly by Dareth · · Score: 1
    --

    I only look human.
    My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
  285. this by Anonymous Coward · · Score: 0

    Definitely "C++ for Dummies", didn't manage to get my copy until age 12, but... I'm sure he'll love it just the same.