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."

320 of 525 comments (clear)

  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 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.

    12. 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.

    13. 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.)

    14. 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...

    15. 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"
    16. Re:Python by digitig · · Score: 1

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

      --
      Quidnam Latine loqui modo coepi?
    17. 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.
    18. 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?
    19. 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.

    20. 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
    21. 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.

    22. 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.
    23. 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.

    24. 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.)

    25. 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.

    26. 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
    27. 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
    28. 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).

    29. 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).

    30. 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).
    31. 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
    32. 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

    33. 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"?
    34. 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)
    35. Re:Python by jpate · · Score: 1

      < for <
      &gt; for >

    36. 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).

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

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

    38. 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
    39. 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.

    40. 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.

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

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

    42. 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
    43. 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.

    44. 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.
    45. 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.

    46. 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.

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

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

    48. 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.

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

      yes... but what is the actual question?

    50. 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
    51. 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."

    52. 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'
    53. 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.)

    54. 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.

    55. 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.
    56. 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.
    57. 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.

    58. 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"?
    59. 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"?
    60. 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
    61. 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.

  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.

  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!
  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 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.

    3. 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
    4. 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!

    5. 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
  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. 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 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
    2. 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!
    3. 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.

    4. 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
    5. 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.

    6. 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.

    7. 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.

    8. 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
    9. 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.

    10. 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.

    11. 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.
    12. 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.

    13. 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
    14. 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.

    15. 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.

    16. 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
    17. 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.

    18. 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
  7. Re:C? by Desler · · Score: 1

    Because C++ isn't from last century?

  8. 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?
  9. 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.

  10. 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.

  11. 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 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.

  12. 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.

  13. 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
  14. 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.

  15. 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.

  16. 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.

  17. 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.

  18. 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.)

  19. 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.

  20. 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.

  21. 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.

  22. 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.

  23. 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..?

  24. 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 :)

  25. 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
  26. Visual Basic for Quants by Anonymous Coward · · Score: 1

    That's how I made my fortune.

  27. 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.
  28. 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.

  29. 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.

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

    http://scratch.mit.edu/

    Explains programming concepts though visual components.

  31. 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...

  32. 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
  33. 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.

  34. 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.

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

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

  36. 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.

  37. 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.

  38. 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
  39. _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)
  40. 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.

  41. 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!
  42. 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.

  43. 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.
  44. "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.

  45. 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.

  46. 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#.

  47. 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.

  48. 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.

  49. 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.)

  50. 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.

  51. 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.

  52. 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
  53. Try "Invent With Python" by Bob+the+Hamster · · Score: 2

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

    1. 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.

  54. Everything in this list, eventually by medcalf · · Score: 1
    --
    -- Two men say they're Jesus. One of them must be wrong. - Dire Straits
  55. 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.

  56. 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.
  57. 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.
  58. 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

  59. 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.

  60. 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

  61. 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 ;-)

  62. 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.

  63. 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.

  64. 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.

  65. 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.

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

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

  67. 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. ;)

  68. 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

  69. 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

  70. 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.

  71. 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.

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

    Which is SOOOOO important to a complete beginner...

  73. 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.

  74. Final Post by schnikies79 · · Score: 1

    Goodbye Slashdot account. It's been fun but it's time to move on.

    --
    Gone!
  75. 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).

  76. 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.
  77. More creativity, please by NEDHead · · Score: 1

    This post would have been more interesting were it in the form of a small animated hologram

  78. 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
  79. Hope this helps by magikfingerz · · Score: 1

    This site is very useful for your situation: http://python4kids.wordpress.com/getting-started/

  80. 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 ).

  81. 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
  82. 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.

  83. 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.

  84. Smalltalk and Squeakland by richieb · · Score: 1
    --
    ...richie - It is a good day to code.
  85. 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?

  86. 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.

  87. 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.
  88. 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/

  89. 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
  90. 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.
  91. Re:C? by Imagix · · Score: 1

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

  92. 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

  93. 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.
  94. 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.

  95. 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; }
  96. 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
  97. 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.

  98. 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

  99. 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
  100. 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.

  101. 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
  102. 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
  103. 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.

  104. 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.

  105. 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.

  106. 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.

  107. 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.

  108. 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.

  109. 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.
  110. 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
  111. 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].

  112. 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.

  113. 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
  114. 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
  115. 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.

  116. 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
  117. 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. . . .
  118. 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.

  119. 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".

  120. 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 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?)"

    3. Re:I disagree by chaosite · · Score: 1

      Bravo, good sir. Bravo.

      I absolutely agree with everything you just said.

  121. 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...

  122. 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.

  123. 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.)

  124. 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!

  125. 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.

  126. 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.

  127. 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.

  128. 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.

  129. 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.

  130. 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. ;-)

  131. lisp by Gunrunner00 · · Score: 2, Interesting

    The Land of Lisp has been a pretty good book thus far for learing lisp http://landoflisp.com/

  132. 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.

  133. 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.

  134. 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.

  135. 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

  136. 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
  137. 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
  138. 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!

  139. 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)
  140. 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.

  141. 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
  142. 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.

  143. 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.

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

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

  145. 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!

  146. 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.

  147. 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.

  148. Re:Tube classics by Smallpond · · Score: 1

    This looks to be the entire book online!

    Wow. Teach the kid to pirate, too!

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

    Pretty soon it will catch up with Lisp.

  150. 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.)

  151. 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.

  152. 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 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.

  153. Playboy by Osgeld · · Score: 2

    save him now

  154. 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.
  155. 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

  156. 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

  157. 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.

  158. whiteboard by trudelle · · Score: 1

    He doesn't need a book, he needs a big whiteboard. Huge.

  159. 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).

  160. The Byte Brothers! by jdpipe · · Score: 1

    This did it for me... a while ago: http://www.amazon.com/dp/0553244183

  161. 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.
  162. 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.

  163. 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"--
  164. 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.

  165. 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.

  166. java is an island by allo · · Score: 1

    or however the english title is.

  167. Learn Python The Hard Way by David+Gerard · · Score: 1
    --
    http://rocknerd.co.uk
  168. 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.

  169. 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.

  170. 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.

  171. 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.

  172. 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.

  173. 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.

  174. 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?

  175. 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.

  176. 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.

  177. 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
  178. 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

  179. 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.

  180. 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).

  181. 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.

  182. 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.
  183. 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 ;-).)

  184. 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.
  185. 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

  186. 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
  187. 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