Slashdot Mirror


How To Encourage a Young Teen To Learn Programming?

Anonymous Hacker writes "I'm in a bit of a bind. My young teenage son is starting to get curious about computers, and in particular, programming. Now, I'm a long time kernel hacker (Linux, BSD and UNIX). I have no trouble handling some of the more obscure things in the kernel. But teaching is not something that I'm good at, by any means. Heck, I can't even write useful documentation for non-techies. So my question is: what's the best way to encourage his curiosity and enable him to learn? Now, I know there are folks out there with far better experience in this area than myself. I'd really appreciate any wisdom you can offer. I'd also be especially interested in what younger people think, in particular those who are currently in college or high school. I've shown my son some of the basics of the shell, the filesystem, and even how to do a 'Hello World' program in C. Yet, I have to wonder if this is the really the right approach. This was great when I was first learning things. And it still is for kernel hacking, and other things. But I'm concerned whether this will bore him, now that there's so much more available and much of this world is oriented towards point-n-click. What's the best way to for a young teen to get started in exploring this wonderful world of computers and learning how to program? In a *NIX environment, preferably." Whether or not you have suggestions for generating interest or teaching methods, there was probably something that first piqued your curiosity. It seems like a lot of people get into programming by just wondering how something works or what they can make it do. So, what caught your eye?

771 of 1,095 comments (clear)

  1. No ShortCuts !!! by Axe4ever · · Score: 2

    Problem solving ability grows only by tackling small small challenges at first.Again, u build that ability by slowly advancing your level.Not to mention that, you have to burn out to really learn something. To write great code, you have to go through great code that others have written. In short,there are no shortcuts .

    1. Re:No ShortCuts !!! by h4rm0ny · · Score: 5, Insightful


      Perhaps, but there are many elements to programming some of which are perhaps easier to learn than others. Teaching his son to program may benefit from being able to distinguish these elements. My initial suggestion would be to give him Python because this will let him learn the critical elements of program structure and algorithms without getting bogged down in learning the idiosyncracies of a language like C++ (which I do love). For similar reasons, Python will also offer fast return on investment. He'll be churning out programs that do what he wants them to in half the time he would be in C++ or Java.

      Of course the most important thing is probably to let him drive the learning for the most part. If he's a bright and technically minded lad, he may appreciate the power and intricacies of C++. He'll need the language sooner or later if he gets involved in many of the big open source projects which would also be a great way to get involved. Things are usually more fun when done as part of a group.

      --

      Aide-toi, le Ciel t'aidera - Jeanne D'Arc.
    2. Re:No ShortCuts !!! by Swizec · · Score: 2

      Yep, if he doesn't have the drive to learn programming on his own he never will. I remember back in the day I used to go through Pascal's help index to find interesting new stuff to learn because what the teacher was teaching was simply way too slow and uninteresting for me.

      In the same light, perhaps you should try the observing approach. Give him a problem that will pique his interest and just observe. Don't meddle, don't teach, wait until he gets truly stuck.

    3. Re:No ShortCuts !!! by D'Sphitz · · Score: 5, Insightful

      Nobody starts out with kernel hacking. Kernel hacks are bragging rights for adult geeks, sweet myspace pages and guild websites are bragging rights for teenagers.

      Teach him some PHP and HTML, or if you're an elitist teach him Ruby, or if you're a sadist teach him Perl. Teach him some JavaScript and Flash and Photoshop, and then let him go do the things that will impress his friends and therefore hold his interest, like rickroll pages and guitar hero videos.

      If he's really into it the serious stuff will follow naturally in time, no point in intimidating him right off the bat.

    4. Re:No ShortCuts !!! by montyzooooma · · Score: 4, Insightful

      Yep, if he doesn't have the drive to learn programming on his own he never will.

      Is that really fair? When a lot of us started programming every home computer had a built in version of Basic (or Forth if you had a Jupiter Ace... you lonely lonely soul...) so jumping in wasn't too hard when the first thing you looked at after bootup was the Basic interpreter.

    5. Re:No ShortCuts !!! by Swizec · · Score: 4, Insightful

      For most people programming is a long road of breaking your head against a problem until it gets solved. Long hours spent tapping away at the keyboard and honestly "normal" people think we're all out of our minds.

      So no, if he doesn't have the drive to learn and problem solve he's better off outside playing with a ball ... or girls since he's a teen.

      I didn't mean that he's gonna have to learn programming himself, guidance is awesome to have, but the really good programmers out there are mostly self taught, people who were able to absorb knowledge wherever it came from, be it a peer, a book or an actual teacher. The ones who were "taught" programming are code monkeys with a very limited ability of actual programming, sure they can code, but they can't Code. If you catch my drift.

    6. Re:No ShortCuts !!! by hobbit · · Score: 5, Informative

      I'll feed the troll today.

      So he can learn how important white space is

      Indeed. Unlike most other programming languages, Python mandates readability, which is an excellent discipline for a youngster to learn.

      and write entire apps with a single line of code

      This is possible in most languages, but somewhat less likely in Python owing to the aforementioned discipline.

      and no idea how it happened

      This is impossible in most languages, and Python is no exception.

      and learn to program with no job prospects?

      You just keep telling yourself that; the world will change around you.

      I have nothing against Python

      In that case you need to brush up on your writing skills.

      but as a learning language I put it down there with Perl.

      A lot of people cut their teeth on Perl. I am not one of them, so I can't comment.

      --
      "Wise men talk because they have something to say; fools, because they have to say something" - Plato
    7. Re:No ShortCuts !!! by donaldm · · Score: 2, Insightful

      You are right there are no short-cuts although I would suggest he become familiar with the basics of using a *nix system such as how to use the command line and why this is still preferred for certain tasks. This is not to say that GUI should be disdained but you should be able to point out when a GUI is the best solution to a problem and also when the command line may be the better way to go.

      Now to programming. It is easier to explain the basics and it is very easy to show by example (keep it simple at first and let him get comfortable) if you use the shell (ie. bash, ksh or just sh - there are others but ksh/bash/sh are the most common) as a basic introduction to programming. You can later on get into languages like Perl and eventually C although I would recommend a formal course on the basics of programming before any he tries to learn a language that need to be compiled. As to more advanced languages it is very difficult to recommend one since the choice of a language should depend on what you as the programmer want to achieve, although as you probably know you may not have any choice in the matter.

      --
      There ain't no such thing as proprietary standards only proprietary formats. Standards are by definition open.
    8. Re:No ShortCuts !!! by jimicus · · Score: 3, Funny

      (or Forth if you had a Jupiter Ace... you lonely lonely soul...)

      I had a Jupiter Ace, you insensitive clod!

      (No kidding. I did. And a crappy little machine it was too. Think "ZX spectrum without the software library").

    9. Re:No ShortCuts !!! by Orkie · · Score: 4, Funny

      Nice way to write off everybody between the ages 13 and 19 there.

    10. Re:No ShortCuts !!! by bre_dnd · · Score: 1

      ZX spectrum without colour, either.

    11. Re:No ShortCuts !!! by bhima · · Score: 2, Interesting

      Back when I first learned PERL people were still using it as a Practical Extraction And Report language. A replacement for Sed & Awk. I was taking snippets of Perl from the web, futzing with them, and searching instrument logfiles and pushing the output to comma separated text files and then to excel. I don't remember if they were one line scripts but I do remember frequently using snippets that I wasn't really sure why or how they did what they did but only that I wanted the output they provided. Wow! I remember the first time I really had that going... it was like effing magic.

      --
      Nothing in the world is more dangerous than sincere ignorance and conscientious stupidity.
    12. Re:No ShortCuts !!! by Fred_A · · Score: 3, Funny

      So no, if he doesn't have the drive to learn and problem solve he's better off outside playing with a ball ... or girls since he's a teen.

      In that case just lock him in behind a card locked door with a blank card and a card writer. Leave the ball and girls outside and he'll learn eventually (you might want to prepare some flat food in case he doesn't figure stuff out fast enough).

      --

      May contain traces of nut.
      Made from the freshest electrons.
    13. Re:No ShortCuts !!! by badpazzword · · Score: 1

      What about the twenteens, you insensitive clod!

      --
      When ideas fail, words become very handy.
    14. Re:No ShortCuts !!! by QuantumHobbit · · Score: 4, Interesting

      No job prospects?

      At his son's age I learned to program in Pascal and was grateful for the privilege. I even had to compile in the snow uphill both ways. See if I put that on a resume.

      Python is a great language to learn on, and there are more and more serious projects that use it especially in the scientific community. If he enjoys python, he'll move on to more powerful and commonly used languages lick Java, C++, and how could I not mention Fortran. (Actually Fortran wouldn't be a bad language to learn on if he's a math nerd. I'm not entirely joking with that.)

    15. Re:No ShortCuts !!! by Tim+C · · Score: 5, Interesting

      For most people programming is a long road of breaking your head against a problem until it gets solved. Long hours spent tapping away at the keyboard and honestly "normal" people think we're all out of our minds.

      And then most of them go back to driving a truck, or waiting on tables, or shuffling paper, or laying bricks or whatever "normal" job it is that they do.

      Don't get me wrong, I'm not saying that there's anything wrong with any of those jobs, but let's face it - they're not exactly riveting, and yet we are the mad ones...

    16. Re:No ShortCuts !!! by Deanalator · · Score: 1

      I happen to be into math, so I started (real) programming when the dinky scripts on my ti86 weren't running fast enough.

      I also would chat online a lot, so I had fun writing IRC/AIM bots (most languages should have the appropriate bindings easy enough).

      I then started writing some basic network toys (sniffers/scanners etc) because I was getting interested in networking protocols (I was taking a Cisco networking class at the time).

      It all depends on what the kid is into. Also, programming bots for various online games is always a fun and practical way to start, and every kid loves web design.

    17. Re:No ShortCuts !!! by Lumpy · · Score: 1

      Wrong. when most of us old-farts grew up. you were FORCED to interact with basic. you had no OS, no way to use the pc as a appliance (Except atari and C64 and CoCo as they had cartridge slots and ran like a toaster) so you were forced to learn to type the commands to load the program. Also computer magazines back then had an IQ over 80 and actually had program listings as well as real info on how to program. Today's computer magazine cater to the "ohh shiney" crowd that does not want to learn, but drool on photos of new gear.

      Even the programming rags like Dr. Dobbs fail. They are so far out there that newbies dont have a chance. Hell I have been programming for 15 years and some articles in Dobbs are above my head.

      That's the difference. It's why in the 40's and 50's most everyone knew basic car maintenance. Why in the 60's and 70's most everyone knew something about fixing their radio and TV (replace the dead tubes) and now nobody knows anything and everything is throw away.

      --
      Do not look at laser with remaining good eye.
    18. Re:No ShortCuts !!! by Anonymous Coward · · Score: 1, Interesting

      You could try PHP/HTML and maybe get him to mess about with the Facebook platform a bit. It's not too hard to learn and at least that way he can share his creations with his friends. Being able to show off my programs to my peers was hard to do when I was a nerdy teen writing ugly ugly C on my amiga. Back then it was all about finding other people with amigas and swapping floppy disks like they did on The Flintstones.

    19. Re:No ShortCuts !!! by twistedsymphony · · Score: 4, Insightful

      For most people programming is a long road of breaking your head against a problem until it gets solved. Long hours spent tapping away at the keyboard and honestly "normal" people think we're all out of our minds. So no, if he doesn't have the drive to learn and problem solve he's better off outside playing with a ball ...

      I know at least for me the DRIVE comes from the desired destination... My advice for the fellow in TFA is to have his son pick a project. Start with something simple.. maybe it's just a slideshow or a tick-tak-toe game. Then start building it. Guide him a bit in the basics but encourage him to learn how to search for solutions that are beyond his knowledge. Once you have a basic program built start adding features.

      Maybe it's just because I'm partial to this but consider getting a few microcontrollers and teaching him to program on that platform. Writing something that interacts with a mouse keyboard and monitor on a computer is one thing... making something where you physically assemble the hardware as well is something else altogether. This will also test the waters in other tech areas... maybe he decides that he doesn't like programming but loves electronics, or maybe he like them both and wants to get into computer system or robotics.

      But seriously... just pick a goal, and work towards it... the best way to learn is though experience.

    20. Re:No ShortCuts !!! by eonlabs · · Score: 2, Insightful

      I can't vouch for python because I haven't learned it yet, but the gist of the parent is dead on.
      Show him a prototyping language. Something he can dev in quickly before diving into the deep and mucky bowels of pointers, references, mixed languages, and memory management. These things are not obvious to a novice programmer, and program flow is far more important to pick up early on than that.

      I KNOW I'm going to get flack for this, but many people I know who are excellent programmers cut their teeth on QBasic. This language was simple enough to pick up that you could really get coding some complex stuff in under an hour. I would recommend text parsing stuff as a first thing. "Can you pull the hours out of the time?" or "Can you print in words what the date is from the seconds since...". This can be extended to stuff like "calculate Fibonacci numbers" and then teaching how to clean that code up. This is a good time to teach stuff like "code first, optimize second" and how to time code for optimization.

      It's also a good time to get him into commenting the code. The way I usually get newbies started on that is to have them write pseudo code or explanatory text before coding, using the comments as a guideline to keep them on task.

      If I were to suggest an order of action, try variables & output, input, conditionals, loops, complex conditionals (switch/select statements), objects, collections (sorting searching and maybe memory management here). It's hard to do GUI stuff off the bat because for c/c++ there are so many different flavors available that you can't say "This is how this is done" and be done with it. What might be a good approach is to have him build a game. Start with a MUX and evolve it to a side scrolling platformer, and then to one with 3D graphics (can still be side scrolling, but this way it at least gets flashy).

      It's really important to show how to make a responsive program early on. It's a lot more interesting to work with something that can give you feedback in some way. Even a lexical parser could be fun. Find the verb in the input sentence.

      When you've done all that, try implementing low level c/c++ code like the String class or Vector class.

      Python might be a good way to go, if it really is just print "Hello World" and you're done.

      Don't forget:
      import antigravity

      PLAY

      --
      I wouldn't consider the mad hatter mad. Just reality impaired. He sure can make a mean cup of tea.
    21. Re:No ShortCuts !!! by Asgerix · · Score: 4, Funny

      I'll feed the troll today.

      Considering your nickname, I would have thought that you had learned to stay away from trolls - or would that be orcs?

      --
      Life is wet, then you dry.
    22. Re:No ShortCuts !!! by SpinyNorman · · Score: 2, Interesting

      jumping in wasn't too hard when the first thing you looked at after bootup was the Basic interpreter.

      Get off my lawn you whippersnapper!

      I started with a NASCOM-1 1MHz 2K RAM (1K for you, 1K for the "monitor" program) Z80 kit in 1978. When I finished soldering it together the only thing I got after bootup was a prompt at which you could enter hex bytes (after you hand assembled your program on paper) to a chosen memory address.

      I'd actually consider this approach for someone learning about computers today. Buy an Apple II off eBay ($20 or so) and start programming in assembler. Write an interrupt driver serial driver or something that interacts directly with the hardware. There are too many kids nowadays who may know how to program in some modern scripting language, or maybe even in C/C++, but still don't really have an intimate knowledge of how computers work at the lowest level.

    23. Re:No ShortCuts !!! by baxissimo · · Score: 4, Interesting

      Agreed! I think graphics are a great way to get young folks interested in programming. They were the thing that captured my interest the most anyway. I can still remember trying to figure out some Apple BASIC code that made a little blip bounce around the screen back when I barely knew what a less than sign meant. But if making things move around on the screen doesn't motivate your kid, then find out what does. Other projects I remember working on early on were tools to make D&D characters, because I liked playing D&D but thought the process of re-rolling the dice a thousand times till I got the stats I wanted for a character was too laborious :-) Also my friends and I tried to create a computer version of the BattleTech board game. We had know idea what we were doing, and never got anything even close to playable, but I still learned a lot from it, and over the subsequent years as I learned knew tricks and techniques I always could recognize them as something useful, as something that would have helped us get over one hurdle or another I faced on those early projects.

      These days I think maybe young folks might be more motivated by web stuff that they can show their friends. Hey check out my web page! (Which would suggest javascript or java as the first language) We didn't have a modem till I was in high school so those things weren't really an option back when I was learning. It looks like a lot of kids are writing silly plugins for Firefox too.

      But still I think graphics is good, because before long you start to see that you need to learn some math to do more interesting things with it.

    24. Re:No ShortCuts !!! by Keeper+Of+Keys · · Score: 2, Insightful

      It was quite a bit faster, though. And you got to learn FORTH rather than bloody BASIC.

    25. Re:No ShortCuts !!! by IamTheRealMike · · Score: 3, Insightful

      That's not "writing them off", that's being realistic.

      When I was a teenager learning to program, I wanted to write video games. And I did. It was my first exposure to open source - a Delphi 3D MMORPG project. It was hopelessly over ambitious for our little team but it was fun, and taught me a hell of a lot about programming. And actually the maintainer/founder of that project went on to work for Ubisoft, so it worked out OK for him.

      Now the problem is that writing video games is actually pretty hard. Writing simple web apps is much easier. It also has the HUGE benefit that you can show your friends. I was very rarely able to show my friends what I'd written but when I did, it was a great feeling, because my friends intuitively understood that making a 3D world was hard.

      So I think writing web apps is not a bad place to start. The main problem is that web apps aren't video games, and all teenagers want to write video games. If our kernel hacker isn't too hung up on Freedom, I'd strongly recommend getting an Xbox360 and setting him up with the XNA framework. It's very much oriented towards hobbyist and beginner programmers.

      There are lots of tutorials, you write software in C# which is straightforward enough for novices but won't limit him, and the result can be uploaded to XBox Live or played when his friends come round. Importantly, it looks a whole lot more cool and professional (imho) if your work is running on a real games console.

      There is also a full, free 3D engine available (TorqueX) which can help him get started with writing simple 3D games without needing to master trigonometry and Direct3D. Back when I was doing this stuff, you had raw OpenGL or Crystal Space if you used C++ and were feeling brave.

    26. Re:No ShortCuts !!! by zappepcs · · Score: 1

      This is not so. The first question I asked about electronics was "How in the hell does a tv make a moving picture?" It took awhile to find out, but it was the first step.

      If your child has curiosity, and likes to solve puzzles, I can think of no better way to explain computers other than big complex puzzles, whose solution involves 100s of rules more complex than video games and yet more satisfying to play by at the end of the day.

      It is problem solving and puzzle solving that you want to teach your kid. It matters not what problems they decide they like to solve. H5N1 or AIDS are some of today's top puzzles. Along with 2nm IC circuit design and GigE bandwidth to the home on existing infrastructure or 100Mbyte wireless. How about desktop UIs that are more like SL than Windows. If you find some kind of puzzle the kid would like to solve, it's much easier to show him the way to do that. Hello world is not exciting unless you are trying not to pee yourself waiting for those first commands to complete successfully for your first time ever. Doing something cool on MySpace template? How about robot competitions? There is lots of coding and puzzle solving there.

      Good luck

    27. Re:No ShortCuts !!! by geminidomino · · Score: 4, Funny

      If he enjoys python, he'll move on to more powerful and commonly used languages lick Java, C++, and how could I not mention Fortran.

      Note to submitter: If python leads to licking Java, just imagine what's next! It's a gateway drug, I tell you!

    28. Re:No ShortCuts !!! by dollargonzo · · Score: 1

      I will second the that; tick-tack-toe definitely brings back some good memories. It was the first project that truly got me stuck on a problem that I couldn't solve right away (the recursive minimax search part), but once I got it, I had way more drive and inspiration to program. Also, tick-tack-toe has a lot of simple parts that can get you warmed up to the more difficult crux of the problem and doesn't force you to deal with graphics and lots of other stuff that requires a lot of very specific knowledge about a particular system or API. I guess some people really like graphics programming, but I think there is a rather steep learning curve to the programming part, whereas game and game AI programming are direct implementations of the logic (at least if you keep it to the command line). Plus, if he's interested in graphics, after creating a command line tick-tack-toe program, he can make a GUI for it.

      I'm rather partial to that myself, but after that I dove head first into AI programming and never looked back.

      --
      BSD is for people who love UNIX. Linux is for those who hate Microsoft.
    29. Re:No ShortCuts !!! by hesaigo999ca · · Score: 1

      I think what he means is that what worked yesterday to get you interested , doesn't work on today's kids, they know already how to program a vcr at the age of 5 and my nephew played unreal tournament well enough at the age of 4 to play by himself, pop the disc in and know what buttons to push to get the desired reaction, where as today, he gets easily bored helping someone program their new cellphone.

      I am a developer and have noticed the trend coming from all this technology, is that the ADD laden generation needs to be stimulated in short doses until they develop their own interest or obsession, then it doesn't matter, they will do it all the time.

      So to answer the original post, I believe their are 2 types of computer geeks, hardware and software, find out which he really likes, and if software is really his thing (not yours being imposed on him) then take him to a cool convention (black hat) to see what cool gadgets are being programmed, then show him the ropes of being able to program a small add-on to lets say msn messenger or something that has a value to his friends or his current life.

      After that if he keeps on about doing something REALLY cool, show him the ropes with VS, that usually gets the juices flowin' and easy enough to learn without getting into assembler history lessons. VBS scripting or even dos is cool too....for script kiddies.

    30. Re:No ShortCuts !!! by multipartmixed · · Score: 1

      > when I barely knew what a less than sign meant

      That's funny, you just reminded me of programming a game on the Timex-Sinclair 1000 (Sinclair ZX81 w/ 2K RAM). The thing you moved around the screen was <*>. I thought it was duck-beak, star, backwards-duck-beak.

      --

      Do daemons dream of electric sleep()?
    31. Re:No ShortCuts !!! by Kiaser+Zohsay · · Score: 1

      The original question was:

      What's the best way to for a young teen to get started in exploring this wonderful world of computers and learning how to program?

      He's not looking for shortcuts, he's looking for a starting point. Back in the day, the starting point for me was an Apple ][ BASIC tutorial that animated a simple dot bouncing back and forth across the screen. Simple enough, but once I understood it, I could change it to do other things, move along the edges of the screen in a rectangle. That was the hook for me, being able to think of something original and then make the machine do it. Without that instant gratification early on, I don't know if I would stuck with it.

      The closest thing to Apple BASIC in terms of approachability these is probably Python. Visual BASIC is still a descendant of Apple BASIC, but you have to wade into Visual Studio before you can do anything with it (besides the whole not-UNIX thing).

      --
      I am not your blowing wind, I am the lightning.
    32. Re:No ShortCuts !!! by shock1970 · · Score: 1

      The best way for him to learn, as mentioned by Swizec, is for him to spend long hours behind the keyboard.

      Now... to motivate him to spend those hours behind the keyboard; ask him what interests him and find out what whets his appetite. Use this to present him with a problem in relationship to his interests. Ask him if solving this problem would be a worthwhile effort. And then just be there for him when he needs assistance.

      Now if he asks, how to do X, don't tell him how, but ask him the questions that will lead him to find the answers on his own. (I've learned this from my own mistakes!)

    33. Re:No ShortCuts !!! by Hawkeye05 · · Score: 1

      Personally i learned to program in Python, it is like instant gratification. You can see and advance your work very quickly, and it lays a great foundation for the other top-level languages. It is today what BASIC was in the mid 80's.

      --
      Http://Stineomite.org (Yeah Thats Right I'm An Organization)
    34. Re:No ShortCuts !!! by somersault · · Score: 1

      My dad showed me how to do basic text input/output when I was about 8, but while I understood how to use variable to do basic stuff like say "what is your name?", "hello ", I didn't really get going properly until a few years later when I got a BASIC games programming book (Amos BASIC on the Amiga). I'd tried one of those point'n'click programming things before that where you just draw things and plug them into the game, but I didn't do much with it because I wanted to build my own games, not just copy others with different graphics.

      I started off writing lots of little random games, like catching fruit dropping from the ceiling in a basket, snowboarding (kind of the opposite of the fruit thing, stuff flowed up from the bottom and you had to avoid it, and my ultimate achievement was a 2D platformer thing where you controlled 2 'orbs' (saved on character animation :P I had an animation for when they died but not for walking around) who tried to jump on each other's head to kill each other (like Mario and Sonic). I wanted them to be able to react realistically so they accelerated when you held down a key (at first I didn't bother to put a limit on the maximum speed so you could reach some hilarious speeds), experimented with them bouncing off the sides, going through the sides and back onto the screen etc. I think it was my idea to have them bounce off each other, but my dad told me the way to get it physically accurate (basically if 2 balls of equal mass hit each other in a 1D plane they will just swap their velocities, so I swapped their speed on the X axis when they collided, it worked really well :D ). Then I did a high score system, which was a good way to learn about basic sorting algorithms. I just used bubble sort in the end.

      Around that time my dad showed me how to do a 'Moire' screensaver style app to get me familiar with arrays and loops. I think that kind of thing would be a good early project because it gets you familiar with graphics and loops, and has an impressive looking output.

      Another thing I enjoyed a lot and could be a very fun way to get into coding is to start coding up mods for a game he likes - especially if it involves creating doing AI work. AI is a *lot* of fun - it's great to be able to display a 2D image or 3D model on screen, but it's even more fun to see it moving around and reacting to an environment in an intelligent manner :)

      One thing about coding in basic is that it does a lot of the work for you (especially things like Amos BASIC which had built in graphical editors for creating sprites and animations to use in your app). I've still never actually written a Windows GUI based program in C (though I've done a DLL for LabVIEW, some basic command line apps, and some experimentation with OpenGL for 3D and 2D graphics - see NeonHelium for some great resources), though I'm sure I could if I needed to. I used to have the mentality that I'd have to write every program from the ground up, but these days there are so many libraries easily available on the net that you don't have to get down to the basics unless you want to. Things like writing a networked app used to seem really daunting to me, but these days writing something like a simple chat client can be done in a few lines of code.

      You can teach anyone the basics of how to code, but unless you find projects that they are personally interested in, they aren't going to really get into it. That's kind of stating the obvious, but I don't get all these people who are like "start them on language x/y/z so that they get to know control structures!". The language isn't so important as the actual project they are undertaking, though admittedly basic tends to be very basic. Most languages these days seem to use C style sytax though, so it could be best to start off on one of those so that it's easier to switch between different languages. I really wouldn't recommend starting on FORTRAN as someone suggested above!

      --
      which is totally what she said
    35. Re:No ShortCuts !!! by bre_dnd · · Score: 1

      It was fast, yes. And a fabulous FORTH, that was actually usable without disks. When I still had copious amounts of free time the Ace experience got me to port CamelForth to the GameBoy, oh joy. Forth is definitely a good / better start than Basic -- if only for the "down to the bare metal" feel of it.

    36. Re:No ShortCuts !!! by somersault · · Score: 1

      I used to type in code from the Commodore 100 manual to do basic stuff like draw triangles and circles when I was about 4 or 5 :p

      I generally agree with what you are saying, it sucks when people are just being consumers and don't actually know anything about the product that they are using, but the thing is that you can't be an expert on everything (well, unless you are one of those people that spends their whole life learning and none working). People like us are interested in how a computer or the software running on it works, but others just want to use the finished product.

      I was going to make excuses for why people don't need to know how to fix things, or how it's more complex these days to fix a car and requires specialist tools, but in essence you are right. People should have to learn basic car maintenance to get a license, and also pass some kind of test to be able to use a computer ;) We'd have a lot less trouble if any idiot couldn't just go out and connect to the intarwebs.

      --
      which is totally what she said
    37. Re:No ShortCuts !!! by Floritard · · Score: 4, Insightful

      I dunno though, do many teens even like 2D side-scrollers? He probably grew up on Playstation. I was going to say go ahead and get him going on some OpenGL. NeHe's tutorials really make it pretty easy to get into. Of course he's be using C++ so maybe something easier.

      Graphics is what got me interested in programming. I remember my high school Pascal classes. Unfortunately they were pretty boring. We did do some simple EGA graphics at one point but that was really the only interesting thing we did in class, though I did end up learning the fundamentals.

      Thing was, to do anything cool you had to do all this VGA initialization stuff that was forever out of our reach at that level. Not to mention the computers were pretty obsolete even at that point.

      I know there's a lot of (mostly unreasonable) hate around here for Flash, but I'd say get him into Actionscript3. It's really easy to do graphics in without having to setup windows and rendering contexts or getting to know huge APIs. It will introduce him to object oriented programming, but won't involve pointers or memory management or any of the more esoteric aspects of something like C++. Another thing is he can easily share whatever he produces with most anyone else who has a browser. If he is at all into social networking online (all that myspace bullshit) he can make some pretty interesting stuff for his friends' pages. Using Actionscript could also lead him to branching out into other web technologies, something probably more important in today's world than ever. It also has a similar syntax to Java or C++ if he wants to go in that direction. And as far as help and tutorials, there's really one of the richest communities around Flash, being a technology that was practically born in the middle of the blogging phenomenon.

      The best thing about Actionscript is how quickly you can put something visual together and how little setup it requires. Graphics is definitely the way to go, and nothing in programming has a more immediate "wow" factor than throwing something pretty up on the screen.

    38. Re:No ShortCuts !!! by information_retrieva · · Score: 1

      Yep, if he doesn't have the drive to learn programming on his own he never will.

      IF you are suggesting that the best way to teach a youngster to program is to stimulate his drive to learn, then I agree.

      About 15 years ago, I had the opportunity to teach programming at a summer camp. I had students from ages 8-15 in the same room. Playing off of each individual's particular interests was the only way to keep them going. It also helped when they found someone their own age with similar interests.

      My suggestion: consider your primary role as providing learning opportunities by following the students lead as to what they would see as an opportunity.

      Examples: I was having trouble getting one 8-year old girl interested in any of the things the other kids had latched onto. Then she asked if she could use the big kids computers. (she had an Apple II, the big kids were using PCs) I set her up with a word processor on the pc and let her write a letter to her parents, then I showed her how to print it. She was so excited, she went back to her computer and started trying to get it to do things.

      With the older kids, they all just wanted to play games all day. So I wrote a small stock market simulator for them to play, and when they go bored with it (didn't take long), I challenged them to modify it. I offered a few suggestions, and they ran with it.

      In both cases, once they were driving the process, it was easy to sneak some real skills in to their learning process.

      Good luck!

    39. Re:No ShortCuts !!! by D+Ninja · · Score: 1

      So no, if he doesn't have the drive to learn and problem solve he's better off outside playing with a ball ... or girls since he's a teen.

      Hmmm...yes. He is getting into programming, but he's not so far gone yet that this mysterious "girls" is totally out of his reach.

    40. Re:No ShortCuts !!! by SirLurksAlot · · Score: 1

      Don't get me wrong, I'm not saying that there's anything wrong with any of those jobs, but let's face it - they're not exactly riveting, and yet we are the mad ones...

      I understand what you're trying to say, but keep in mind that a lot of people don't do their jobs because they're looking for a challenge or because their jobs are all that interesting. Most folks work so they can provide for their families (or themselves as the case may be), and if they make enough to get by or maybe even get ahead they're mostly happy. Just as you said, there is absolutely nothing wrong with this, it's just the way a lot of people see work.

      I worked in retail for quite a long time before having the opportunity to work as a developer, and a great many of the people I worked with were satisfied with what they were doing. A number of them were very intelligent and had degrees in a variety of fields (I knew a guy who had an engineering degree who pushed carts and chucked mulch all day and wouldn't give it up for the world.) and when I asked them what in the world they were doing there the most common answer I got back was they enjoyed the work and didn't miss the stress.

      I guess the bottom line is to each his own, and for a lot of "us" that means doing something we find challenging.

      --
      God, schmod. I want my monkey man!
    41. Re:No ShortCuts !!! by chaim79 · · Score: 1

      I agree with using the Python language for a different reason.

      Python has a built-in interpreter so you can test out code pretty much as-you-type. It really makes things easy to figure out and learn when I can type something in, test it, type it in with a modification, test it, etc. until I get it the way I want it.

      Once he gets the hang of it, you can steer him towards creating new functionality for Python using C (which much of Python relies on). That will allow him to transition from OO language (Python) to a Non-OO Language (C) and use them together.

      --
      DEMETRIUS: Villain, what hast thou done?
      AARON: Villain, I have done thy mother.
      Shakespeare invents 'your mom'
    42. Re:No ShortCuts !!! by Orkie · · Score: 1

      Well I *am* a teenager, and I have both written video games and done some kernel hacking. As such, I do see it as writing off, and quite insulting to boot.

    43. Re:No ShortCuts !!! by LWATCDR · · Score: 1

      I would suggest Squeak.
      It is a great environment to learn programing in. If you want something a little more main stream then I would suggest the unpopular on Slashdot language of Java.
      To do anything graphical using Python you have to use some odd library that really isn't part of the language. Python is a great scripting language and I have seen some great graphical programs written in it but I question if it is a good choice to get a teen interested.
      Java isn't the terrible pig that everybody on slashdot makes it out to be. some of big advantages of Java for a beginner are.
      Great free tools. NetBeans and Eclipse.org are really nice IDEs.
      Great professionally written tutorials. Just do a Google on jlist tutorial or Swing tutorial and you will find a good comprehensive tutorial online.
      And Great online documentation.

      Add that Java is now well on it's way to being complete GPL and that it is available for many platforms and I think it really is a good choice.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    44. Re:No ShortCuts !!! by GeffDE · · Score: 1

      Something that only the parent has even mentioned about in this thread is "problem solving." Problem solving is the crux of programming, and focusing on giving him interesting challenges to solve (instead of on what language) will really get him hooked.

      I first "programmed" a TI-82 graphing calculator in middle school so that the calculator would basically do all the boring repetitive math assignments doled out like Oliver Twist's dinner. When I got to high school, I took intro computer science classes that were taught in C++. At university, low-level programming classes were taught with Java or Python. The only thing my programming education at various levels had in common was that there was a problem to solve.

      Teaching problem solving (regardless of what language it is in, or if it is even in a code language) is fundamental to teaching programming. The other aspect of programming that might interest a teenager is learning how a computer works and how the different parts fit together and integrate to do a job. Teaching him C would then help him understand how a computer works.

      --
      It has been a nervous year, with people beginning to feel like Christian Scientists with appendicitis.
    45. Re:No ShortCuts !!! by DahGhostfacedFiddlah · · Score: 1

      Absolutely - nothing gets a kid fired up like parsing text, or calculating Fibonacci numbers. </sarcasm>

      Seriously, great post, but my number one suggestion would be to let the kid decide what projects to take on. Show him the low-hanging fruit first, like keyboard input, text output, and drawing simple shapes on the screen, and let him come up with his own projects. For a beginner nowadays, Flash w/Actionscript might actually be the best choice, because of the instant gratification.

      I don't know if my experiences are typical, but at that age, I wanted to be able to do things quickly, and do them "my way".

      I wouldn't hand-hold too much either - let him make his mistakes. I think I appreciated the stately Array far better after writing a game with variables "item1", "item2" ... "item20", than I would have if someone had told me "just use this, it's easier".

    46. Re:No ShortCuts !!! by gfxguy · · Score: 2, Interesting

      I don't know about, but agree with the graphics aspect... I got into computing first because I was into games. I stayed with graphics all the way through and work for a post production company writing tools and utilities... not exactly graphics, but I do get to write plugins and scripts for Maya and other high end apps.

      Anyway, I was pretty much self-taught BASIC on my Atari, but BASIC was just too slow to do any cool graphics, so I started teaching myself assembly language.

      I don't advocate having a young person teach themselves assembly language, but it gave me the kind of knowledge about how computers really work, what's going on at that lowest level, how memory is used, what a stack is, pointers, everything... you don't have to become an ace assembly language programmer, but it's a great introduction to how things work at a really low level.

      By the time I was in college, I was writing graphics libraries in assembly language to use with Turbo-C++; I was writing that VGA setup code, I figured out how to do real memory mapped scrolling (and was even listed in the graphics FAQ for a time, along with my code).

      Now I don't touch assembly language anymore, but I think when someone understands everything that's going on, they can gain a much better grasp of what's going on - they understand memory management better, they understand the limitations of the machine, they can learn about cache... I really think the people I've known that had that low level experience actually learned how to structure high level code better.

      It can even go in parallel... here's the C++ code for "Hello World," and here's how you'd do it in assemble language.

      If they can grasp that, then explaining byte-code languages becomes even easier...

      I know a lot of people would think this is like learning how to build a car before learning how to drive one, but I don't think it's a good analogy; but it is true that in many places in the world, some basic maintenance skills and understanding of how the car works are crucial to getting a license to drive.

      When using the high level language and a library like OpenGL, it becomes important (IMO) for them to know what OpenGL is doing; it's important to know what different types of shading are, the difference between indexed and RGB (or other colorspaces), the basic algorithm for drawing a line (again, I implemented things like this in assembly because, at the time, computers were just too slow... not necessary now, but a grasp of the algorithm is beneficial, IMO), matrices and how to calculate rotations... if you understand what OpenGL is doing, it becomes a lot easier in the long run.

      --
      Stupid sexy Flanders.
    47. Re:No ShortCuts !!! by mikael · · Score: 1

      For most people programming is a long road of breaking your head against a problem until it gets solved. Long hours spent tapping away at the keyboard and honestly "normal" people think we're all out of our minds.

      I started learning BASIC programming at the same time as learning high-school mathematics and physics. It was fun being able to take the algorithm used to solve a particular problem (polynomials, combinations/permutations, projectiles/acceleration/velocity) and write a little program that would take in the parameters,calculate then display the results or draw a graph. Then the process was repeated using C and C++.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    48. Re:No ShortCuts !!! by Nigel+Stepp · · Score: 1

      Careful now. If that's the hobbit it might be, and given the low uid it's quite possible, you should show some respect! :)

      --
      4096R/EF7BAFA6 79E1 DF98 D09D 898F 9A11 F6F0 DDDC 23FA EF7B AFA6
    49. Re:No ShortCuts !!! by FishWithAHammer · · Score: 1

      I like PHP and I think you're crazy. Start with relatively clean languages--these days I lean toward C# as a starting-language-of-choice due to its astonishingly clean design, but for those who have knee-jerk fears of Microsoft, Python's fine too--and then move to horrible Frankensteins like PHP later.

      --
      "You can either have software quality or you can have pointer arithmetic, but you cannot have both at the same time."
    50. Re:No ShortCuts !!! by snilloc · · Score: 1

      Could you suggest a good resource for learning Python? I tried some to teach myself with limited success. Most of the online resources start very very slow and then make some quantum leap that loses me. Necessity being the mother of invention, I've only managed to make a few quick scripts to generate some basic html that I needed for personal use. Which gui kit would you recommend?

    51. Re:No ShortCuts !!! by Culture20 · · Score: 3, Insightful

      driving a truck, or waiting on tables, or shuffling paper, or laying bricks [...] they're not exactly riveting

      Laying bricks is close (both construction), but nothing is as riveting as... riveting.

    52. Re:No ShortCuts !!! by h4rm0ny · · Score: 5, Insightful


      There's a lot of very good advice here, but the most important of all is to listen to your son closely to see what interests him. For me, prodding away, I had a fascination with memory storage. Arrays in particular stunned me with their beauty and the first programs that I really applied myself to writing were strategy games that were at heart nothing more than 2D arrays that stored types of units, resources etc. Of course the units themselves were arrays. I might have been an odd child, but the thought of all those numbers lined up and structured absolutely thrilled me. Who knows what will really grab your son's attention? Well, actually, only your son does, which is why he most of all, is the one you should listen to.

      You don't have to be a great teacher when the pupil is interested. Just try to learn to answer questions at the right sort of level of detail. That's 90% of it when you think about it, it really is.

      --

      Aide-toi, le Ciel t'aidera - Jeanne D'Arc.
    53. Re:No ShortCuts !!! by ottothecow · · Score: 1
      For me it was TI basic on a TI-83+ graphing calculator. It has a nice, functional language and can be used anywhere--like when bored in class (better he learns to program in a too-easy math class than absolutely nothing). It may help that I got the calculator before I got a link cable (so no easy loading of games from a computer) and I was on vacation for christmas. This made me go through the manual and I still remember following the instructions in the book to enter in the sierpinsky triangle program (as an aside, remembering the mess of a program this became was what made me admire the beauty of scheme the first time I saw a recursive object style implementation). There were probably some other good programs in the book along with great programming reference (and nowdays they have an App I think that gives you help/syntax for every function).

      The language is somewhat limited but there are some fun things you can do...here are some I tried:
      -Simple menu/input interaction: "Enter your name" "[name] SUCKS!" to simple menu driven adventures/stories (or you may remeber the DrugWars trading game...subject matter might not be appealing but it is a good example")
      -Input gathering: This is where you start to need to learn loops and conditionals. Once you can loop a getkey and respond to the arrow keys, it is trivial to make an X move around the screen with output(). From there you could make a tunnel sort of game (slow of course in basic and ugly compared to the ASM games but still fun to make). Due to the volatility of non-archive memory on these calculators, I reprogrammed little snippets like this quite often for different uses.
      -Display manipulation: My personal favorite program I ever wrote on the calculator (and rewrote as with above) was a text-enlarger. It would take two inputs, a string of up to 4 chars and then a single char (to be used as the "pixel" for the large word). The graph display would then have to be initialized and cleared (save the state of the functions but turn them off, turn off axis, etc) and then I would use the text function to write the word onto the screen (the text on the graph screen is smaller than the calculator screen). The pixel test function would then loop throug the rectangle containing those four letters and store the result (on/off) into a matrix. Upon completion, I would clear home and then use output to map the matrix to the text-grid of the home screen--printing the chosen character for every pixel that was on and a space for every pixel that was off, giving a word that takes up the whole screen. The idea wasn't mine but the implementation was all self-taught during some sort of class. Also on the topic of display manipulation, I always made a lot of little programs that made random writes to the graph screen sort of like a screen saver (random dots appearing, random lines being drawn, etc).

      It's not a perfect platform but it can be easily carried around and allow for quick programming (I even wrote programs in math class when it would be faster than doing repetetive work).

      --
      Bottles.
    54. Re:No ShortCuts !!! by Hawkeye05 · · Score: 1

      Well, i actually learned through school, i'm going to school for an A.A.S in Network Administration and one of the requirements was a fundamentals of programming class. I don't plan on becoming a programmer but its good to have a general skill set just in case you need to streamline something. I had experience with HTML from years before, and Bash scripting experience so the next logical step was python. I just use the IDLE interface and its quite simple and helpful, but for me at least the most help was in class with the theory behind it, the practice came quite easily.

      --
      Http://Stineomite.org (Yeah Thats Right I'm An Organization)
    55. Re:No ShortCuts !!! by bigstrat2003 · · Score: 1

      ...but in essence you are right. People should have to learn basic car maintenance to get a license, and also pass some kind of test to be able to use a computer ;).

      No, he isn't right. People shouldn't have to learn basic car maintenance to operate a car. You don't actually need to know how to change your oil to operate your car safely. With a computer, yes, people should be more educated about it (considering the stuff the average Joe does to their computer is a bit like me putting diesel in my gasoline car and wondering why it breaks), but again, should not be required to know how to fix it.

      It's just stupid to expect everyone to learn about everything that interacts with their life. I don't know the first thing about building a bridge, should I be expected to learn that before I drive over any more bridges?

      --
      "16MB (fuck off, MiB fascists)" - The Mighty Buzzard
    56. Re:No ShortCuts !!! by warhammerkid · · Score: 1

      I agree with the parent. I started programming in Perl, solving little 30 minute problems from a local programming competition. Things like processing an input file for interesting data, writing algorithms for interesting math rules, and even implementing a game or two. The best thing a budding programmer can do is learn how to program. Whatever language they end up doing their programming in shouldn't matter, because once you know how to program, switching languages is easy. Personally, I would recommend Python as the best starting language because it's highly object-oriented, but if you know C/C++ teaching Perl might be easier.

    57. Re:No ShortCuts !!! by bigstrat2003 · · Score: 1

      You're taking it just a bit too personally. No one is saying teenagers can't program well. What we are saying is that complex projects like games or OS kernels are terrible for beginners. This dude needs to get into something more manageable first, and then into more complex things if he wants to. The only reason his dad should point him at really complex projects is if that's all he's interested in programming.

      --
      "16MB (fuck off, MiB fascists)" - The Mighty Buzzard
    58. Re:No ShortCuts !!! by MarkScott65 · · Score: 1

      Agreed, Python is the way to go for teenagers. The book Python for the Absolute Beginner is a great text to begin with.

    59. Re:No ShortCuts !!! by billcopc · · Score: 1

      That sounds a lot like my evolution, only I did a bit of sound processing/synthesis in parallel with game development. I was never much good at 3D math, so I did a crapload of 2D games with exotic sound engines and real-time music (MOD/S3M on steroids, basically).

      Assembly language was probably the most "fun" I've ever had programming, to this day! Just like some geeks like micromanagement sims like Civ and MOO, I like to micromanage technology. There's something selfishly gratifying about writing a Tetris clone in 256 bytes, or a tight graphics/sound rendering loop... I remember writing (once) code that executed forwards AND backwards, i.e. the instruction pointer would decrement, which required insane planning of the bytecode, choosing and ordering data values to coincide with valid opcodes, but for some reason I can't find or remember the opcode to reverse execution - maybe it was on a different architecture.

      Perhaps the worst thing about assembly language, is it shows you just how sloppy today's software has become. Even a quad-core beast spends most of its time revving up the code equivalent of "umm... well... y'know... umm... sort of... like...", and we have modern programmers to thank for that.

      --
      -Billco, Fnarg.com
    60. Re:No ShortCuts !!! by Hasmanean · · Score: 1

      Freeman Dyson wrote something similar about the school system in the 19th century. Back they taught all kinds of Greek and Latin, but they never produced any G or L poets. Predictably, most students hated the subjects and studied math and science as a form of rebellion. So the Brits produced many 1st class scientists during that time.

      In the latter half of this century, schools started emphasizing math and science in their curriculum. But all most young people seem to want do is play music.

      Following that thinking, you could force your kid to do some integrals and computations by hand, then let him obliquely "discover" how much easier a computer makes it. That's how I got into programming, in the early 1990s...through my interest in scientific computation and simulations. The way to do it today would be to get him interested in something like photography or audio/video processing, get him some hackable hardware, teach him about signal processing and filters, and wait until he finds some application which the standard tool won't let him build. Then get him to program it for himself. The rest will come by itself.

      My prediction for the school system is, that once they start emphasizing music in their curricula, and the mainstream gets involved with it, all the other kids will rebel by becoming serious bloggers.

      --
      Hasan
    61. Re:No ShortCuts !!! by somersault · · Score: 1

      Sure you can 'operate' a car without a license. But if you don't know how to fill up the washer fluid or check the oil then you're either going to have to clean the screen by hand, or your engine will get damaged and cause more scrap or increased emissions, etc. When I did my CBT (compulsory basic training) for riding a motorbike in the UK we were taught how to check our oil and oil our chains, etc, because it's pretty important. I'd rather I was taught the same with cars rather than just driving around not realising that I was eating up oil that needed replacing. I once bought a car and the day after I got it the 'check engine' light came on because the oil was so low. Obviously I was a moron for trusting the guy that sold me the car in the first place (he'd done some work on the engine, I thought he'd have looked after it), but I should have probably checked the oil myself as well as Honda engines tend to eat oil pretty quickly when in VTEC. Regular servicing does take care of refilling fluids I think, but if you discover your car is leaking oil and you're stuck out in the middle of nowhere then you may need to top it up to get back to civilisation (or you could just call a rescue service of course, but that costs a lot of money).

      I wasn't talking about people fixing their computers at all actually, I was thinking more along the lines of the idiots that fall for spam and trojans and make the whole computer idiot-proof-security and malware industries viable in the first place.

      I agree that everyone doesn't need to know everything, and it was actually going to be part of my point in the GP, but a certain level of basic education for things like cars and computers would make the world a better place. Preventative maintenance and sensible usage is generally better than having to fix stuff (says the guy that went through something like 6 tyres in a month :p )

      --
      which is totally what she said
    62. Re:No ShortCuts !!! by dwiget001 · · Score: 1

      I taught myself on this route: Learned HTML and then taught myself JavaScript (you code, load up the page, see the result almost instantly). Taught myself the C programming language. Starting some Java now. JavaScript got my mind wrapped around variables, functions and the like. For C, had to dig a bit deeper into how a computer works, great learning experience, used C Primer Plus book. I actually tried to code some Java after JavaScript. That was a bit steep, needed some more programming basics, which learning C provided. Java is going much easier now with C under my belt. I have also, since starting Java, dabbled a bit with C++ and will be learning it next.

    63. Re:No ShortCuts !!! by masdog · · Score: 1

      Why? Because you're the exception to the rule or further along than most people in your age bracket?

    64. Re:No ShortCuts !!! by AmaDaden · · Score: 2, Interesting

      Java is a great language to get started in. Just about anything that you want to do you can do in Java. It might not be best when written in Java but it can be done. I started programing in QBasic moved on to VB and then C/C++ but I only got sucked in to it once I started with Java. It's also the top language out right now so it's very practical.

      More important then the language is that you figure out what he likes about programing. Keep his interest alive. I started coding when I was 10 but around the age of 14 I almost entirely stopped. I lost my drive. I was using mostly VB at the time and it was just too much of a pain in the ass and I had nothing to really show for it. Additionally I got to the point where I could not learn anything else about the computer when using Windows. Yet I was not able to jump in to Linux because 1)I knew too little about it 2) I had no one to show me the way. I basically got stuck until I got to college.

      So basically keep his drive alive by...
      1)Let him pick the projects and just grease the wheels. "Oh you want to do X? learn language Y." "Let me see if I can help you with that bug." He might not be at all interested in the same things you are and there is nothing wrong with that.
      2)Give him the guidance he needs but don't force him in to anything.
      3)Don't be afraid to learn something new so you can help him with it. It is far easier for you to learn something new then for him, you already know programmer speak.
      4) On the topic of programmer speak show him Slashdot or Digg or something like that. Programmers have started there own culture in these places that he might be interested in seeing. Digg might be best for him for now but once he learns more Slashdot is likely to be more his speed.
      5) Be a mentor not a coach. Just make sure he is not going to any dead ends like Visual Studio or Windows. You can only learn so much about them before you are not allowed to learn any more.
      6)It sounds cheesy but be proud of him. Getting started in this is a lot of time that he could be using to hang out with his friends or play games. It's hard to keep going when your not getting anywhere yet AND no one is impressed with how hard you are trying. Just don't embarrass the kid by telling EVERYONE you meet "Little johnny just started programming!"

    65. Re:No ShortCuts !!! by Firehed · · Score: 1

      That's not "writing them off", that's being realistic.

      It damn well is not. I was doing plenty of fairly low-level C code around age 14. Of course I'm probably the exception to the rule, but age is FAR less important than simply being interested enough to try.

      --
      How are sites slashdotted when nobody reads TFAs?
    66. Re:No ShortCuts !!! by Firehed · · Score: 1

      I've got to agree there, as a long-time PHP programmer. It's easy as hell to learn, and as such it's also easy as hell to pick up on the bad practices that so many PHP programmers follow (mysql_query("SELECT * FROM {$_GET['tablename']}"); you say? Oh why not, it couldn't hurt...), not to mention the typical insane and inconsistent function names and parameters. I love it as a language for its ease of use and flexibility when creating web apps, but the sheer number of inconsistencies make it a terrible first language.

      I first started with HTML (around age 11 or 12?) and within a year was doing all sorts of custom work for my C-based MUD. I do almost all of my work in OO PHP/MySQL/HTML/CSS/JS these days (despite working for a .NET company, so I at least have some vague VB/C# familiarity). Of course HTML when I was learning it was a much simpler, much uglier thing, and probably gave me as many bad practices as customizing phpBB installs, but now we have these magical validators to make sure you're not screwing things up too badly on the web front. For a starter, it's not too bad of a set to get working with, though ignoring PHP and JS at first might be best to start. And of course once you're past that, there's the whole procedural/OO thing in PHP (there are enough JS libraries available these days that it barely matters).

      --
      How are sites slashdotted when nobody reads TFAs?
    67. Re:No ShortCuts !!! by CrazedSanity · · Score: 1

      First, let me give the disclaimer: I'm a PHP programmer.

      If you let the kid program in PHP, or some other web-related language, be sure to teach him that mixing HTML in with the code is bad. It's okay to start out with, for cutting his teeth or whatever, but make sure he knows not to keep doing it. Otherwise, we'll have another code monkey that writes nigh-unreadable code... and might think it's actually good.

      Object-oriented code is very important. Structure is more important. If you're going the way of PHP and building dynamic webpages or whatever use (here comes the shameless plug) a templating system/framework.

      --
      Sanity is like a condom: rather have it and not need it, than need it and not have it.
    68. Re:No ShortCuts !!! by Bloodoflethe · · Score: 1

      Come on, this was funnier that that +2.

      --
      "Little is much when little you need."
    69. Re:No ShortCuts !!! by Achoi77 · · Score: 1

      hear hear! I remember doing the same exact thing with my TI-81 back in highschool. I also remember that sucker having very little memory, so I had to really think of ways to really keep my code tiny while getting the functionality I wanted - up untill I get a TI-82 (which had a lot more memory).

      I remember writing all kinds of random games - games like space invaders, to racing games to arkanoid type games. And I remember writing them over and over every time I replaced the battery since my backup battery was dead. That actually helped me get into the habit of thinking ahead, trying to remember what the hell I did, and see if I can code it 'just a little better.' Or use a different approach and see the outcome.

      Wow, I had a lot of time on my hands when I was younger. Ahh those were the days!

    70. Re:No ShortCuts !!! by SocioDude · · Score: 1

      It's also the case that what is "riveting" is in the eye of the beholder. My brother thinks I have the most boring job in the world "sitting at a desk all day, typing away". He's a chef, and he absolutely loves it.

      I can see how people would shuffle paper, lay bricks, or drive a truck and still call us mad for enjoying programming.

    71. Re:No ShortCuts !!! by http · · Score: 1
      Look, I'm all for mandating readability (some scripts i've had to debug at work seem to be commented in Pure Acronymic Goo), but can we settle this once and for all? Forcing the indentation to (1) a fixed value of (2) two spaces was a dumb move.

      (1) A possible way around this would have been to have an internal variable indicating the preferred number of spaces or tabs (think PERL's assignable record and word separators, $/ and $: ), but then you have to get everyone's editor and the python interpreter communicating with each other in some standardized way.
      (2)It's been a while since I was in college, but I recall that the issue of indent spacing has been studied with values from one to eight: all other things being equal, four space indent results in the least errors per LOC.

      OK, now I get to spend the day dodging flames. brb, got an asbestos tie in my closet.

      --
      If opportunity came disguised as temptation, one knock would be enough.
      3^2 * 67^1 * 977^1
    72. Re:No ShortCuts !!! by kesuki · · Score: 1

      my parents did try to get me interested in technology, and programming.

      they got one of the few coleco vision adam systems, with logo, i played around with logo, but mostly i just played the video games...

      then they got a 286 computer, and my dad brought home a disc full of basic games, i spent about 12 hours debugging a 'buggy' basic game, using the 10lbs manual that came with a 286, and the dot-matrix printer to print out the code, to look for bugs... but again, i lost interest. the point?

      if you focus solely on coding, and the kid doesn't keep a high level of interest, perhaps it's time to try other hobbies, so they don't waste all their free time in front of a tv or playing games.

      in my case, from my perspective, i realize that the reason i had so many problems as a child, was due to early symptoms of mental illness... I have never genuinely gotten interest in programming, although for a while i coded IRC bots of my own design...

      if you've tried to get your child interested in things, and you keep on epic fail, it might be time to consider if they might have developed a mental illness of some type.

    73. Re:No ShortCuts !!! by dreemernj · · Score: 1

      QBasic was the first language I used to actually make things that seemed complete. I used some other versions of Basic before it but I basically just did short math problems and maybe a loop or two. QBasic is when I triumphantly created pong and breakout clones. I was so proud. They were crap, don't get me wrong, but the fact that I made them myself was the sort of accomplishment that led me to continue programming.

      QBasic was an easy language to get into but I think one of the things that helped me out with it was I could easily figure out what command I wanted to use and how I wanted to use it with it's built in help file. The thing that kept me away from a couple other languages at the time was this was before I had internet access, before anyone I knew had internet access actually, and my library didn't have programming books. So without that helpfile I would have quite literally had nothing.

      That leads me to believe a solid, easily accessible method to learn about the language is definately key. If it is a support structure that a young teen can be taught to navigate on his or her own, it will be that much better and that future programmer will have a much better time trying to get things done.

      --
      1 (short ton / firkin) = 89.1432354 slugs / keg
    74. Re:No ShortCuts !!! by nuttycom · · Score: 1

      Starting on OpenGL? That sounds painful.

      The key to getting kids interested in programming is for them to realize how much fun it can be. For me, creating simple games and then brainstorming and implementing tons of interesting rules variants and playtesting the games with friends was key to this enjoyment. The most fun thing about programming is that it's fundamentally a creative activity. Whatever language is chosen should make it easy to be creative, without having to get bogged down in issues of design, language internals, and deployment packaging at first. I think that the grandparent's suggestion of ActionScript is pretty good in this regard, with the exception of the deployment packaging issue.

      The thing with complicated graphics is that the amount of effort required to do something eye-pleasing is pretty high. The amount of effort required to hack together a game with a simple GUI in Python is pretty minimal - even an outright beginner to programming can get something interesting working in a few days.

      C++ would probably be the WORST language that one could possibly use to introduce someone to programming. Kids should learn to cut wood with a hand saw before being handed the power tools, you know?

    75. Re:No ShortCuts !!! by p0tat03 · · Score: 1

      And then most of them go back to driving a truck, or waiting on tables, or shuffling paper, or laying bricks or

      ... business majors with fast-track MBAs who end up managing coders? Marketing folk who make more in a year that I can hope for in 5? Financial analysts who shnoz with the best and charge romantic dinners to their company?

      None of those seem really THAT bad...

    76. Re:No ShortCuts !!! by Nigel+Stepp · · Score: 1

      There's a famous person named hobbit.

      --
      4096R/EF7BAFA6 79E1 DF98 D09D 898F 9A11 F6F0 DDDC 23FA EF7B AFA6
    77. Re:No ShortCuts !!! by nuttycom · · Score: 1

      I love Java. I use it every day. But I would never recommend it as a good beginner language.

      Object Oriented programming is powerful, elegant, and introduces a huge amount of learning overhead for somebody who's just starting out. The main component of this overhead is that for a beginner, figuring out what the boundaries of objects should be and what responsibilities each class should have is a real headache. While there may be lots of tutorials out there, I'd hardly consider Swing to be a beginner-friendly toolkit - it's rife with inconsistent naming and figuring out when all the callbacks are executed can be a serious hassle even if you know what you're doing.

    78. Re:No ShortCuts !!! by default+luser · · Score: 1

      Yeah, I did the same thing. I made programs to solve all sorts of problems from class on my TI-82, usually while sitting there in class.

      Further, some of my games made use of stuff from said classes. The Scorched Earth clone I made used randomized trig curves to build maps, and of course I used the ballstic parabola equation to plot the trajectory of the shots. I did this all with TIBASIC, and although it was slow, it was playable.

      If I were to make a recommendation, I'd say get him a TI-89. It has much more horsepower than my TI-82, so you can do more in real-time than my old TI-82. It will also last him through college if he takes a technical road. BUT: you will need to help him get started, show him some of the more interesting aspects, and help him write a few of his first programs.

      --

      Man is the animal that laughs.
      And occasionally whores for Karma.

    79. Re:No ShortCuts !!! by Doctor+Faustus · · Score: 1

      Best bumper sticker I ever saw:
      "Tired of screwing? Try riveting!"

    80. Re:No ShortCuts !!! by OwnedByTwoCats · · Score: 1

      I won a scholarship, partly by defending the BASIC programming language. It was the only one I knew, so I had to defend it.

      Anyway, I started with BASIC on a DEC-10 at age 14, and then Applesoft BASIC on an Apple II. With graphics.

    81. Re:No ShortCuts !!! by Macman408 · · Score: 1

      I agree - find something that is particularly interesting for your son. In my case, I really learned programming in 9th grade. I had a TI-85 calculator, so I wrote several programs in TI-BASIC related to what I was learning in my math class at the time. I found it enjoyable because writing the program meant that I didn't have to do all the repetitive work in the homework assignments - I could plug the numbers into my program, and it would give me an answer. The teachers didn't mind, since they figured that if could write a program, I easily could do the same thing by hand.

      The biggest benefit was several years later, when I wrote a program to calculate Riemann Sums (a way to approximate an integral). It would let the user input a function, an interval to calculate over, and the number of subdivisions to use. The user could choose left, right, middle, or trapezoidal approximation. It would even graph the function and show the areas used for the calculation. It was a fairly useful little program for one particular chapter of my math book - but even better, my teacher loved it. In exchange for giving her the code for the program, she gave me a perfect score on that chapter's test. There's no better reward for a kid than getting to skip out of a test!

    82. Re:No ShortCuts !!! by TheoMurpse · · Score: 1

      Anecdotal evidence doesn't prove anything. I was programming when I was 4. That doesn't change the fact that, "4 year olds are interested in Spongebob and mud, not writing BASIC code," is a non-offensive and correct statement.

      If you required every statement made to have all stereotypes stripped away from it, there would be almost nothing we could say about the real world. It would strip us of almost all of physics, chemistry, and biology, seeing as how they are all incomplete models of their particular targets of study.

    83. Re:No ShortCuts !!! by Machtyn · · Score: 1

      I really should look into PERL and Python at some point. My favorite scripting type language is Tcl/Tk. Great language for proto-typing and doing a lot of cool stuff. Not only that, but the wish shell they provide allows you to make modifications on-the-fly. Then, when he finds there is something he'd like to extend or add in to Tcl or Tk, he can compile some C or C++ code as a dll, or whatever, and add it to the tcl language.

      As an example, without much formal training at the time, I took a PCI I/O board and started writing the C routines to allow Tcl to interface with it. It was fun, I learned a lot.

    84. Re:No ShortCuts !!! by TheoMurpse · · Score: 1

      Agreed. Here's PHP in a nutshell (and I use it for all web-based stuff I do):

      here_i_use_underscores(hereIUseCamelCase(hereiusenothing($string)));

      ARGH! The developers never seem to have decided upon a library function naming scheme.

    85. Re:No ShortCuts !!! by ottothecow · · Score: 1
      No offence as I know there are people who love it but getting some kid into programming in this day should probably not involve too much assembly.

      x86 isn't the prettiest architechture to write for and it certainly doesn't have the easily available resources that a higher level language has available (or even 68k/z80). My experiance with assembly comes after C (so I already had an understanding of pointers) and I can say with a reasonable ammount of certainty that if somebody had tried to make me start off with machine instructions, I would not have been interested. It was much more engaging to see how code is translated into assembly once you already know about the mechanics of programming...gives you a better reference to what the jump instructions or the comparisons are actually accomplishing in the greater scheme of the program.

      --
      Bottles.
    86. Re:No ShortCuts !!! by hobbit · · Score: 1

      Python does not mandate a particular number of spaces. You can even use a different number of spaces for different blocks in the same file, which I'm not convinced is a good idea. The worst idea of all, in my opinion, was allowing tabs to be used as syntactic whitespace. Every text editor with a fixed-width font renders spaces equivalently, but tabs are a can of worms.

      --
      "Wise men talk because they have something to say; fools, because they have to say something" - Plato
    87. Re:No ShortCuts !!! by ottothecow · · Score: 1
      Ooh I forgot to mention that in my post above (where I talked about learning basic on TI-graphing calculators)...

      mIRC scripting was a very early attempt at coding for me. The code is interpreted so no worries about compiling and it is very easy to pick up. I had gathered some collection of mirc scripts and at some point I didnt like how one behaved so I started to change it. Testing thigns like triggered responses is very easy but still develops a way to code things. My scripts/bots never got too complex..probably the most complex thing I got use of was a bot that listened in its channels for the password to a private channel (for a planetarion alliance). If someone said the password (such as a typoed /join), the bot would immediately change to a randomly generated password, log the occurance and who was at fault, and FTP a text file containing that password to a server so that our internal website would always display the current password... Of course that was all useless as soon as the chan/nickserv type bot on the network started supporting a viable user-level management system to autoinvite members.

      --
      Bottles.
    88. Re:No ShortCuts !!! by hobbit · · Score: 1

      I am not that person. He stole my nick ;)

      Besides, it was a gentle pun, not a disrespectful sleight!

      --
      "Wise men talk because they have something to say; fools, because they have to say something" - Plato
    89. Re:No ShortCuts !!! by kriyasurfer · · Score: 1

      I've been training in martial arts for about four years now, all of which as an adult. I've always been interested in how to structure learning. The martial arts training I've learned was always layered, starting from the very basics, and working your way up. This was explicitly pointed out to me after reading Josh Waitzkin's Art of Learning -- though it doesn't talk about teaching programming, it talks about the learning process in general.

      Many of the programming conventions were developed for good reasons to solve a particularly painful problem. If you just teach the conventions, it will not make sense without putting it in context. The student has to feel the pain and frustration first before you show how the convention will solve his problems.

      This is a rant I wrote a while back on my blog:

      If some eager kid wanted to learn programming from me, this would be the sequence I would teach him in:

      1. Input/Output. The most basic function of a computer is to take an input, transform it in some way, and then spit out an output. Therefore, the basics for learning computer programming is playing with inputs and outputs. We'd start off simple by using a command line, and then printing out stuff. We'd work on all the major ways people receive inputs -- keyboard, flat-text files, CSV files, binary files, mouse, network sockets, HTTP, microphone, etc. Next, all the different outputs: text prompt, text files, lots more files, network sockets, HTTP, audio device, graphics (taste some bit of SDL, OpenGL, etc).

      Just like in martial arts, the next step is combination. Keyboard + files. Mouse + graphics. Network sockets + audio. There's enough instant gratification to keep a newbie happy. There's lots of toys you can create just playing with this stuff. You can visualize datasets. You can crunch some numbers. Now, at some point, the newbie will realize that he wants to make his toys more sophisticated, more interactive. That leads to the next stage.

      2. Flow control. The next basic building block is IF-THEN-ELSE, and all of its variations such as GOTO and loop statements. At this stage, it is more than OK to let the newbie play with GOTO statements and write speghetti code. Telling him to write structured code is like telling a kid not to touch the stove. He won't learn until he gets burned. The trick is to encourage him to make more and more sophisticated toys, challenging him until the flow logic gets so complex and tricky that he comes to you begging for help. This is key. If the newbie is incredibly intelligent, you had better find something convoluted enough to confuse him. The easiest way to do this is to give him something that would be very easy if he moduralized things as procedural calls, but difficult because he has to copy-and-paste things together. This is usually when you turn a toy into a game (a toy is just an interaction; a game has a goal). When he begs you for an easier way to do this, introduce the next stage.

      3. Structured Programming. Here, the newbie learns all about procedure and function calls. Introduce the idea of writing libraries that works across applications. (Now, see here all your toys and games have similar functionalities? Try this ... ). Show how all the Input/Output stuff he learned in Stage 1 were actually library calls. Introduce the idea of recursion. Introduce the idea of Unit Testing (the idea of writing and testing things in small chunks).

      Now, he is mastering the idea of calling things and passing by value. He'll start using less and less global variables, but he should start getting frustrated with his data being unstructured. At some point, introduce a problem that requires the use of pointers and dynamic allocation. For example, loading and saving game maps. This leads to the next stage.

      4. Data structures. Introduce pointers. Then memory alloc

    90. Re:No ShortCuts !!! by kriyasurfer · · Score: 1

      Addendum: I wrote this in a rant as a response to someone who said he didn't think it matters whether a newbie learns OOP first or Data structures/Algorithms first. I thought the sequence matter. That's why I suggested Ruby/Smalltalk, more for the OOP. Obviously, if you are teaching *general* programming practices, it would be better to use a language *you* can teach, even switch up the language from stage to stage. The point is to teach a solid foundation of skills that is applicable to any programming language, so that the student knows what is under the hood.

    91. Re:No ShortCuts !!! by martinw89 · · Score: 1

      Crap, I'm a little late in the game but a lot of the things you mentioned are in the Python Challenge. For example, on challenge has you going through a zip file, parsing filenames and using these to follow a chain. It starts easy and moves on up. Plus, there is a forum on that site with hints.

    92. Re:No ShortCuts !!! by Draek · · Score: 1

      So no, if he doesn't have the drive to learn and problem solve he's better off outside playing with a ball ... or girls since he's a teen.

      And if he does, he's better off becoming a mathematician instead of a programmer. At least we don't look down upon those that decided to take a class instead of bashing their heads against a compiler until the thing worked.

      --
      No problem is insoluble in all conceivable circumstances.
    93. Re:No ShortCuts !!! by Krishnoid · · Score: 1

      So no, if he doesn't have the drive to learn and problem solve he's better off playing ... or [with] girls since he's a teen.

      Why not both?

    94. Re:No ShortCuts !!! by MilenCent · · Score: 1

      All this IMHO of course....

      I was just about to suggest Python myself. Not because of the whitespace thing (which is helpful), but because it's a language in which a lot can be done with just a little coding, there are modules for just about everything, and it can take one surprisingly far. Even simple fast-action games can now be written in Python, using the PyCap library interface to the PopCap game framework. PyGame's great for more complex, non-real-time graphics stuff.

      The real problem with Python, from a learner's perspective, is that it doesn't have a good multi-dimensional array construct. The most obvious solutions are using built-in arrays (which are inflexible compared to lists), Numeric's arrays (which are good but external), lists-of-lists (which get confusing fast), or create an two-dimensional array class to wrap around a list, using math to map the second dimension into it.

      Also, when Python 2.6 hits it'll change some syntax about the language, which may confuse the kid if he stays current. But then, the version change could also be a learning experience for him.

    95. Re:No ShortCuts !!! by eonlabs · · Score: 1

      There are other architectures available. If someone wanted a fresh start at programming and was interested in an introduction to assembly language, it might make sense to pick up a PIC or ATMEL programming board, a half dozen chips for 20 bucks, some crystals, and have the kid play with some embedded apps.

      I do agree, however, that assembly is a rough first language, and I get the sense that starting with a highly structured language like c, c++ or java can actually hurt a programmer's ability to comprehend what's going on in an assembly environment. Picking up a curly-brace language as a second language is probably advantageous in this regard. Object oriented thinking can simplify programming, but doesn't stretch a person's ability to interpret new paradigms very much.

      It's amazing to see how many people responding to my earlier post opened up with "I started with basic on the..." That's some quality nostalgia baby.

      --
      I wouldn't consider the mad hatter mad. Just reality impaired. He sure can make a mean cup of tea.
    96. Re:No ShortCuts !!! by thetoadwarrior · · Score: 1

      Being a brick layer can mean people will admire your work for ages.

      Being a programmer means that the few years your program is relevant will be filled with numerous complaints about how shit it is and how bad you do your job.

    97. Re:No ShortCuts !!! by IamTheRealMike · · Score: 2, Insightful

      Dudes, don't bite my head off. Nobody ever said teenagers couldn't do kernel hacking, they said that shouldn't be how they are introduced to it. And that's totally right!

      Here are some aspects of kernel hacking from a beginners perspective (and really this is what it's about - being a beginner, not being a teenager):

      • Abstract: concepts like scheduling algorithms are way too removed from achieving useful results
      • Unforgiving of mistakes: Messed up? Time to reboot. This is amazingly frustrating for professionals, let alone novices.
      • Way too limited: kernels are written in C. C does not teach you modern software design, in particular, object orientation. Knowing this stuff inside out is crucial if you ever want to get a non-shitty job writing non-shitty software.

      Here are some attributes of video game programming:

      • Immediate: you can see the results of what you do.
      • Forgiving of mistakes: if you make a mistake, you get a backtrace showing where. You fix the problem and continue. Fast turnaround time on mistakes is crucial to learning.
      • Many possibilities for learning: even a basic video game will involve complex data structures, maths, non-trivial algorithms, file and network IO, designing data formats, user interfaces .... you name it, video games need it.

      Nobody is trying to insult you by saying teenagers should start with video game programming instead of kernel programming. Believe me, I'm 24 so it wasn't that long ago I was a teenager. After I finished with that video game I moved on and by 18 I was debugging race conditions in Wine. But doing that video game was some of the best experience I ever had - it let me practice object oriented design, high performance coding, memory management on a large scale, user interface design, OpenGL, and implementing complex algorithms like A* pathfinding.

    98. Re:No ShortCuts !!! by Dexx · · Score: 1

      One thing I'd recommend to avoid this problem (of losing interest) is to have him write something *useful*. It should be some tool or script he'll be using on a daily basis and one he'll want to improve on and rework as time passes.

      Suggest starting with some script that deletes his porn surfing from the proxy server logs.

      --
      Feel the fear and do it anyway.
    99. Re:No ShortCuts !!! by Tim+C · · Score: 1

      Maybe it's the glass of wine, but I actually laughed out loud on reading that - thank you :)

    100. Re:No ShortCuts !!! by gfxguy · · Score: 1

      Yeah.. well.. the way I was "self taught" was looking at other people's code.

      Get a simple wireframe cube spinning around on the screen (or better, spinning to mouse movements) may not be the greatest accomplishment ever, but when I first did it I would play with it for hours.

      My first complete games were text adventures, though.

      Still, the problem today is that everything is abstracted so much that new programmers don't really learn what's going on behind the scenes, and games now are so complicated it's impossible to imagine being able to write your own without having a team of programmers and people doing graphics and music and so forth.

      My son, though... started with the BASIC "guess the number" game.

      --
      Stupid sexy Flanders.
    101. Re:No ShortCuts !!! by tguyton · · Score: 1

      I'm glad someone else brought up QBasic. When I was about 7 years old, my dad helped me learn how to write a program in QBasic that converted inches to centimeters and vice versa. It's not much, but it's what first got me interested in computers. I'm not much of a programmer now, but I know enough to get around in Java and VB. I even took a class in Delphi. Delphi's not bad either. It may not be terribly useful these days, but it's simple and straightforward and easy enough to manipulate. Our teacher had us recreating games like pong and breakout in just a couple weeks.
      I think another thing that really helps keep interest peaked is having a specific project in mind no matter what language you're learning. You're much more motivated to learn if you have an end goal of what exactly you want your program to do, even if it's as simple as converting inches to centimeters.

    102. Re:No ShortCuts !!! by Swizec · · Score: 1

      It's not that we bash those who learnt everything they know from a class ... it's just that they're actually not as good.

      Similar as with artists, those who learnt everything they know from a professor aren't half as good as those who went out and ... created stuff and didn't stop trying until it was good enough unlike some who just care to pass the class so their money doesn't go to waste.

    103. Re:No ShortCuts !!! by linuxpyro · · Score: 1

      ...or if you're a sadist teach him Perl.

      Perl was my first programming language, back when I was in high school. No one forced it upon me. I suppose that makes me a masochist.

      --
      Saying "I'll probably get modded down for this" in a post is the best way to get it modded up.
    104. Re:No ShortCuts !!! by nuttycom · · Score: 1

      It sounds like you didn't need any encouragement to get interested in programming! The question we've been asked, though, is how to get a kid interested in the first place, and I think that to do something like what you've described you have to already have a self-sustaining level of interest.

      In order to do that with a child who's totally new to programming, I think that you have to really focus on the fun parts of the process itself instead of the product, and manage the child's expectations with respect to the final outcome accordingly. The process of getting something working should be as painless as possible so that the kid can focus on the pleasure of playing with the logic itself and practice thinking in terms of abstractions. They can deal with optimization when it becomes necessary, and in doing so learn the lessons of efficiency in a more personal manner. I remember well writing my first 3D game using a totally naive line-drawing based algorithm of my own creation, and realizing that I needed to learn a bit more about 3D rendering when it took minutes to change the perspective of a scene. The exploration that experience resulted in taught me a whole lot more about efficiency than I would have learned otherwise.

      I think that learning what goes on behind the scenes is something that comes later, if and when they're interested. I don't disagree that fundamentals are important for people to learn, but they're only really important when you get to the point of writing software that others might want to use. When you're doing it just for your own pleasure, it's nice to be able to just play with code without worrying too much about what's going on at the lower levels.

    105. Re:No ShortCuts !!! by riceboy50 · · Score: 1

      When I was learning about programming on my TI-83, I wrote programs to simplify my class work like estimating the area under the curve and working with matrices for pre-calc and converting number bases for networking class.

      I think I would have benefited from starting from assembler since there is not much "magic" happening lower down the stack. Once I learned it in college I was like "why didn't I learn this first?!"

      --
      ~ I am logged on, therefore I am.
    106. Re:No ShortCuts !!! by Tatarize · · Score: 1

      I'd go the other way. You can always learn languages with fewer abilities, but I'd say teach him Java straight off. First it gets him set directly into the OO paradigm and secondly it has a lot of really good structures to save him a lot of time before producing some nice code. You can always learn to code poorly later.

      --

      It is no longer uncommon to be uncommon.
    107. Re:No ShortCuts !!! by ottothecow · · Score: 1
      When I needed to find the area under a curve...I got a TI-89 and let it do all of the hard work ;)

      Was a lovely machine...always thought it was a shame I didnt do more coding on it. Once I got the 89 I had already moved to where I had better uses of my time in math class and access to more useful programming outside of it (also the 89 would probably be easier to write for on a 92 with qwerty)

      --
      Bottles.
    108. Re:No ShortCuts !!! by JensenDied · · Score: 1

      Come on, this was funnier that that +2.

      Yup, looks like its a +3.

      --

      09:F9:11:02 - 9D:74:E3:5B - D8:41:56:C5 - 63:56:88:C0

    109. Re:No ShortCuts !!! by h4rm0ny · · Score: 1


      Wow! That's fun! Thanks for sharing!

      --

      Aide-toi, le Ciel t'aidera - Jeanne D'Arc.
    110. Re:No ShortCuts !!! by http · · Score: 1
      Boy do I feel stupid and misinformed. I must have, at some point in the past, taken a tutorial's reccommendation as gospel truth.
      From http://docs.python.org/ref/indentation.html we have

      At the beginning of each logical line, the line's indentation level is compared to the top of the stack. If it is equal, nothing happens. If it is larger, it is pushed on the stack, and one INDENT token is generated. If it is smaller, it must be one of the numbers occurring on the stack; all numbers on the stack that are larger are popped off, and for each number popped off a DEDENT token is generated.

      I sit corrected, and now have to look at learning python next year instead of Tcl.

      --
      If opportunity came disguised as temptation, one knock would be enough.
      3^2 * 67^1 * 977^1
    111. Re:No ShortCuts !!! by ElizabethGreene · · Score: 1

      If my son or daughter asked me this today, I would point him to AutoIt. It is a basic-like open source language that is simple enough to work from the command line(print, input, etc) but complete enough that it can grow into complex applications (windows guis, database access, interacting with other applications using COM). It is an interpreted language, but also includes a compiler. It is written for windows, but could be ported by someone enterprising enough.

      One of the really cool things about AutoIt is that it was born as a scripting language to automate simple tasks. It is one thing to be "interested" in programming. As your young programmer gets more comfortable, s/he could use it to write simple bots for WoW, Runescape, etc. Having a program run around and farm gold for you brings programming to a whole new level of coolness. If they aren't into the whole gaming thing, how about using it to control some x-10 stuff?

      From one nerd-parent to another,
      Good Luck,

    112. Re:No ShortCuts !!! by cyb3rdemon · · Score: 1

      I think perl is a great learning language. It is very flexible, powerful and straightforward, and bugs are rare. For a beginner, perl would be great because you can learn the basics and advance to more advanced features later on without having to work with things like classes, functions and typecasting when you're still getting started.

    113. Re:No ShortCuts !!! by UberMongoose · · Score: 1

      I started coding on a Commodore 64. Getting basic sprites up and running on one of those required a lot of peekf's and pokef's in BASIC. It wasn't easy, but heck, I had so few games I was desperate to write my own. Then one of my friends game me a bunch of old cassettes with games like "Paper Boy" and "The Last Ninja" on it, and for a while the need to program was satiated, but not for long. There was always something cool I could write when I got board with games. My point is that most kids have the attention span of a goldfish, and tend to want to context switch what their doing all the time. For me it was games and coding. A good way to start a kid off on coding might be to show him something fun on a machine, and then get him curious about how to do it himself (and i'm not talking about pr0n). Provide enough alternatives and they'll live in your basement all their life ;).

    114. Re:No ShortCuts !!! by rootooftheworld · · Score: 1

      I hear zsh has plenty of bells and whistles. Just get him to run some off-the-wall *nix system, like Plan 9, or a hardcore distro like gentoo or slackware, but best begin with something lighter like Fedora. Or if he is really enthused even debian or *BSD will do. Just keep him fidling, and he'll learn programing and more specificaly kernel hacking out of what he, by then, will consider necesity.

      --
      I know full well that tobacco is bad for you, so I smoke weed with crack
    115. Re:No ShortCuts !!! by himself · · Score: 1

      Rivets. *huge grin* Here, read this: http://www.michaelmoore.com/hamper/excerpt5.html "Punching rivets is..."

      That links it to an excerpt from Ben Hamper's book, "Rivethead: Tales from the Assembly Line." Great, great stuff about working for GM in the 70s and 80s. Blew my mind when my English teacher handed us the excerpt from "Harper's" magazine in, oh, 1987 or so. All those typical books chosen to appeal to teens -- "Catcher in the Rye," et al. -- went out the window. Yay, Mr. Peick & Mr. Syman!

      - Will

    116. Re:No ShortCuts !!! by ReptilianSamurai · · Score: 1

      Before I got my graph-link (an absolute must-have for the budding calculator programmer) I was known to forego the use of a calculator on math tests that they made you clear your memory for! I didn't want to lose my precious programs that I had toiled long and hard on.

      Although I too have completely re-done older programs from scratch for the sake of making them more efficient. Plus there was the point where I learned how to avoid memory leaks and never get Error: Memory when my programs were running.

      --
      I installed Linux on a car, but it crashed due to bad drivers...
    117. Re:No ShortCuts !!! by WithLove · · Score: 1

      I'm 17, and a few years ago when I was learning my first languages (Python, then VB (Thank you, high school!), then Java, and now C++) parsing text really did excite me, and still does.

      Maybe I'm weird, but I've always thought things like that were pretty cool. I liked making a prime number generator. Learning regular expressions was fun.

      And, yes, I'm a lot of fun at parties.

  2. python by utnapistim · · Score: 5, Interesting

    Teach him python (or ruby, or whatever else that is high-level and easy).

    It's the same as basic was twenty years ago, just much more powerful, easyer to learn and more fun.

    --
    Tie two birds together: although they have four wings, they cannot fly. (The blind man)
    1. Re:python by Fingerbob · · Score: 3, Interesting

      I second this. most folks I know who love programming learned a nice easy language as a kid (BASIC in my case, a long while back). Python is easy enough to learn how to program in, but flexible enough to draw stuff on the screen, play sounds, talk to remote machines - mess with what the machine is capable of. I'd definately pick a friendly language to begin with (and I'm not sure C or C++ fit that bill, I'm still learning good C++ practice after a decade of commercial use).

    2. Re:python by jabjoe · · Score: 1

      I third that. BBC BASIC was my first language, powerful and easy. Acorn users often used BASIC as a shell, and many Acorn apps where mostly written in BASIC with just the part needing speed written in ARM or C. Python is the modern day version of this. I'm so pleased to have a language for these uses again. (But relatively, python is isn't as quick as the super quick BASIC was on the Acorn (on the StrongARM it all fit in the instruction cache.))

    3. Re:python by Anonymous Coward · · Score: 1, Interesting

      Yeah, this is the thing to do. Be sure to install Pygame, the Python wrapper for SDL.

      It's amazing what you can do without ever leaving the Python language. Certainly this is a good way to learn, because you get all of the powerful high-level Python features and you don't have to detail with nasty low-level details like memory allocation.

    4. Re:python by ethorad · · Score: 1

      As has been said, you need to get him to want to learn. For me, the thing in particular which did that was fractals. Being mathematically inclined I used to build programs to solve problems, but the thing which spurred me on was drawing fractals. Of course, doing this in BASIC on a spectrum meant leaving it on overnight to run but then that just taught me about O(n) etc programs and optimisation. Secondly, you need him to be able to produce fun things easily. For BASIC on the spectrum it was pretty easy to draw on screen and make things move. With directx and C++ it's a whole lot harder and less fun. It's all very well outputting text results but I reckon graphics will be essential in keeping him interested. Python sounds good, or maybe something like DarkBASIC? Basically ou want him to learn the ethos of programming but unless he's driven and finds what he's doing fun it'll be an uphill struggle.

    5. Re:python by Eudial · · Score: 2, Insightful

      I second this. most folks I know who love programming learned a nice easy language as a kid (BASIC in my case, a long while back). Python is easy enough to learn how to program in, but flexible enough to draw stuff on the screen, play sounds, talk to remote machines - mess with what the machine is capable of.

      I'd definately pick a friendly language to begin with (and I'm not sure C or C++ fit that bill, I'm still learning good C++ practice after a decade of commercial use).

      What you choose as a first language matters. It should be easy, and teach basic flow control in a very direct matter that allows for an intuitive understanding of those subjects (BASIC was the name of the game when I was young, python is where you'll want to go today). But I'd definitely leave the door open for C or C++ as well (hell, I learned C when I was 15). Buy a good book on python, and K&R to teach him C, and tell him to start out with python, and get into C if and when he feels like it.

      It's also good not to micromanage too much.

      --
      GAAH! MY PRINTER IS ON FIRE!!! PUT IT OUT! PUT IT OUT!
    6. Re:python by Olix · · Score: 2, Interesting

      Don't teach him anything, its better if he sits down and learns it himself.

      I know that learning in lectures in college is a very different ballgame to learning from instruction by one person, but I found that I only really improved my coding ability when I sat down and got myself a project I wanted to work towards. If the kid is interested in learning to code and wants to do interesting things with the computer, then he'll learn it himself - just give him some easy IDE and supply him with ideas for something interesting to write. He should be able to learn the rest himself with online tutorials and the like.

      Some people bitch about it a lot, but Java is nice and simple to learn and there is something like 2000 published books on it.

    7. Re:python by KlaymenDK · · Score: 1

      Fourthed (Forth'ed?).

      I started out with a Mac, Ansi Pascal v1.0, two reference manuals, and basically no other help. Today, I would hand out Python, and have regular talks -- not about programming, but about things that you could do with (simple) programs. Let the kid figure out his (oops, presume it's a he) own level, his own assignments. Stick in a challange or two along the way.

    8. Re:python by Malekin · · Score: 5, Funny

      Forbid him to learn python. Then he'll do it himself to spite you.

    9. Re:python by xalorous · · Score: 4, Insightful

      Dude, this guy's kid looks up to him, as a role model. The number one reason he wants to program is because his dad does it. By all means, give the kid the tools he needs to learn to program. Pick a language with lots of tutorials and books and wide acceptance (C or Java perhaps?). Get him to draw flowcharts or write pseudocode (people still do that?). Give him some fun problems to work out. Go over code with him. Show him ways to improve his code and explain the reasoning behind them. His interest in spending time with you will keep him at it until he's hooked on programming itself.

      --
      TANSTAAFL GIGO Acronyms to live by!
    10. Re:python by xalorous · · Score: 1

      Ok, so that comment didn't say what I wanted to say. My comment was directed at the father in the quote within the original submission. Please excuse my slipping into second person.

      --
      TANSTAAFL GIGO Acronyms to live by!
    11. Re:python by patro · · Score: 1

      I second this. Python is a very accessible language. I wouldn't confront newbies with C right at the beginning.

      Python is easy to learn and it's very powerful at the same time, so he can go a long way using only this language.

      If he catches the programming bug then he can move on to any of the closer-to-the-metal languages later if necessary.

      The important thing is do not alienate him by forcng him to deal with C strings and stuff right at the start.

    12. Re:python by silentcoder · · Score: 5, Insightful

      >I'm still learning good C++ practice after a decade of commercial use
      Don't worry, so is Bjarn Stroustrop

      --
      Unicode killed the ASCII-art *
    13. Re:python by Anonymous Coward · · Score: 2, Funny

      From the summary: 'My young teenage son is starting to ...'

      > Let the kid figure out his (oops, presume it's a he)

      There are mighty few female sons, so it's a fairly safe presumption.

    14. Re:python by donaldm · · Score: 1

      Teach him python (or ruby, or whatever else that is high-level and easy).

      It's the same as basic was twenty years ago, just much more powerful, easyer to learn and more fun.

      I beg to differ here, higher level languages are fine for someone who has some experience in programming, you can very quickly turn off the beginner. For someone to start programming a simple shell language such as Bash or Ksh is much more suitable since you can easily write simple and even powerful scripts that you can test very easily and quickly and gain confidence as you go. I always recommend courses in formal programming to learn the fundamentals and best practices of using simpler and even more advanced languages.

      --
      There ain't no such thing as proprietary standards only proprietary formats. Standards are by definition open.
    15. Re:python by peterb · · Score: 1

      I would have trouble thinking of a worse book to teach someone C than K&R.

      It's a useful reference, and a lousy teaching tool.

    16. Re:python by TheRaven64 · · Score: 1

      Definitely not. Python is a terrible teaching language. It is often easier to do the wrong thing than the right thing in Python (which makes it okay as a prototyping language). For a first language, you want something where the good solution is also the easiest. Then, when you have learned good practices, you will apply them in any language you learn. I'd still recommend Smalltalk as a good first language. There really is no better environment for learning to code than Squeak at the moment.

      --
      I am TheRaven on Soylent News
    17. Re:python by croftj · · Score: 2, Informative

      You know what they say about presumptions...

      --
      -- Many men would appreciate a woman's mind more if they could fondle it
    18. Re:python by getuid() · · Score: 1

      If he's older then 12 (say 14, 15...), then teach him C. It's not so difficult, and that way, he gets to learn a lot about how computers work on the inside. Doesn't need to be anything fancy... like kernel hacking or so. Some basic stuff.

      In fact, on second thought, forget about the language... It's mostly not about the language, but about what's the problem at hand that needs to be solved. If the problem is interesting, he'll feel well having solved it. Then he'll automatically stick to it (or, if he won't, than chances are that he's not bound to be a programmer... try not to be to disappointed, in that case :-)

      Examples: for the beginning: suggest him to make a program to compute the average of his scool marks. More advanced: or make a program that can ask him words in a foreign language and have him type the english word for it... Or suggest him to make a program that allows him to keep track of what objects (books / CDs / PC games) he borrowed to whom.
      When I was a child, I always forgot what I borrowed to whom. And writing such a program isn't all that difficult...

    19. Re:python by Anonymous Coward · · Score: 1, Interesting

      Forbid him to learn python. Then he'll do it himself to spite you.

      Hi there. I'm an Australian student who has just started a comp sci degree. I have to say that Python is by far the most fun, easy and elegant language I've learnt so far (Haskell would be second). It's worth trying to expose him to it.

      The up side? Python has a neat game creation module called PyGame which you can get at pygame.org. You can teach him about maths, physics and programming all at once while having fun with him if you want!

      But the guy I quoted actually makes an interesting point - I always learn the most when somebody challenges my intellect or authority on a matter - I have an urge to prove them wrong. Not sure how you'd do this without undermining his self-esteem, but it's worth a thought; don't spoon-feed him.

    20. Re:python by fictionpuss · · Score: 1

      Seconded. Learning basic was fun because you could get results quickly, even though it was a slow language. PyGame removes the latter obstacle.

      C is a foundational language if you want to progress as a programmer, but if you want to create interest in the first place - the ability to get interesting (graphical not command line) results is important.

    21. Re:python by wmguy · · Score: 1

      Everyone always is scared to have people learn on C, but I initially learned to program with a copy of Turbo C and its help function. Since I didn't know any "easy" languages like BASIC or Pascal, it seemed perfectly natural to have to learn about pointers and C-strings.

      Ultimately this kid should just be taught the proper tools for whatever end he wants to achieve. If he wants to do web programming, teach PHP and HTML, if he wants to do text processing, teach him a scripting language that suits the task. If he wants to program embedded controllers, teach him C. Sure, you might be able to do something with BASIC, but that just means he's going to have to re-learn to program later when he does something "real." I have yet to see BASIC used anywhere in my career.

      You will also have to use whatever teaching method works for him. I learn well by having example programs and an API reference available. Other people prefer to read a whole book before they start, and others want someone standing over them telling them what to do. Only you know your kid, so you will have to let him decide how he wants to learn.

      If your kid really wants to program you won't have to dumb things down for him, just help him do what he wants, and let him go.

    22. Re:python by Cal+Paterson · · Score: 2, Informative

      Hmmm...as someone learning Smalltalk at the moment, I cannot agree with this post. Smalltalk itself is actually relatively straightforward, but actually learning OOP is very difficult indeed. There are tough, abstract concepts here, and OOP has a higher barrier to entry than functional languages (which I learned first) or proceedural languages.

      Additionally, there is only one book currently suitable for learning Smalltalk (Squeak by Example), and while it's a good book and not exceedingly hard, it would assume to much of someone who doesn't already know how to program. There might be a text I don't know of, though.

    23. Re:python by Chatterton · · Score: 1

      Before taking courses in formal programming, you need to hook your subject in programming. For this High level languages are easy to pick-up, with good library to do nearly everything (calculus, graphism, constrain programming, ...). Once the kid is hooked to programming, then you can send him to courses in formal programming where he will have the opportunity to understand why all he have done worked and how it work, fine tune his programming skills, correct his bad behaviors and so on.

      This is what I have done with basic and a book with a lot of sources code of games for my ZX-81. And with 1k memory I got to ASM to put more in my little ram. After that my dad bougth me a book explaining how the Z80 worked and with my uncle (who is electronician) added nearly myself 16k of RAM and a lot of other extensions (beeper, voice synthesizer, logical and analogical IO card and other fun projects). It is true that this last part is nearly impossible on new hardware, but at this time it was 'very' easy with a cutter to cut some wire on the PCB and rewire completely the machine :)

      Then after that I have taken informatics courses whenever I possibly can, learned a lot of other way of programming and languages. And I thank my ZX-81 from which I learned to program and how program worked going to the metal. Unfortunately for my ZX-81, the last extension I tried to add to it signed it's death due to some missing resistors and capacitors says the post-mortem analysis done by my uncle :)

    24. Re:python by tb()ne · · Score: 3, Interesting

      Definitely not. Python is a terrible teaching language. It is often easier to do the wrong thing than the right thing in Python (which makes it okay as a prototyping language). For a first language, you want something where the good solution is also the easiest. Then, when you have learned good practices, you will apply them in any language you learn. I'd still recommend Smalltalk as a good first language. There really is no better environment for learning to code than Squeak at the moment.

      Python is absolutely fine as a first language. It easy to learn, easy to read, and has an interactive interpreter, which makes it easy for a student to quickly test code. It supports most programming styles (OO, functional, etc.), is well documented, and comes with a large standard library of packages with which a newcomer can quickly become productive.

      I don't follow your statement about python making it easier to do the wrong thing. Perhaps you could provide some examples. Also, if you're going to push Smalltalk/Squeak as a first language, what makes it a good candidate as language to learn general programming concepts?

    25. Re:python by Kiaser+Zohsay · · Score: 1

      Sure, you might be able to do something with BASIC, but that just means he's going to have to re-learn to program later when he does something "real."

      I disagree. Learning the elements of programming (loops, conditionals, calls, etc.) it what is important. When you move from a simple language to a more robust language, you don't relearn programming, you simply learn new keywords for the concepts you already know. Then you start to learn about what the new language offers (structured types, inheritance, etc.). Starting with a simple language is not "dumbing down", it is the start of a logical progression. The son can then decide for himself when he's ready to move up to a new language.

      --
      I am not your blowing wind, I am the lightning.
    26. Re:python by CastrTroy · · Score: 1

      I don't think I've ever encountered a book that was good at teaching programming. Learning how to program comes from practice. Books don't teach practice. Perhaps a book with a bunch of programming exercises, but it's easy enough to find examples on the web, or come up with problems of your own that you want to solve.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    27. Re:python by woot+account · · Score: 1

      That's no presumpt ion, that's my wife!

    28. Re:python by Eli_Courtwright · · Score: 1

      Specifically, the book "How to Think Like a Computer Scientist: Learning With Python" is freely available online (although it seems to have recently been renamed "Think Python: An Introduction to Software Design". It's an excellent resource for first-time programmers; it starts with "The Way of the Program" and shows how to use the command line interpreter, then gradually moves on to control flow, data structures, building GUIs, etc.

      You can find it at http://www.greenteapress.com/thinkpython/html/

    29. Re:python by Daniel+Dvorkin · · Score: 1

      Don't teach him anything, its better if he sits down and learns it himself.

      There are so many beginner pitfalls out there that online tutorials and such will fail to mention, he may well learn to program, but he won't learn to program well. I've worked with a fair number of self-taught programmers over the years, and while many of them produce good work in a number of ways, they always have huge gaps on their knowledge. Learning from a good teacher -- whether in a classroom or one-to-one -- helps avoid many of the pitfalls and teaches the student how to "know what they don't know," i.e. see the gaps in knowledge and fill them in. This kid has a great opportunity, and the "do it yourself, kid" approach would be a terrible waste.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    30. Re:python by garett_spencley · · Score: 1

      Absolutely. I was entirely self-taught but I spent much of teens looking for an experienced adult programmer who could mentor me. Learning on your own is something you do either way when studying most things. You can't be with your mentor 24/7, after all. And if your mentor does everything for you then you're not learning anything anyway. Point being that learning anything is a always personal endeavour, but it still never hurts to have someone give you suggestions, point you in new directions and tell you what you're doing right and what you're doing wrong etc.

    31. Re:python by Anonymous Coward · · Score: 2, Insightful

      By all means, what the previous poster said. Spending time with your son is the most valuable gift you can give him, regardless of the language you think he should learn. Pick a language, buy a For Dummies book, and spend quality time with your progeny. Even if he decides that he hates programming after a year, he will still take away the time spent you as well-spent.

    32. Re:python by anaesthetica · · Score: 1

      ALL THESE [languages] ARE YOURS EXCEPT [python]. ATTEMPT NO [hello world] THERE.

    33. Re:python by TheoMurpse · · Score: 1

      I found Deitel and Deitel's C++ book to be good when I was in high school. I took a college C++ class while a sophomore in high school, and that's the book we used. A programmatically-oriented high school kid found the book instructive, at least.

      Although we didn't make it much past operator overloading...

    34. Re:python by Olix · · Score: 1

      Depends on the type of Teenager. The geekier ones do not necessarily subscribe to the "Myspace Generation" thing.

    35. Re:python by bargainsale · · Score: 1

      I think it depends on where you're starting from.

      I've always had a soft spot for K&R, and found it very useful when first learning C after having played a lot with Basic.

      But I very much agree it would be a bad first programming book: it presupposes you know how to program, but don't know C yet.
      But then, I agree with practically everybody above that C is not a good place to start with programming, anyway.
      Best to start with something that does a lot more hand-holding, and then come to C/C++ when you want enough rope to shoot yourself in the foot, i.e. when you're ready for a language in which you can do anything the hardware can do.

      At some point every programmer needs to learn C at least a bit, even if they never write a non-trivial program in it, because it's the best way to get to grips with what's really going on at ground level. Even if you never use an explicit pointer, you need to understand the concept, for example, and C is good for that.

      --
      Aberrations have appeared in my destiny prognostication engine!
    36. Re:python by Terrasque · · Score: 1

      Yes, Python (or a similar high level language - ruby, or even lua (which is used in many games, giving instant appeal) ) is perfect. Personally, I'm familiar with python, so that's what resources I will use in this post.

      First of all : Think Python (http://www.greenteapress.com/thinkpython/) - An intro to computer programming, focusing on python.
      Then PyGame (http://www.pygame.org/) - a good framework for making small games in python.
      If web is more his deal rather than gaming, check out the Django framework (http://www.djangoproject.com/).

      For gui you have wxWindows (or what its called now), and Boa Constructor, a cross platform RAD GUI python thingy (was quite buggy on non-windows when I tried it a few years ago, but could be pretty good now).

      These links are my favorite python'ishies, and I think they would be a good start.

      The thing with python is that its cross platform, so if he write a small game or something, he can easily show it to his friends, no matter what he made the game on, and what they're running :)

      --
      It's The Golden Rule: "He who has the gold makes the rules."
    37. Re:python by h4ck7h3p14n37 · · Score: 1

      IMHO the father screwed up by waiting until the kid was a teenager. I started programming computers when I was five; I would have killed to have a parent that could have mentored me instead of having to teach myself from books and magazines (no Internet back then, but there was RAINBOW and some Apple(?) rag that I can't recall the name to, I just remember they had an issue about computer graphics that talked about the Don Bluth games and Tron).

      I got my start with computers in my school district's gifted program (Illinois district #66 FTW); this was back in 1982 and Apple had donated a bunch of equipment (thank you!!!). My Mom was a teacher so she was able to bring a computer home for the summer. I spent a lot of my early years working on the computers at the local library during the school year and then working at home over the summer. I got some pirated games from the high schoolers that also used the library's lab and I spent a lot of time going through some BASIC programming texts (up through peek/poke IIRC). I also played with LOGO quite a bit. At about the same time, my Dad picked up a TRS-80 from Radio Shack and I learned how to operate that system as well (gotta love the cassette tapes).

      At the time I was really into video games since my Mom had bought me an Atari 2600 for Christmas (and later, the 5200); don't ask me how a five year-old knows to ask for an Atari. I was also into those choose your own adventure books and started writing my own (admittedly primitive) text adventure games.

      I attended high school at the Illinois Math and Science Academy. Once again fortune smiled upon me and the school had a UNIX lab (SunOS) and access to the Internet(!). I got turned on to news groups and discovered Phrack Magazine; that taught me some cool things, but also got me in some trouble. I eventually moved on to the University where I studied CS in the department of Engineering with a focus on computer architecture and operating systems. I had pretty much known from an early age that I wanted to program computers for a living and it was more than a little strange to realize that not everyone at college knew absolutely what they wanted to do.

      Now that you know how I got excited about computers, I suppose my advice would be to focus on encouraging your son to keep at it and not focus on the fact that they might not yet have the background/ability to take on some of the projects that they want to do. Also, try to find some non-computer interest that can be expanded to include computers.

    38. Re:python by brian.stinar · · Score: 1

      I agree with your comment regarding his motivation. If I were in your situation, I would try and keep that motivation by making it fun through showing interest in his progress and giving him a lot of positive feedback. I don't think the details of the language, method or any of the other aspects are as important as making sure it is fun for both of you. You might be able to pick up some books on being an effective teacher, but it sounds like with your skills you will not have an issue as long as you keep the fun part in focus.

      When my father taught me about different things (wood working, tile, electrical work) that is the approach he took. My dad is a busy physician, but always enjoyed taking the time to teach me about different projects like that. I'm glad he did.

            -Brian J. Stinar-

    39. Re:python by socalsteve · · Score: 1

      Forbid him to learn python. Then he'll do it himself to spite you.

      Great suggestion but that only works with alcoholics!

    40. Re:python by xalorous · · Score: 1

      I had similar experiences with gifted class (1 hour a week while everyone else did something else...forget what). We had the Commodore CBM and PET machines in our school's library in the early 80s. We had an Atari then I got a TRS-80 (wanted a C64). So I learned programming in BASIC using goto's. There's a lot to be said for something like BASIC. Extremely simple language and syntax, so you have to write subroutines to do almost everything beyond basic math. Of course in college I studied FORTRAN then used C in a couple of math classes (though we only modified the instructor's code).

      Problem is that during my teen years, I did no programming (more interested in other activities, especially the social kind involving girls.) I did just a bit during high school with Apple IIg's. BUt for 5 years or so I did nothing.

      FORTRAN in college was a matter of logical thinking and organizing the process. If you can diagram it, you can code it. I learned diagramming and pseudocode.

      And then I stopped.

      Until years later when I decided I wanted to write programs again. Now it's all complicated. I've tried multiple times to get back into it. Primarily using C++, (visual c++ 6.0 then again with the newer express modules.)

      Bottom line, I was not involved in programming during my teens, even though it is something that I am good at and get enjoyment from doing. If my dad had been skilled at it and shown interest in working on it with me, I might be a professional programmer right now. Instead of a lowly IT guy.

      --
      TANSTAAFL GIGO Acronyms to live by!
  3. No, it is still correct. by Corporate+Troll · · Score: 2, Insightful

    Your approach is still correct. The point and click gives results fast, but doesn't actually teach you anything. If he find the basics, boring, don't even bother anymore. Programming isn't for him.

    Heck, I can say that programming for me became boring the day I started doing it professionally. I would rather direct my son in a completely orthogonal direction.

    1. Re:No, it is still correct. by jank1887 · · Score: 2, Insightful

      heh, he said orthogonal

      I would recommend you pick up some sort of embedded logic kit. Something, anything, that translates code into real world manipulation. Even if it just winds up being a fancy digital clock kit, the fact that he can write some code and see something physical happen can completely enamor a kid.

      I'm saying this from the perspective of an engineer. Circuit theory class was one thing. But when we could controllably vary the intensity of a lightbulb, and then in digital logic class pattern an LED array, and then in electronics move a robotic arm... etc. Things like that made the theory 'real'. Simple algorithms in a microcontroller producing sensible output can help make programming more than just words on a screen.

      I'm a bit out of touch with what's available, however. I know there are a number of LEGO kits (mindstorm or something?) that let you do things like this. Get a starter kit, give the kid a challenge, and tell him if he accomplishes 'X', you'll buy him a bigger set.

    2. Re:No, it is still correct. by Corporate+Troll · · Score: 1

      What's wrong with orthogonal? English isn't exactly my first language, so I might have misspelled/misused it...

    3. Re:No, it is still correct. by Zerth · · Score: 1

      You used it correctly, although someone with a smaller vocabulary would have said "completely different".

    4. Re:No, it is still correct. by SimBuddha · · Score: 1

      As a programmer and parent of three kids and step parent to two others, I recommend a few things that I have exposed kids to with positive effect.

      The Torque Game Builder is a fun system.
      Scratch is also very cool.
      Of course the Lego system is great fun and a good starting point for programming and robotics.
      Blitz Basic is also a fun system to learn on.

      The problem with todays state of technology is that kids see massively complex video games made by huge teams at great cost and their efforts seem trivial and boring, so working the robotic real world angle helps differentiate their efforts.

      The real trick to getting a young person to become a competent programmer is persistence of ongoing projects. Like speaking a foreign language, progreamming is something you use or loose...

  4. Re:Son? by __aamdex1616 · · Score: 5, Funny

    I thought geeks didn't have sex ...

    Geeks clone themselves, it provides the same benefits without all the hassle with bodily fluids.

  5. More info by Hognoxious · · Score: 1

    I don't know what your family situation is (indeed, I don't know if your his mother or father) but is the other parent any good at teaching?

    I'd say let him try out a few high level languages where he can build simple programs that at least do something quickly - he could get bored with the details of C - and see which suits him. Help him out if and only if he gets stuck. If he reaches the limits of that language then maybe it's time to indtroduce C or assembler.

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    1. Re:More info by Mayhem178 · · Score: 1

      It's distressing how, after the article asks for help on how to teach his son, all of the posters jump into the fray lauding their language of choice, which doesn't answer the posed question in any way, shape, or form.

      It sounds to me like you are missing some of the basic fundamentals of software development as well, if you are, as you said, incapable of writing even halfway passable documentation. So my suggestion to you is to learn with your son. There is no faster way to teach someone than to share in their learning experience.

      Ignore all of these people blindly suggesting one language or another. Language, platform....these things are NOT good starting points for learning to program; rather, they are a means to an end. The first thing you should do is find out what your son is interested in doing with programming. Does he want to make video games? Does he want to make web pages? Is he interested in any particular kind of application of software (medical devices, automobiles, lab work, etc.)?

      If his learning doesn't allow him to do something he's interested in, you'll find yourself meeting resistance, and he'll probably not want to continue. Start by finding out what he's interested in, then allow his development as a programmer evolve from there. And learn a few things along the way for yourself!

      --

      "You will pay for your lack of vision..." - Emperor Palpatine to Ray Charles

    2. Re:More info by Hognoxious · · Score: 1

      It sounds to me like you are missing some of the basic fundamentals of software development as well

      I'd like to know on what grounds you make that assumption.

      if you are, as you said, incapable of writing even halfway passable documentation.

      Why would I say that when it's not true?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    3. Re:More info by Mayhem178 · · Score: 1

      I'm replying to the article, not you.

      --

      "You will pay for your lack of vision..." - Emperor Palpatine to Ray Charles

    4. Re:More info by Hognoxious · · Score: 1

      Well the evidence of my own eyes when I backtrack using the 'parent' button, plus the slashdot messaging system, seem to indicate to the contrary.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  6. Write a game by gsslay · · Score: 4, Insightful

    Write a game, perhaps based on a favourite book. Or something that involves a subject he's already interested. Doesn't matter if it's a simple text game. Let him write it on his own. Then when he's finished suggest a few improvements. Repeat. Once he's bored with that, start a new project.

    That's how I learnt.

    And for pity sake, do not ask him to kernel hack. It's way too abstract. You need something user-level with immediate and very visible results.

    1. Re:Write a game by Anonymous Coward · · Score: 5, Interesting

      I'll second that. Many of us learned on 8-bit home computers, where you could understand everything that was going on, and we made games. Brilliant self education.

      The best way of doing that now is with the Hydra console. The hardware is completely documented and described at the beginner level in the book. And there is no OS or APIs to deal with, disguising what's really going on. You code straight to the bare metal.

    2. Re:Write a game by dreamchaser · · Score: 1

      Great suggestion. I wrote my first game in BASIC on a Trash 80 way back when. All text of course.

      I would also suggest not forcing any particular platform/OS on the kid. Expose him to several if possible and explain the pros and cons as you see them. Then let him make his own choices.

    3. Re:Write a game by dkf · · Score: 2, Interesting

      Doesn't matter if it's a simple text game.

      It's better if it is. Fewer moving parts, much easier to see what's going on.

      A pretty good one to start with is a number guessing game. Teaches about control structures, IO, state and validation of input. Go from there on to something like the Animal Game. You can use that to teach about decision trees and persistence. And that covers a very large fraction of the foundation of computing.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    4. Re:Write a game by Stormmind · · Score: 1

      Indeed, this is how my dad encouraged me. We wrote Game of Life in Basic together. Visual stuff is very rewarding when programming - I wrote a lot of animations in Basic which was a lot of fun. In python or C there are probably good libraries that you could make a wrapper around and make it easy to draw and animate things.

    5. Re:Write a game by thegrassyknowl · · Score: 3, Interesting

      My first (memorable) program was written with my dad on the C64. He's not a programmer, but we got a C64 when I was about 4 or 5 and I was keen to know all there was to know about it.

      He started reading magazines and got some books that taught him the basics then we'd spend time together building basic (pun intended) things. The first one that did anything memorable was a christmas tree on the screen complete with a flashing light on the top.

      It was all downhill from there. Once the basics are in place more and more advanced things follow. Soon you've outgrown your interpreted language and are sitting at the machine level to make it do things fast enough.

      Of course, back then it was all very easy. The 8-bit machines only had a handful of opcodes and a small amount of unmanaged memory (well the C64 had a ROM bank that you could cut out if you needed the RAM it shadowed). To make graphics it was a simple matter of poking in a few registers and then writing to the graphics memory directly.

      There was no pesky OS or memory management getting in your way. The machine also wasn't very fast, so to do cool things you had to learn about interrupt driven events, 'multi tasking', and designing for optimisation from the start.

      These days learning programming like that is nigh-on impossible. The OS hides the machine from you and presents a not-so-neat interface to all the hardware. The machine is fast so there is never any real desire to optimise and programmers aren't learning good principles for it.

      If the GP's teenage son is really interested in learning programming perhaps a small microcontroller project would be a good place to start. PICs and AVR cores are quite simple to implement and program. Investigate a development kit instead of diving into programming the PC.

      --
      I drink to make other people interesting!
    6. Re:Write a game by Jesus_666 · · Score: 2, Insightful

      If the GP's teenage son is really interested in learning programming perhaps a small microcontroller project would be a good place to start. PICs and AVR cores are quite simple to implement and program. Investigate a development kit instead of diving into programming the PC.

      If he's also interested in electronics you can get a small Atmel and the neccessary components and build your own Lego Mindstorms workalike. Low-level programming and electronics sure sound interesting to a geeky kid if they allow him to build his own autonomous robot. Plus, he learns how to use a soldering iron, a skill I would dare call essential.

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
    7. Re:Write a game by ewrong · · Score: 1

      "You need something user-level with immediate and very visible results"

      I'd agree with that, start them out with something that is relatively "simple" and instantly cratifying such as JavaScript, PHP or ActionScript perhaps? At that level it's all about getting used to writing code, getting a grip on some of the logic and experimenting a bit. For god's sake leave the kernel hacking until later.

    8. Re:Write a game by khakipuce · · Score: 1
      But only if he is into games...

      One of the first things I ever programmed off my own initiative was a "striaght line curve" program. At the time making these from string with nails in a board was a bit of a fad. Replicating this on a Spectrum was easy becase is just needed a couple of loops and a line drawing command. Quick, simple but very effective.

      Point is: find something that really grabs his attention that gives quick results. May be better to build a robot, little C programmable micro controllers are really cheap and a few lines of code can make an LED Flash. Swap the LED for a couple of motor controllers and a few more lines of code can make a robot go forwards, backwards and turn. The you can add sensors etc. The point is that it gives very quick results that can be built upon easily.

      --
      Art is the mathematics of emotion
    9. Re:Write a game by fprintf · · Score: 1

      I think you will find the interest in text based games is very different for the current teenage crowd than it was for most of us in the early 80s. Our text based games were a) all we could reasonably code and b) we hadn't seen what was really possible with computers yet.

      Take it from a teenagers perspective, like my 12 year old who has played portal, unreal tournament, Lego star wars, you name it. Programming or playing a text based game will be fun for a little while, but honestly there will be a point where he'll ask what the point is, and then the gap between what a single, beginner programmer can do and a full development team of game writers can do.

      My son and I had this very same conversation this weekend. He has always said he wants to be a doctor, and is brilliant at his school work (way better than I was). Now he said he might be interested in something technology related, so I described a few careers and ways of starting out... and downloaded Python to teach myself so that I can give him a positive start if that is what he wants to do. Knowing him, and many other kids, "simple" programming won't have much draw unless it relates to their own experience, and that might mean *gasp* giving him Visual Basic since he has spent so much time in Windows, at home and at school.

      Sorry for the ramble. My point is, text based games might have held our rapt attention back when we had Apple ]['s in school, and Atari 800XLs at home, but nowadays I think it has to be more.

      --
      This post brought to you by your friendly neighborhood MBA.
    10. Re:Write a game by Hemogoblin · · Score: 1

      My first ever program was written in Basic: it had a simple prompt to enter your name, output "Hello &name", and then had the screen flash hundreds of different colours to try and give you a seisure. It was my finest work.

      Though seriously, the best fun I ever had was programming my own text adventure. When I wanted to add new features, I HAD to learn more. Best high-school programming class ever.

    11. Re:Write a game by harry666t · · Score: 1

      This is almost exactly how I have encouraged my sister to start toying with Python.

      She loves fantasy, role playing games, reading books, etc, and a few years ago she discovered a SUD (Single User Dungeon, single player MUD, text adventure, whatever you call it), namely Otchlan (polish for "abyss"). The game is almost dead now (the author announced that further development will cease, and the game isn't OSS), so she is seeing a potential in having an ability to write and maintain her own game like that - especially since I've showed her one example of how easy it is to create a simple text adventure. At the moment we've teamed up and are working on a small SUD - I've started coding the engine, she's drawing maps of cities and countries to be later added to the game, but we often lurk into each other's work and exchange thoughts and ideas.

      By the way, SUDs and MUDs can greatly help overcoming the fear of using Unix CLI - for example, you show someone that "less readme.txt" isn't much different from "read sign".

    12. Re:Write a game by Lumpy · · Score: 1

      http://wiki.gp2x.org/wiki/Main_Page

      Another Open game platform.

      --
      Do not look at laser with remaining good eye.
    13. Re:Write a game by grvydude · · Score: 1

      This is how I learned, well actually making a tool to create characters, manage characters, and yadda yadda for D&D. Did it in basic, way back when (god I can't believe it was so long ago). I pretty much self taught myself, used books, though the net has plenty of nice guides and tutorials to work with. Also Java/JS isn't a bad place to play with since it is really easy to use.

    14. Re:Write a game by jon_adair · · Score: 1
      I started with 8-bits like the Atari 400 and C-64, but I don't think typing in BASIC games (or pages and pages of hex dumps) from a magazine works for kids today. Then I moved on to Turbo Pascal and like everyone else in the late 80s, wrote a Tetris game. Then things like C-robots and TinyMUD got me going in C.

      These days, I'd point a kid to something like Microsoft XNA or Silverlight games, using free downloads of Visual Studio Express. Java games, especially for mobile, might be interesting too, but the Microsoft stuff is a little more kid-friendly.

    15. Re:Write a game by jez9999 · · Score: 1

      That animal game is crap. I gave it appropriate answers for 'kangaroo' and it didn't guess it.

    16. Re:Write a game by Yazeran · · Score: 1

      Yep, That's the way to do it.

      My introduction to computer programming was in the form of a few games written in GW-BASIC on my dad's 8086 PC running DOS.

      When I got bored playing those i got curious and looked a bit on how they were made and my dad explained a bit about programming and after that I started creating a few games (think of simple pacman clones) and gradually expanded from there. From that I learned some very important lessons (notably that i really wold have liked local variables in functions, something GW-BASIC didn't have, as well as avoiding calling variables x1,x2,x3,x4..... :-)

      Yours Yazeran

      Plan: To go to Mars one day with a hammer.

    17. Re:Write a game by dkf · · Score: 1

      That animal game is crap. I gave it appropriate answers for 'kangaroo' and it didn't guess it.

      The game is supposed to learn by getting people to tell it new questions, and so is only as good as the answers it's already been told about. But it's that learning ability which makes it interesting from a programming perspective.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    18. Re:Write a game by foniksonik · · Score: 1

      I suggest teaching how to program with OpenGL.... immediate gratification while learning to work with a published API... but if you can steer him towards procedural graphics he'll also learn about CS logic switches and for looping statements.

      This will smooth the way towards algorithms. Once he's got a handle on those concepts he can apply it towards anything, graphical or not. You can do pretty much anything in CS with a good mix of logic, loops and algorithms... but the real key is working with published APIS... teach him to not reinvent the wheel and he'll be off to a good start.

      --
      A fool throws a stone into a well and a thousand sages can not remove it.
    19. Re:Write a game by poot_rootbeer · · Score: 1

      The best way of doing that now is with the Hydra console. The hardware is completely documented and described at the beginner level in the book. And there is no OS or APIs to deal with, disguising what's really going on. You code straight to the bare metal.

      What are the benefits of the Hydra -- which has no presence anywhere except as a learning aid, as far as I can tell -- over doing homebrew development for an actual gaming console? Useful development tools exist for every console from the Atari 2600 through the Nintendo DS.

    20. Re:Write a game by Firehed · · Score: 1

      That's where I started as well.

      However, you should also look into some sort of source control. I once got a panicked call from a friend with the very unpleasant news that he'd accidentally run 'rm -f *.c' instead of 'rm -f *.o' for a clean make. I suppose that's as clean of a make as one can perform... but that really sucked.

      That said, nearly ten years on (holy shit, it's been a while), I still suck at source control. I only set up a svn repo last week and still have no idea how to use it *roll eyes*.

      --
      How are sites slashdotted when nobody reads TFAs?
    21. Re:Write a game by CrazedSanity · · Score: 1

      Oh, back in the day... I remember sitting at school, typing out BASIC code on the Apple IIe, working on my final project. It was an "awesome" graphical space game. Of course, the entirety of the game consisted of choosing whether to shoot the alien space ship or not (shooting wins and blows up the ship, not shooting loses and gets your spaceship destroyed). Oh, the fun of drawing pixel-by-pixel.

      --
      Sanity is like a condom: rather have it and not need it, than need it and not have it.
    22. Re:Write a game by Krater76 · · Score: 1

      A game is definitely the way to go. Kids play games on the computer so they naturally know that programming is required to make a game. A Tetris clone made with a simple C library will really start him on the right track. My intro programming class in college (good old CS150) used C - How To Program but I didn't realize how much it cost ($110!). You can get a used earlier edition for cheap or maybe you could find it at a library.

      One of my favorite quotes I heard when in college (I know not from whom):
      "No one goes into programming with the dream of making the next great spreadsheet. They go in to make the next great game."

      --
      "Is life so dear, or peace so sweet, as to be purchased at the price of chains and slavery?" - Patrick Henry
    23. Re:Write a game by Thiez · · Score: 1

      I gave that thing a try, only to find out that I hate Lua. That's a shame, since I really liked the way those creature-thingies moved on a screen.

    24. Re:Write a game by schebro · · Score: 1

      This approach is very good. That definitely sparks a curiosity in him to know how computers really work. The first thing that interested me in programming is printing a pascal's triangle on the screen ;). Teach him something very interesting that computers can do efficiently like various sorting algorithms and such.

    25. Re:Write a game by cptdondo · · Score: 1

      Things are pretty hazy, but I think this may be the first game I wrote.... ISTR working on the code; maybe I got it from somewhere first and moded it. Or maybe this is the original code without my mods...

      http://www.pdp8online.com/pdp8cgi/os8_html/GUNNER.30?act=file;fn=images/os8/edu30.tu56;blk=283,3,0;to=auto/

      Anyway, it doesn't have to be too complex to be fun. This game got so popular that the powers than be prohibited its use as it consumed prodigious quantities of paper.

    26. Re:Write a game by 32771 · · Score: 1

      I agree with this a lot. Nowadays the connectivity of a micro controller is much better than my C64 ever had. All those ad converter and GPIO pins just beat those pathetic game controller ports. Also they are easily extensible through ports like I2C which is pretty much kid friendly with its four lines, nothing like this C64 extension port.

      Just make sure that uC doesn't have banked register files, switching register banks is a pain you needn't inflict upon your kid.

      --
      Je me souviens.
    27. Re:Write a game by I'm+not+really+here · · Score: 1

      I also learned by writing a game. It was in basic. When I say I "wrote" a game, I mean that at 6 years old I copied a BASIC game, line by line, out of the BASIC programming book my dad made sure was on the bottom shelf and available to me.

      My dad did not push me into it, but what he did that caught my interest was that he went to a garage sale, found a used AT&T 8086 in working order, and brought it home. He said "This is your computer. You can take it apart, but you have to put it back together yourself. You can install anything you can figure out how to install. I've installed DOS on there, and BASIC, a program that lets you make other programs. If you have questions, let me know, and I'll try to help."

      I sat there for days reading the book, trying to understand it, and if I asked my dad a question, he said "what does the book say about it?" If I answered with at least some details, he would help fill in the rest - this forced me to find at least something before I asked for help.

      When I finally understood enough to basically (pun intended) know how BASIC worked, I copied the program line by line. When I ran it, it broke (the book, I found out later, purposely had 4 errors which would be easy to find and correct), and my dad said at this point that he would not assist, but that he believed I was more than able to figure it out.

      I did, and I really appreciate my dad's method of helping as little as was needed, as it pushed me to learn it on my own.

      Don't force it, but do encourage it. The gift of a computer that would be my own (no matter how crappy the computer was) was enough to make my eyes like saucers (my dad's recollection of the events describe them as such), and made me feel responsible for understanding how all of the parts worked and how to make the software work. When I grew bored with the game, I wrote a digital clock application and left it running until the computer finally died.

      Sorry for the rambling meander down memory lane, but those memories are really powerfully strong to me, and were the foundation of all my later computer skills, so I felt them worth mentioning.

      --
      Before commenting on the Bible, please read it first
    28. Re:Write a game by gsslay · · Score: 1

      we hadn't seen what was really possible with computers yet.

      By that logic, neither have current teenagers.

      Of course text based games are way simpler than what they can play on their PS3. But that's not really the point. It'll be their text based game. Same way a child's first drawing is way simpler than Pixar's Wall-E. That isn't a reason to not draw another.

  7. Game programming by dvice_null · · Score: 1

    Teach about game programming. E.g. show how to draw simple graphics using libSDL and then perhaps give hints how the graphics could be moved etc.

    I started programming myself, because I wanted to write games. I've been programming for 10 years and I still write games on my free time.

    1. Re:Game programming by FoboldFKY · · Score: 1

      I'd actually say: teach him how to do in-game mod programming. It allows him to make something that has graphics and sound without having to actually learn how to do graphics and sound just yet.

      A good example is World of Warcraft. Lua is pretty easy to pick up, and he can make little graphical toys or try simple automation. Maybe start with the WowLua addon (which adds an interactive Lua interpreter to the game) and perhaps the TinyPad addon which lets him write small scripts and run them from within the game.

      Failing that, there's always Logo. :P

      --
      We're geeks... We're the sorcerers of the modern-day world. --
  8. Re:Son? by Anonymous Coward · · Score: 1, Funny

    Just because you're a loser doesn't mean we all are, I hate to tell you.

  9. Show him the Alice by WetCat · · Score: 1

    http://www.alice.org/
    Nice 3d programming tool, and useful too.
    he'll amaze friends!

    1. Re:Show him the Alice by dintech · · Score: 1

      You could also try Dark Basic too. My little brothers seemed to love that.

  10. Do what my father did by TLZ9 · · Score: 1

    Tell him that if you can program you can create games. (Don't mention how hard it is to pull off creating a 3D-game for one person. ) By the time I realized that my father didn't mention how hard it was to create really cool games I was allready interested in programming. ;) btw. You might want to suggest a language for him that more easily makes him able to get instant results. People are going to shoot me for this but something like Python, Java/C# or even *gasp* VB. (On the other hand, if he's enjoying C that's great as well.)

    1. Re:Do what my father did by dvice_null · · Score: 3, Interesting

      IMHO, if he has already started teaching C, then that is what he should use. Not because C is superior language, but because teaching multiple languages will certainly confuse the student.

      I think that C might actually be pretty good language to start with. You have to do a little more work to write something you might be able to write less lines in e.g. Java, but then again it is pretty logical how things work. E.g. first you initialize SDL, then you get the surface where to draw. Then you draw into it, then you display it.

      In Java, you initialize by creating certain classes inherited from certain classes, get the drawing surface as a method parameter for a method, which name must be something special then you draw to it and then it is automatically displayed. Then you have to study API to find out how is it updated.

      I'm not saying that Java is hard to use for experienced programmer, I think it is very easy. A lot easier than C. But IMHO it is harder to understand for someone new to programming. Or even someone new to Java programming.

    2. Re:Do what my father did by totally+bogus+dude · · Score: 1

      I reckon this is the approach I'd take. C is simple, low-level enough that you get a good feel for how a computer really works, and similar enough to other languages that a lot of the stuff you learn can be re-used.

      I started with BASIC, which teaches bad habits. You can learn bad habits in C, but you don't have to.

      When I taught myself C, it was purely for writing games. And back then, you had a wonderful VGA framebuffer that you wrote values to and shit appeared on the screen. That was seriously awesome.

      Nowadays, there's a lot of abstraction to allow for hardware acceleration and windowing and multitasking and all that other bullshit you didn't have to think about in DOS. SDL is the closest to "bare metal" you can probably get without making your son think you're making him use primitive computers nobody uses any more. Depending on why he's interested in the first place, this might be important.

      Using SDL you can start really simply as I said before, treating the surface as a simple framebuffer and manipulating it directly. If he's interested in game programming, he's gonna have to learn a lot of math, so teaching him how to draw circles and lines by plotting the pixels manually might be a nice way to make it not seem so horrible. Plus, if you know what every part of the program does (even if it's primitive and your monsters are boxes and the player is a cross) you'll feel more of a sense of accomplishment than if you use some framework that does all the heavy lifting for you.

      The other good thing about SDL is that lots of other people use it and there are lots of libraries to do various forms of heavy lifting, so if it turns out his interest is more casual and even the site of code for drawing antialiased lines makes him lose interest, you can then pull in some useful libraries to do the mundane things and he can still have fun with it.

      Or, if you want to fuck with his head you can just teach him OpenGL and 3D programming from the start. It's likely it'll fry his brain, but if he survives he might become the next John Carmack.

    3. Re:Do what my father did by th3doctor · · Score: 1

      Note: I'm only 20, so hopefully I can give you the perspective you're after.
      I learned C first, then C++, both in High School. It wasn't all that easy for me, but I got the hang of it, and I would recommend C as a first language. C allows you to understand what's going on in the computer, and doesn't do too much handwaving. There also isn't the cognitive overhead of "public static void main(String[] args". Try explaining all of that without losing someone. Now try java.util.Scanner s=new java.util.Scanner(System.in); IMO, Java is a terrible language for beginners. It's overly verbose and the implementation just spews out of every API call at you. I'm a Lab instructor at my college, and I've seen people get very frustrated with Java's little quirks. Confusing a beginner is a great way to get them to quit. C, on the other hand, is much simpler. You can explain that "printf" needs to have a bunch of special code to work that's already been written for you, and you're just "including" it. Then you explain that main is a function (just ignore arguments at first) and the int it returns is whether it had an error or not. I don't understand why C gets such a bad rap as an introductory language. Hello world is a lot shorter in C, and there's less to learn than Java. Sure, some things are hard, like pointers and memory management, but the K&R book is only a couple hundred pages. Java barely fits in a thousand. Which would you rather crack open if you were just starting out? Another benefit of C is that it ties in with Unix and is fairly portable, while not disguising what the machine is doing. For me, learning C first has given me a great advantage. I'm working in industry right now as part of my undergraduate requirements, and it was easy getting the job because I knew C well. Plenty of people went to the interviews knowing Java, but what help is that? I also think knowing C and getting pretty good at it made picking up new languages really easy. When I had to learn Java, I already understood what must be going on behind the scenes for me when I called new(), and found memory management to be unnecessary as I'd been managing my own for years. In any event, I think you're doing a great job already with teaching your son the shell and basic Unix stuff (trust me, it will put him miles ahead if he chooses a career in computer science). Keep up the good work and don't get discouraged. Just tackle one concept at a time, and make sure to give him something to apply it with, like a toy problem. He'll probably be tickled to have something useful that does the Binomial theorem and factorials for him. I know I was.

    4. Re:Do what my father did by adrien.lebury · · Score: 1

      I think C would be a nice starting point. I know he's a teenager, but maybe in some years, if he's still interested in programming, he could learn some theory which will be a good complement to his skills as a programmer. I guess every programmer (whether or not he wants to study computer science), at least should learn the basics of algorithm analysis, theory of programming languages and programming paradigms, and some basics of interpreters and compilers theory. That way he will have enough tools to make an objective decision, rather than subjective preferences for any particular language, when he must choose a programming language in function of the different characteristics the problem he needs to solve. This knowledge and a good technical training on some of the most common programming languages (Java, C, C++, PHP, LISP, Prolog, etc.) will make of him a good programmer, with an integral view point of everything around the computer since the text code written until the machine code run by the processor. :P Cheers. - Edwin.

  11. Start him off here... by blahplusplus · · Score: 4, Informative

    C++ primer plus by stephen prata.

    http://www.amazon.com/Primer-Plus-5th-Stephen-Prata/dp/0672326973/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1216718603&sr=8-1

    It is one of the best ways to learn programming from absolutely knowing nothing! Because it explains in very accurate, precise and simple language that is very well expressed.
    This is where I learned to program years ago, and I'd challenge anyone to find a better place to bring an absolute know nothing about programming into the fold.

    It explains all the simple functions and whatnot for console programming, etc, if he can't dig that then he's not fit to program, the book makes C++ as easy as something as python, or the old visual basic.

    The old visual basic 6 is not a BAD place to start if you can find some good programming books, because the old VB gave "immediate" results that kids often look for.

    1. Re:Start him off here... by dargaud · · Score: 4, Insightful
      I don't usually write flaming posts, but C++ as a teaching language ?!? You are smoking crack. It has the worst and most complex syntax of any language ever invented. Even Brainf*ck has a cleaner syntax than C++.

      Wanna teach a language, then take one that's both interpreted and compiled like Python, Lua, Ruby. Take something that is radically efficient like Erlang or OCaml. Take something that is meant for teaching like Logo.

      But C++ ?!? Hah, why not Perl, then !

      --
      Non-Linux Penguins ?
    2. Re:Start him off here... by LM741N · · Score: 1

      If you want him to learn object oriented programming, I would suggest Python (Java as a second choice). Python is how I learned the meaning and usefulness of OO programming, mainly because it was not as arcane as C++, and not strongly typed as Java.

    3. Re:Start him off here... by barzok · · Score: 1

      The old visual basic 6 is not a BAD place to start if you can find some good programming books, because the old VB gave "immediate" results that kids often look for.

      VB6 encourages so many bad practices, protects the user from so many errors they should be learning from, and the language & syntax are so "loose" that I consider it poison for the mind if you have any desire to move on to other languages.

    4. Re:Start him off here... by blahplusplus · · Score: 1

      "I don't usually write flaming posts, but C++ as a teaching language ?!? You are smoking crack."

      Look I'm speaking from absolute experience here, I knew how to make basic batch files back in the day (DOS), but I could never wrap my mind around programming languages very well until I found Stephen prata's C++ primer, his primer does not only teach you about C++ and much of it applies to every other language, once you read and do try the stuff in that book it makes C++ easy. I know because I tried a lot of c++ books before that didn't do anything for me, and I ended up giving to the library or selling them.

      The right books can take something that seems like it is hard and TELL YOU EXACTLY what you need to do and what is going on, go read c++ primer plus, then come back and criticize me, because until you've done so it's a criticism that is completely uninformed.

      I'm speaking as a person that began having absolutely zero knowledge, and that book is a extremely good place to start for anyone. Everyone thinks they "know" how to teach, but we all teach ourselves -- "The only man who can convince himself of anything is himself" (mine). But the same applies to teaching, teaching can only take you so far because learning is done through repeated exposure, practice, and is over 90% of all learning is done unconsciously for you.

    5. Re:Start him off here... by CountBrass · · Score: 1
      One reason is pointers. None of the languages you propose require any knowledge of pointers.

      That said, I'd still propose C rather than C++ (which I agree is a god-awful mess) to learn about pointers.

      --
      Bad analogies are like waxing a monkey with a rainbow.
  12. BASIC? by Alarindris · · Score: 1

    I taught myself BASIC on an Apple ][e when I was eight or so from books I checked out at the library.

    It's fairly easy to read, i.e. TO, FOR, LET, GOTO etc, are self explanatory.

    The most important thing to get through to him is program flow, learning other languages is cake once you understand how to efficiently break a task into parts.

    1. Re:BASIC? by iznogud · · Score: 1

      I tried BASIC to teach my little brother programming. Like you, I started with C64 and simple BASIC programs, and that seemed like a good choice.

      But... back in the day, with a little luck and couple of free weekends one can finish a game that actually looks somewhat like "commercial" titles, because these titles was made mostly by one (lonely ;) ) man in his basement. And now, with multimillion budgets for games, I found that simple animation of letter movement on the screen aren't good enough to keep distracted teenager in front of the keyboard. After BASIC, I tried with some Python programming, but it was already late - the kid wasn't interested any more.

      The moral of the story is: take your time to pick the right weapon, and pick something which is flashy and gives immediate results.

    2. Re:BASIC? by thetartanavenger · · Score: 1

      I'd say go worse than that and start with visual basic, (man I'm gonna get modded into oblivion for this one). Certain parts of C etc are way beyond what he needs right now, and vb gives him a familiar environment to begin with. We can convert him to the console later..

      With VB the user starts off performing basic frame layout, which is very easy to do, followed by small amounts of code to make each button etc do what its meant to. In the long long time ago that I did vb programming, there were loads of examples and a very good documentation system setup that got me through everything I needed fine, and made it fairly easy for me to find some way of doing something. The use of vb to design a ui is what will hopefully make him think it's really easy to do all of these little annoying tasks and it will produce something he's much more used to dealing with (for now). Console apps are great for us techies, but for a budding techie they can still be a little scary, and actually quite boring..

      Next, find something on the computer that pisses him off and home in on it. Go through with him what about it pisses him off, and then suggest ways he could solve this issue by writing a tiny program or script. I started off with writing a media player (using the windows media player plugin *shudder*) because everything on the market at the time was crap, with the likes of musicmatch and everything. It was also in the time when wmp had very limited function and because of this was possibly the best media player they've made. I gradually built up a media player that in the end was pretty advanced for it's time with a full database, reading and parsing of filenames and mp3 tags, and even it's own api used for control across a network, control within between processes, and to allow users to create their own skinned apps.

      For me it was the ease of doing things that got me more interested. And from there on in I moved on from the horror that is vb to sensible languages like C, but had it not been for the ui builder in vb it would have been a lot harder and less fun for a teenage boy with a short attention span.

      Disclaimer: I have not used nor even seen vb in over 7 years now and I now live and die by the console.

      --
      Who need's speling and grammar?
  13. I'm in college... by redkazuo · · Score: 1
    I started programming when I was fourteen. My parents aren't programmers, so I had to find my own way through curiosity. I just tried creating a couple websites with frontpage and later dreamweaver.

    A couple months later I found out about javascript and bought a book about it. Then it was Perl and the Cammel, then C.

    I think you should try to show him skills that seem valuable to him, maybe because he could brag about it to his friends, or (if he admires you), he could get some recognition from his pop, or even try to make a little money creating a website.

    Anyhow, the bottom line is that I think you should give him what he will find valuable and useful. I'm sure he'll find his way to unix soon enough, I did.

    1. Re:I'm in college... by cparker15 · · Score: 1

      I also started with HTML, then began messing around with event handlers (thanks to Joe Burns at HTML Goodies). I eventually wrote my own basic Checkers game in JavaScript, which caught the attention of the programming instructor in my high school. He invited me to his Programming III class, which was C++, skipping two years of BASIC (I still don't know how to program in BASIC). While taking the C++ class, I started teaching myself Perl and had my first introduction to Visual Basic in a marine biology class (oddly enough) putting together an ecosystem simulation in Excel with VBA. Then came PHP, Java, Python, shell scripting, ...

      For immediately visible results, I recommend an interpreted language. I know I'm biased, but I think JavaScript is a good introduction: loops, conditionals, recursion, OOP (to a degree)... Furthermore, you don't have to learn a GUI toolkit (although I guess you could equate the DOM with this). Best of all, it's platform-agnostic.

      For a book, I learned C++ with Deitel & Deitel. I leafed through a D&D JavScript book shortly after that class and I noticed all the examples and assignments in the beginning of the book were identical (they mostly just replaced cout << with document.write()).

      --
      Have you driven a fnord... lately?

      You must wait a little bit before using this resource; please try again later.

  14. In my day... by SimonGhent · · Score: 1

    In common with (I suspect) a lot of Slashdotters, I started out on computers in the Spectrum/CBM64/BBC days when you had to program, in BASIC, to get anything done and that's what got me going.

    I stayed in computers, eventually doing a Computer Studied degree and worked for several years as a programmer for an IT consultancy company, using C++, Visual Basic, Java and C#. In the end (about five years ago) it seemed that all there was in "programming" was SQL. Now I'm not knocking database developers, but that didn't float my boat, so I moved into business analysis.

    It seems that now, the majority of big programming is done off-shore, in India for the most part.

    I'd suggest something web-oriented to get someone interested, but maybe teaching the basics of variables, looping, procedure calls and such-like in something like C++ or (dare I say it) Visual Basic would be a good place to start.

    --
    simon
  15. Hackety Hack by BlackPignouf · · Score: 1

    http://hacketyhack.net/ is the answer!

    You can write blogs, mp3 downloader/reader and basic graphical interfaces in a few (Ruby) lines.
    I wish I had it when I was a kid... GWBasic wasn't so glamour :-/

  16. Do 3D by zwei2stein · · Score: 1

    Basic "Hello 3D" with triangle rotating can be done in ~ 20 lines.

    It takes a while to grasp, but it encourages and rewards experimentation.

    First they will fiddle with numeric constants and see what it ends up, then they will add lines to add more objects, eventually learning cycles and arrays for some animation ...

    Just don't bore them with background stuff unless they want to know it.

    --
    -- Technology for the sake of technology is as pathetic as eschewing technology because it's technology.
  17. Re:SDL by LingNoi · · Score: 1

    I disagree with SDL. pyglet would be a much better idea.

  18. Keep it simple, for now by Rigodi · · Score: 1

    Based on personal memories

    My father was into it, working on IBM 390 systems and I was eager to get my own computer, to see how it worked and to know how people could program it.
    When we received the beast (ZX81) my father just spent a few hours showing me trivias about variables, for-loops and simple input / outputs. That was it.
    Then it was just a question of personnal interest, that turned into passion, finaly. Later then the adult can help from time to time or give tips, perpectives, etc.
    So my idea is that plain simple basic might be enough. May be just an old VB or a simple PHP sandbox. OOP, web technos can wait a bit. Just start with the 101 and look how your kid responds.
    Hope this helps,
    F.

  19. Solving problems by Yetihehe · · Score: 4, Insightful

    Show him how he can solve some simple problems for school, so he can later try to solve some more complicated problems. I have started this way when I was 12.

    --
    Extreme Programming - Redundant Array of Inexpensive Developers
    1. Re:Solving problems by SplinterOfChaos · · Score: 1

      There's a site for that: Project Euler

      Actually, it's good practice for ANY programmer. Try a few!

    2. Re:Solving problems by theimplord · · Score: 1

      Yes. I wholeheartedly agree. I started programming on my graphics calculator to do basic physics and math problems. This is what really got me interested in programming. It was a great way to learn, as with the maths you have to be quite exacting in your calculations, and you know when you're wrong. Additionally, the BASIC on the TI-8* line of calculators is quite simple, and he probably has one already. The portability has its benefits as well.

      After the calculator...

      I've found that the most motivating factor for learning things, especially programming languages and how to program is finding a good project. It doesn't have to be big, just something with a goal. Early on, it's nice to have something that doesn't require too much architectural stuff, as it's easy to get bogged down in the planning, and not actually get anything done. This makes it difficult to do programming on the computer, as most things which you want to do will require a graphical interface (for which C# is quite helpful, as the designer is excellent - if you're willing to use windows). But if you want some simple utilities like text or image conversion scripts, they can be a good place to start (e.g. copying new pictures from his camera, downsizing them, and uploading them to facebook, for instance). Learning things, especially computer tasks, is much easier, and much more productive when there is an end goal (especially if it's within sight).

    3. Re:Solving problems by Cor-cor · · Score: 1

      I would definitely agree that teaching him how to cheat at schoolwork would be the most likely way to get and keep him interested.

  20. Graphics Programming by Destrius · · Score: 4, Insightful

    Being able to produce pretty pictures is always fun. I learnt programming by spending all my time drawing bouncing balls that changed colour in 320x200 VGA. Of course nowadays kids can use a lot more powerful graphics libraries like the aforementioned SDL, which can let them make a lot cooler stuff.

    If he gets the hang of it, you could even teach him how to write a raytracer. That would also be good for his math, and be a nice project where more advanced programming techniques (e.g. data structures, recursion) and more advanced math (calculus, 3D geometry) have practical uses.

    1. Re:Graphics Programming by Larsrc · · Score: 1

      Mod parent up! Immediate feedback v. important, and probably to blame for the success of the early home computers: You turned on the computer, and youo could immediately go "circle 10, 10, 10" and have a pretty circle. From there comes wanting to make more, then making it easier, at which point control structures, variables etc come in. If you have to learn to use and editor and a compiler and a graphics library and so on just to get your first results, it will look cumbersome. Unfortunately, there are few places to go for that. My best shot would probably be Javascript with an appropriate web page that includes basic graphics stuff, then just use the FireBug console.

    2. Re:Graphics Programming by AmiMoJo · · Score: 1

      I have to agree, graphics is the way to go to get kids interested. It's how I became interested, back with Locomotive Basic II on GEM with an 8086/640k/CGA PC...

      Things actually seem to be harder these days. It's amazing really, but there certainly do not seem to be any free languages that are ideal for beginners and support easy graphics. Maybe C and OpenGL, but C is not ideal to start with. A good BASIC interpreter with good graphics would be ideal, but the only one that comes to mind for Windows is Blitz BASIC and it isn't free.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    3. Re:Graphics Programming by pimpimpim · · Score: 1

      That's how I learned it. Moving a turtle around on the screen drawing lines in LOGO. Nothing wrong with starting with a limited subset of commands to get the idea what an algorithm is and how you can use it. From there on it goes fast enough.

      --
      molmod.com - computing tips from a molecular modeling
  21. Start with basics. by mimada · · Score: 2, Interesting

    Get him on a typing tutor first. It'll come in handy regardless of whether he sticks to programming. As he's learning to type, print out some interesting program listings (or get a book). Have him type in the programs (don't let him just cut and paste). Once he has the programs entered and debugged, have him modify or customize them.

    Once he's done a few of these, he'll have experienced the rewards and tedium of programming and should be able to decide if this is the right path for him.

    1. Re:Start with basics. by drx · · Score: 3, Funny

      Right, and let it save him on cassette tape, that, if it doesn't get corrupted by itself, you should demagnetize in random intervals. Just like we learned the true stuff!

    2. Re:Start with basics. by stewbee · · Score: 1

      The previous two poster are being a bit sarcastic, but I think that you do have a good point from my experience. When I was younger, I didn't have the patience for programming, mostly because I was a terrible typist. I guess you could look at it as struggling with two tasks simultaneously: my horrible typing and my lack of knowledge of programming. Since I have gotten older, I now know how to type proficiently, so now I can concentrate on the actual programming part.

      If anything, teaching the kid to type will be a good skill. He will be able to use it in high school for writing his papers. And should he/she go onto college, they will be even better prepared.

    3. Re:Start with basics. by cashman73 · · Score: 1
      I'll disagree here. Doing a typing tutor or course is a complete waste of time. He'll learn how to type just by virtue of using the computer, if he doesn't know it already. I never took any typing class myself; I still remember the days back in high school -- I'd be watching all the non-techie students take their typing classes, while I was on the other side of the hall taking programming. In the end, half of them can still only type, at best, 30 wpm; meanwhile, I learned to type a lot faster than that AND learned something useful like coding,...

      I'd probably recommend starting with some of the scripted languages, like PHP (you can tie this in with HTML quite easily), then move on to Perl and Python, and then work your way up to C/C++.

  22. Javascript by dgun · · Score: 2, Insightful

    Javascript is not really a best first language to learn, I don't suppose. But my teenage son was more interested in it than in the C 'hello world' example I showed him, because he was familiar with web pages and web browsers and he could immediately see the implications.

    My guess is that if you do a simple script that moves something around on the screen and then let him play around with it some, that this will spark his interest.

    Good luck

    --
    FAQs are evil.
    1. Re:Javascript by TheRaven64 · · Score: 3, Informative

      JavaScript has some horrible syntax, but semantically it's a very clean Self-derivative. If you learn JavaScript well, you learn about Lieberman prototypes, closures and late binding. It also has the advantage that it's easy to write JavaScript code for the web that actually does something useful. I'd still probably recommend Squeak over JavaScript, because Smalltalk has much simpler and cleaner syntax, but JavaScript isn't a bad second choice.

      --
      I am TheRaven on Soylent News
    2. Re:Javascript by Z00L00K · · Score: 1
      TCL, Pascal and Java are languages that may suit the beginner.

      C can get you into really weird problems due to the nature of the language with pointers.

      Learning a language that's simple to read and use is a blessing in the future.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    3. Re:Javascript by dgun · · Score: 1

      And do you think the loose typing and automatic typecasting is a plus or a negative, in terms of first languages to learn?

      (hey, I almost hit your buzzword.)

      --
      FAQs are evil.
  23. The interesting part of the problem. by leuk_he · · Score: 1

    Maybe game maker is nice way to get his interest.

    It might not be the best introduction to programming, but it is fun and beats surfing the internet and dull programming in a true language.

  24. Re:Games by aero2600-5 · · Score: 2, Insightful

    I have to second this one. I got hooked on programming in high school in a class where we had to program robotic Lego sets to do specific things using BASIC. Regardless of what you use to interest him, I would avoid projects longer than 3 months. If kids work at something too long without any reward, they're likely to lose interest.

    --
    Please stop hurting America -- Jon Stewart
  25. Re:In my day... by robcfg · · Score: 1

    I started with the Atari 800XL/ Amstrad CPC basic and I think visual basic it's way too complicated because it uses many things of windows that can obscure the learning process. That said, if we learned with older machines, why not give a try at some emulators and let him start doing things in pretty plain old basic? You can find most basic manuals for old computers quite easily and he won't be frustrated if a dll is not found or if he cannot guess why a weird event does not happen.

  26. Hello World says a lot about motivation. by sleeponthemic · · Score: 1

    Most programmers started out teaching themselves. Only mild support is necessary. Either he has the interest or he doesn't. Chances are if he's not especially moved by a hello world program he's probably not going be that motivated to stick with it.

    --
    I record my sleeptalking
  27. NetHack! by ThePhilips · · Score: 4, Insightful

    Give him nethack (or any other OSS game) to play. After a while when he will get interested - give him the source code for it.

    Programming games is probably most engaging activity. I'm 31 now - but still on it ;)

    --
    All hope abandon ye who enter here.
    1. Re:NetHack! by ThePhilips · · Score: 2, Insightful

      btw, there are bunch of games written in Python using PyGames framework. That to me sounds definitely as good idea. Using PyGl you can also utilize 3D things.

      --
      All hope abandon ye who enter here.
    2. Re:NetHack! by ldbapp · · Score: 1

      I think this is the way to go. But not just games. Give him a working program that does anything of interest to him. Then when he says, "hey, can we make it do [this]", you are much closer to positive feedback, because you have a working framework. The challenge is giving him perspective on how hard [this] can be, and help him choose mods that can be done quickly at his skill level.

    3. Re:NetHack! by halivar · · Score: 1

      I learned how to program in C on ROM 2.4. If that doesn't teach you pointers, nothing will.

  28. PHP by comra · · Score: 1

    Why not start with PHP where he can see the result instantly?

    1. Re:PHP by Tangent128 · · Score: 1

      JavScript would be preferable; no need to muck around with webservers, so it's even faster to start with. Plus, a prototype-based object oriented system is simpler to learn; no mucking around with classes, but equally powerful.

      (Just don't mention document.write(); it's been bad practice for years, and document.getElementById("...").innerHTML is a simple enough idiom, if not DOM kosher.)

  29. The best language... by IBBoard · · Score: 4, Funny

    The best language to teach him is $trendy_language_of_the_moment. If you don't teach him that then he'll never get anywhere. How can people hope to encourage people to learn when they're using $formerly_trendy_language? It's just so horrible that I'd rather gouge someone else's eyes out with a spoon that use it instead of $trendy_language_of_the_moment!

    1. Re:The best language... by Count+Fenring · · Score: 1

      Mod parent up.

      You sir or madam, are an absolute gem.

    2. Re:The best language... by Foolicious · · Score: 1

      My trendy language of the moment doesn't use dollar sign variables, you insensitive clod!

      --
      Please don't use "umm" or "err" or "erm".
    3. Re:The best language... by WatersOfOblivion · · Score: 1

      Actually, I think that would be @trendy_language_of_the_moment...

    4. Re:The best language... by jonaskoelker · · Score: 1

      Your post advocates a

      ( ) Perl-based
      ( ) PHP-based
      (X) Shell-based

      approach to making fun. I don't think it'll work. Here's why I think it won't work:

      ( ) You will piss people off by not mentioning $fancy_wrapper_around_lambda_calculus
      ( ) You will make people reminisce about the good old $formula_translating_language days.
      ( ) You fail to mention the important system (particularly in the banking world) written in $some_venerable_business_oriented_language; the people who liked it will scoff.
      ( ) Due to your being general, you fail to suggest any specific language (i.e. $python).
      (X) Your syntax makes it unclear what the value of $c++ is

      Also, the following objections may apply:

      ( ) Ideas similar to yours are easy to come up with, yet none have shown funny in the past.

    5. Re:The best language... by HappySmileMan · · Score: 1

      As long as he only exposes his son to camelCase I don't care what language he uses

  30. Information overload by Yold · · Score: 1

    When I was 14-ish, I liked to futz-around rather than program seriously. If he is like me, and has a short attention span, buy him 3-4 books on programming, and point him to as many free source code websites as possible. Ebay has some cheap books I'm sure. Ideally, get him books on 2 different languages, and find ones that are moderately comprehensive.

    The other 2 should be like coloring books for programmers, although I didn't understand nearly enough of the math at the time, DirectX in 24 hours was cool.

  31. Javascript? Facebook apps? by 6Yankee · · Score: 3, Interesting

    No, really. That way he can share his games or whatever with his classmates, simply by sending them a link.

    Of course it'll be a longish road to get to that point, but it might be a goal he can relate to - and I know I simply wouldn't learn anything unless I could see the point. Still don't at 34, come to think of it :)

    1. Re:Javascript? Facebook apps? by pastudan · · Score: 1

      Agreed.

      Some others suggested Lego Mindstorms, C++ books, and programming games.. and those are all great. I am in college now, and I fondly remember dabbling into all of those things for a little while.

      Somewhere in high school I got into web design, making some simple PHP scripts that show random quotes, and now I am doing things with PHP + MySQL databases, and pretty AJAX calls.

      I have seen a trend in programming (and don't quote me because I am probably biased), but more and more applications are becoming web based. Look at Gmail, Google Docs, etc... its awesome to have everything you own online, accessible from any computer, anywhere, and the only thing you need is a web browser. And like 6Yankee said.. its great for showing off to your friends because you can just send them a link with the latest project you are working on. Teenagers these days are on the web checking their facebook all day anyway, but they might be a little hesitant to getting on their email, downloading a mysterious EXE, and running it. (BTW, what runs on Firefox will run on Firefox. Whether it's on XP, Vista, Mac, Linux)

      Now it depends on your son, but if hes anything like me then he hates reading programming books. For me, PHP is seriously easy to learn because you can Google anything you are trying to do, and someone has already done it. And of course, PHP, MySQL, and Apache are all free, open source, and Linux based. Good luck getting him motivated! But at the same time don't force him.. for me it was more fun to really want to learn on my own.

    2. Re:Javascript? Facebook apps? by MrMunkey · · Score: 1

      There are already some Javascript games out there. Two examples I can think of off the top of my head are:

      Processed Tower Defense is a strategy game where you try to defeat waves of dangerous monsters before they reach your tower. Of course, its less of a tower and more of a blueish square on the right side of the screen, but the idea stands.

      It is created using the Canvas element and the Processing.js Library by John Resig

      Track Attack is a puzzle game where you have to lay out the tracks to to the destination so that the train does not crash. Yes, I am aware that I made this game, and I am aware it's still a work in progress.

  32. Make it about programming and something else by shaka · · Score: 5, Insightful

    First off, I think you should start with a language such as Python or Ruby. I started with BASIC which was easy to grasp, and more modern languages are easy yet more powerful.

    Second, when I started programming I was first looking at my brother, writing really simple BASIC programs on the C64. Later, I was interested in fractals and wrote algorithms for drawing fractals. I had a book with code examples for different fractals, but in some other language (I don't remember which). The process of interpreting the algorithm in the first language and translating it to BASIC was very good for learning. Tweaking and extending the algorithms and seeing the changes visually was very encouraging.

    Today, if I were to teach a kid programming, I think I would look into Lego Mindstorms. It helps if the kid is into Lego or robotics, of course. That's a contained environment with a powerful and easy language, which is also part of something else, with immediate feedback on the changes. You can program it in either the Lego-supplied RCX Code (BASIC-like) or ROBOLAB (LabView-based), or any of a number of languages supplied by the community (C, C++, C#, Java, Lua etc).

    --
    :wq!
    1. Re:Make it about programming and something else by MattG91 · · Score: 1

      This is coming from a 17 year old. I second the dude who mentioned Mindstorms- my dad brought home a book on robotics when I was 12 or 13 years old. I was so intrigued that a few months later I got the Lego Mindstorms 2.0 building set for Christmas. When I got some experience, we joined a FIRST Lego League team. I stayed on the team until I was too old for the competition- but it was a lot of fun. The programming environment for the RCX was this wierd, but kid-friendly visual drag-and-drop environment, and it was pretty much the same for the ROBOLAB stuff. You could define custom "blocks" as you progressed, and there were even third-party firmwares (NQC, Not Quite C). The NXT, the next-gen Mindstorms, is even better- the programming hasn't changed much, but the hardware in the $250 kit is superior. Robotics is how I got into coding stuff, and I think it was because I could see my programming at work- much easier than on a computer. Right now I build webpages for a summer job, and I had much more fun messing around with that kit. But it's taught me how to think like a programmer. So, give your kid a sandbox to play in. Be sure you give him tools and toys that aren't easy to break, or hard to assemble. Let him go at it. And give him some challegnes- once he knows the ropes, have him make his creation do something specific, with progressing complexity. In the competitions we had certain "tasks" we had to do within the 2.5 minute time frame of the match. But of course help him when he gets stuck- complexity and frustration early on will make anyone want to quit, especially when they could be watching TV or playing Guitar Hero ...but the latter is an excellent alternative.

    2. Re:Make it about programming and something else by wcboyd · · Score: 2, Informative

      I would tend to agree that this is a great way to provide immediate feedback and still give someone a basic enough knowledge of programming. Another alternative would be REALbasic (www.realbasic.com) It is about as platform independent as you can get and will also provide immediate feedback. Plus, for Linux users the standard version is FREE!

  33. Programming IS a game. by SplinterOfChaos · · Score: 1

    When my mom was learning, she thought it was fun making things and putting them on the screen, then changing them and seeing what happens. Just today, I tried to see what happens if I change all me velocity vectors to integers and it was fun to see everything stop moving because their velocity was always less than one to begin with.

    Teach him how to play with code.

    Also, whether or not you'd bore him is a level of his determination. I've been programming since 16 and I made worthless, unimpressive code until I was 18, but I kept on because I knew I'd some day make games. All that experience made it so that with one semester of C++ and an SDL tutorial, I could make a sweet and simple game.

    On the other hand, many of the people who graduated for a degree in computer science claimed they never wanted to program again. Determination will decide whether he programs or not. He can have all the knowledge in the world, but not touch a computer again if he lacks determination.

  34. Explicitly disallow it. by Anonymous Coward · · Score: 5, Insightful

    That's THE way to get ANY teenager to do ANYTHING.

    1. Re:Explicitly disallow it. by mordejai · · Score: 1

      That's not enough. You have to give him a good reason:

      "BECAUSE I SAY SO!"

    2. Re:Explicitly disallow it. by houghi · · Score: 1

      I agree. All the rest is forcing somebody to do something YOU like, not what (S)HE likes.
      This is the same as on how to make a kid interested in sport X, Y or Z.

      You can't MAKE somebody to like something.

      --
      Don't fight for your country, if your country does not fight for you.
    3. Re:Explicitly disallow it. by The+Asmodeus · · Score: 1

      Exactly. Tell them they can't do it. Tell that you don't want them getting involved with that crowd. That it's "not the right crowd" to be involved with. Tell them you don't even think they would be good at it.

      Almost all children rebel as teenagers. The trick to be a good parent is trying to pick a suitable rebellion.

      My father told me to give up computers. They where a fad and that I should spend my time learning how to do things that will make me money later in life. Only rub was, he was serious...

      I still bring that up to him for a good laugh now and then.

    4. Re:Explicitly disallow it. by logixoul · · Score: 1

      speak for yourself.

  35. Encourage? by clarkkent09 · · Score: 1

    IMHO the answer is don't. If he is really interested in programming, he will not need much encouragement, in fact the problem might be how to keep in away from the computer long enough to have social life. If he loses interest or finds it too hard, then you might unintentionally put him under pressure to keep going just to keep you happy or to prove he is smart enough, and that ain't no recipe for happiness. Be prepared to deal with a possibility that he might decide programming is not for him and that he really wants to be a male ballerina or something, because that's fine too if it would make him happier in the long run. As for the teaching methods, that's a tough one. I kind of lean towards getting them immersed in one thing, language for example, until they understand it in some depth and then using that as a base to learn other stuff. But then different things work for different kids, so there is no one correct approach

    --
    Negative moral value of force outweighs the positive value of good intentions.
    1. Re:Encourage? by jamesh · · Score: 1

      I wholeheartedly agree with this. From the first moment we got our first computer when I was a kid - Amstrad CPC664 - I couldn't keep my hands off it. Playing games was fun of course, but the Amstrad, like the Commodore 64, came with a very good reference book that contained all an 8 year old needed to get started programming with. Now, over 20 years later, I still can't get enough of programming...

      Either your kid is passionate about it or he isn't. And if he is, you wouldn't be able to stop him anyway.

      You could try telling him that writing programs is a good way to impress girls, but the chances are he'll see through you. A career as a male ballerina is probably a better option if that's what he wants anyway :)

      I guess part of the problem is that computers are everywhere, and aren't the exciting and mysterious things that they were to me when I first got my hands on one. My kids at about 3 years old could turn on the computer, log in (password = username, and usernames are only about 5 letters), and start playing flash games without any assistance, after being shown how a few times, even though they barely recognise the letters. Just like they figure out how to use the remote or press the right buttons on the tv. As far as computers are concerned, they are just another box that does stuff, and they'll learn the minimum amount of stuff to make them do what they want.

  36. Ruby, Python, Qt by slashflood · · Score: 1

    Ruby (maybe Python) is one of the last 'frustrating' and 'discouraging' languages out there. To make it even more interesting, give him Qt to play with. With Ruby/Qt or PyQt you can open up a window in just a couple of lines. Even 3D stuff can be done with that combination and that keeps him entertained for quite a while. Bonus: object oriented programming from the beginning.

  37. How about Logo? by nithinsujir · · Score: 3, Insightful

    I think logo was my first programming experience and I enjoyed it. It's great to see the fruits of your labor instantly in graphical form.

    1. Re:How about Logo? by baker_tony · · Score: 1

      Yeah, totally agree, Logo is what got me interested in programming! I remember spending hours at it, then I moved on to BASIC and entering in code out of magazines... damn that was a long time ago!
      Go the BBC Master Compact...

  38. Personally by ledow · · Score: 5, Insightful

    I don't see that not having a flashy GUI means anything. I grew up in a world where I saw flashy GUI's for exactly what they were. I was much happier hacking DOS to get that extra few KB of base memory than I was playing about in Windows 3.1.

    The problem is that you can't foster curiosity, which is the main driver here. Nothing will make you sit down and learn a programming language more than curiosity for what you can make the computer do, whether you can do something better than Microsoft, etc. You can try very hard to keep interest, though, and there practical results tend to have greater effect - this is why most basic ICT in schools is based around roaming turtles, Lego RCX, "traffic-light" kits etc. Computer-controlled with visible, physical effect.

    Personally, I think the best way to foster the right computer skills isn't to use a computer much at all (this is a philosophy I've held for most of my life - the best way to program is in your head, not a machine - the best way to write a story is on paper, not a word-processor, etc.). The best things to use to learn are simple gadgets. I'm not a gadget person. I'm not even very good at electronics but I struggle along and get a lot done.

    Wire your house for a burglar alarm, controlled by a computer, and involve your children in every step. If your practical skills aren't up to scratch (good, you can "learn" by your mistakes together and your child can try to "out-think" you when you both hit the same problem), you can get X10/DMX-style equipment that makes it a cinch. But there's nothing like a bug that'll scare the crap out of you when the alarm goes off because you didn't cater for a niche-case (opening the back-door while the power was out etc.). It only needs an ancient "sacrifical" computer that doesn't matter if you blow its parallel port, and it introduces every single reason behind having computers - automate tasks that a human could do using simple, cheap components.

    You can learn programming, you can learn embedded programming, you learn about the importance of bug-checking and clean code, you learn about interfacing, buses, serial/parallel data transfer, physical and real-world effects and how to counter them in software (e.g. switch debouncing). You even get to learn how the damn computer does its job so that it's no longer a magic box that does stuff. You get to interface with all types of cool gear. You get to bring practical, real-life skills into the learning environment which can help immensely if your child learns better that way. (And I don't count "how to write a letter in Office", I mean REAL life skills, like practical problems, electricity and electronics, wiring, why the bloody ladder won't stay still and why Daddy put his foot through the roof).

    The rewards are instant, visible, practical, extendible and "show-off-able". The "reward" of having the whole family laugh at a a doorbell that plays a WAV when someone presses it is very rewarding especially when "it was all my son's work". My particular favourite is a doorbell that goes "knock knock" when you ring it. I also bought an old-fashioned door knocker which has an integrated switch in it and want it to set off a "ding-dong" sound, just to see the postman's face. I'm doing it with simple electronics and one of those recorable greetings-card chips but you can do it with a PC easily. Ten minutes of very basic wiring to an old-fashioned joystick port (ancient laptops are great for this sort of thing), a WAV file off a free website and a twenty line program. You can see exactly where his skills lie. Is he a better programmer? Is he a better thinker? Is he better at practicalities? But no matter what he is, it's so simple to do that you can have great fun wiring it up (probably with Mum in the background tapping her feet because she's getting sick of "Yankee Doodle" every time the neighbour's call).

    Then you need to get to the point, as quickly as possible, where he can *think* of new stuff to do himself. You started with a doorbell

    1. Re:Personally by Anonymous Coward · · Score: 1, Interesting

      > I don't see that not having a flashy GUI means anything.

      No, but having a simple to use GUI editor (Delphi back in the day or maybe lazarus nowadays on Linux) means you can quickly get results, and you can have a GUI without lots of frustration. None of the GUI toolkits IMO qualify under the "keep simple things simple to do" criteria.
      For someone who like me likes mathematics, geometry and graphics, OpenGL is very nice and to me provided a natural way (and reason) to transition to C.

    2. Re:Personally by ledow · · Score: 1

      It's incredibly easy, it really is. I have a computing degree, I work in IT support, I do programming on the side but I've *never* been taught electricity, electronics or anything vaguely related. After a few years of self-study, yes, I can do just about anything up to and including building something like a ZX Spectrum from parts (although I won't touch surface-mount devices because I'm the worst person in the world at fine motor control... typically geek-clumsy). But the stuff I'm talking about is all modular, simple stuff. I honestly started doing this sort of thing for myself and others - it's amazing what you can do with nothing more than some wire and a computer.

      One of my first projects was to build a "burglar alarm" circuit for the local Scout group to "defuse" as part of a themed camp. It had keypad entry for a PIN, it had a bundle of coloured wires that had to be cut in sequence, it had sensors to detect if they tried to move it, it had a protection that would not allow the box to be opened. And it used batteries, wire, a small mercury switch (costs pence) for the motion sensors and some ingenuity. There were no chips or other electronics involved (if people are interested, it ran on batteries which were constantly short-circuited through a long length of wire but in which any "incorrect" action cut the short-circuit and allowed the batteries to power a small loud siren buzzer).

      For the particular things I mentioned, though (i.e. real practical applications, not toys), Caller ID is nothing more than a common modem option (if you are in the UK, check the modem first because we have "odd" Caller-ID that isn't necessarily supported even by modems that claim it... US modems tend to just work if you're in the US). You can even do it on mobiles if you have the data cable - everything uses the AT instruction set so it just "appears" on a serial port as textual data.

      On Linux, just "cat" or "fopen" the serial device that appears when you plug the data cable or modem in. On Windows, grab a serial library. Literally, when the phone rings, the modem will give out "RING" on the serial port and, if Caller-ID is supported/enabled on the phoneline/modem, you will get "NUMBER +441234567890" as well as TIME and DATE entries. You might need to send it an AT string to initialise it but you can easily look that up (usually ATZ is sufficient) and it won't do anything to your phoneline if you don't output any string to the serial port. A couple of lines of string-parsing code and either a speech synthesis library or a home-recorded audio file and you have an auto-announcing Caller ID setup.

      Burglar alarms are incredibly simple - push 5 or 12V through a single wire of a two-core cable which goes through all the PIR's, door contacts (which are literally nothing more than a "reed switch" which is always near a magnet when the door is shut), "panic buttons" and anything else. Make each device join the "input" wire to the other "output" wire on the cable (daisy-chaining is also used and easier but requires a bit more effort). As soon as something "goes off" (door opens, PIR senses movement etc., panic button pressed) it will break the circuit (as if someone had cut the cable).

      To detect when something happens, it's just a case of making sure you're still getting 5 or 12V at the "output" wire of the cable. If you buy any wired burglar alarm, you'll find that this is EXACTLY how it works. You can even usually pinch the components from any off-the-shelf burglar alarm and/or extend an alarm setup with your own devices (check voltages with a multimeter first).

      Using the K8055 interface I described (£25 pre-assembled in the UK from Maplin's - a major high-street electronics store), or any similar A/D input for a PC, it's as simple as getting a length of cable, putting one end on an "output" from the PC (or just a 5v adaptor near the computer) running it to one side of an alarm-sensor, running another cable from the sensors "output" back to the PC on an "input".

      Using the commo

  39. BASIC + graphics by Anonymous Coward · · Score: 1, Insightful

    I started learning programming with QBASIC (on my own, wth some help from google).

    It's simple to understand (a kind of...), and if you show him some the graphical stuff (different resolutions, on text mode, graphical mode) it think will be courious to learn. (make sure that your windows/dosbox emulator supports that graphical modes)

    At first some "Guess a number" (with the output from the computer "lower"/"higher"/"right" or "cold"/"colder"/"hot"/"burning").
    Next maybe a pong game (but be attent at the geometry/phisics stuff, which may be a bit hard if he's so young) or a simpler space invaders, or even a tic-tac-toe (with random chooses, later a very weak AI).

    anyway, keep it simple!

    (Bonus points if he knows about text-mode games like nethack or will code a "Hunt for Wumpus")

    (Posed as AC beucase I don't have an account here)

    1. Re:BASIC + graphics by Sterling+Christensen · · Score: 1

      It's simple to understand (a kind of...), and if you show him some the graphical stuff (different resolutions, on text mode, graphical mode) it think will be courious to learn. (make sure that your windows/dosbox emulator supports that graphical modes)

      There is no need to mess with an emulator. FreeBasic (when the compiler is run with the -lang qb switch) has identical syntax, including the graphical commands.

  40. Low-level game programming by 4D6963 · · Score: 2, Informative

    Video games are fun, and making your own video games is fun too.

    Start by making him learn text game programming, like the price is right. That's both on the very basic level of programming, and a quickly gratifying game to learn.

    Then, maybe I suggest low level game program. And by low level I mean no SDL (well, maybe a wrapper), but writing your own pixels to a frame buffer is more gratifying. As in, teach him how to make a function that write a rectangle on a frame buffer depending on the rectangle's size and the coordinates of its center, then make him move the rectangle around by pressing keys.

    Build on top of that by making he do a very basic game like pong. My first graphical video game was a pong and I coded it in two days, that's how easy it is.

    From that point on, he will probably start to get ambitions. As in, he'll want to draw lines, load sprites, rotate them, use physics, learn about tcp/ip network, signal processing theory and techniques, etc, to achieve a precise purpose. All of these things will fuel his interest towards mathematics and physics, and give him a good reason to learn about and understand these things.

    Finally, introduce him to more "real world" type of programming, by giving him some of the stuff you have to do at work, for uhh.. the sake of his education!

    --
    You just got troll'd!
  41. Processing (language) by Oscaro · · Score: 1

    Processing is a java subset (but you can use full java if you wish) geared toward "visual computation". You can see some great examples here http://complexification.net/gallery/ or on flickr (just search for "processing" tags). Project home page is here http://processing.org/

    I already used it to teach something to my nephew (12yo) and he finds it great, mainly because he can have some "cool" effects and stuff on the screen and can instantly see what his code does.

    1. Re:Processing (language) by Sunshinerat · · Score: 1

      Processing is indeed a great option. Instant graphical feedback on what you do. It will even let them write some simple games or convert their little handiwork into a screensaver.

      I was amazed by this myself a while ago, just to kill some time I did some animation magic myself.

      --
      Load New Commander (Y/N)?
  42. Not with C by Lord+Lode · · Score: 1

    C is a great and powerful language, but maybe it's not so good for a teenager to begin with. Myself, I began with QBasic, which was on DOS on our computer. I only started learning C at later. QBasic was a great language to begin with because, it being a scripting language, had very helpful error messages if something went wrong and was very easy to debug. QBasic also had a quite nifty documentation. And there were two example games included which could be modified to start seeing the effect of changing code. I also loved it because you could do graphics with it - had I started with C back then, I'd have been bored by text input and output very soon. Of course today DOS and QBasic are less relavant today, and also not *nix as you asked. But maybe another language that is also a scripting language like QBasic, such as Python or Ruby, could be helpful?

  43. First the dirty stuff.. by Sidn · · Score: 1

    I would suggest you start off with some basic C to demonstrate variables, functions and then some more advanced but very important stuff such as pointers and structs. Structs are an easy concept for the introduction of classes, for which i would suggest some scripting language such as ruby (to ease experimenting on his own). This way he may appreciate the use of classes and the avoidance of pointers more than without knowing the dirty origins.

    1. Re:First the dirty stuff.. by whistlingtony · · Score: 2, Funny

      10 print "No Freaking Way"
      20 print "Who starts on C?"
      30 print "Seriously!"
      40 goto 10

  44. You don't. by TheSeer2 · · Score: 1

    You give them a computer, if they're the kind that's built for programming they'll do it themselves.

  45. My experience by mtxf · · Score: 5, Interesting

    I started programming when I was about 12, and I am completely self taught. My parents knew nothing about computers, and still know nothing now despite my efforts. Anyway, i started with javascript, html, and php. (This was around 6 years ago). I think it was much easier to start learning the basics of this kinda stuff when you don't have to deal with all the boring (to a 12yo) details of memory management, libraries, and compilers etc. Web programming is something were you can get the instant results and action, you can just keep tweaking the source file and hitting F5 until you get something that works and looks vaguely like what you're after; this is especially useful when you don't know what you're doing. :)

    I had a few books which taught me the basics, a javascript book and a html book. They only covered simple things, (I think the js book was a For Dummies..., actually), but it was enough to get me started. After that I found the php.net docs and a friend showed me loads of his php code and i picked that up fairly quickly.

    Being a website, it's something easy to show off too, it was kinda cool to be like "dude, the whole world can see my webpage!". Following that theme, i got started on irc bots, eggdrops are written in C, and you can script em with tcl. Be careful tho, tcl is kinda quirky and weird (at least, that's how i remember it). But it's great for simple stuff, get the bot to parse some text and reply etc. This might also be a good time to learn some networking stuff. Also since eggdrops can also have C modules written, this is a possible path into C, although I didn't go that way so I don't know how good it is.

    I eventually learned C(++) from some online tutorial, http://www.cplusplus.com/doc/tutorial/ I think. And I wrote a load of code for manipulating some large binary files (game resource files, from Halo). I certainly don't recommend letting anyone learn C solely from some tutorial, since I had rather large gaps in my knowledge at this point (that code i wrote is terrible), but it was some great experience anyway. I played around with some .NET (ugh!) gui stuff, because I didn't know how else to make a gui program at the time (seriously, I don't know how I was meant to know about qt, gtk, or win32 etc at this point) and a program that just prints text on the command line got boring real fast.

    Hacking at computer games was what really drove my interest in C at that time. Reverse engineering of the file formats was fun! Even if I did kinda suck at it and just found most of the info on the web.

    Looking back, I'm thinking I probably would have liked someone to show me python (and maybe perl) much earlier than when i eventually discovered them. php sucks as a general purpose scripting language and C gets tedious for those little tasks.

    Sorry that was all probably a little incoherent, I spent the time I was meant to be doing english homework programming ;)

    1. Re:My experience by codeButcher · · Score: 2, Insightful

      Oh, and remember that until you kick him out of the house (or at least to the basement), his job is to play, not work.

      --
      Free, as in your money being freed from the confines of your account.
    2. Re:My experience by Larsrc · · Score: 1

      BS. His job is to learn. There's an incredible amount of stuff that's vital for a kid to learn. Some things are learned by playing (e.g. using your imagination, behaving in social contexts etc), other things are learned by working (e.g. if you put in work, you get paid). Not making your child do any work is a great disservice. Of course, making your child do too much work or work under bad conditions is just plain cruel. But in the end, working is something that has to be learned, and it's an essential thing to learn -- whether it be "wage work" or "entrepreneurial work".

      -Lars

    3. Re:My experience by codeButcher · · Score: 1

      Eloquently and well put, I must agree.

      --
      Free, as in your money being freed from the confines of your account.
    4. Re:My experience by Kgee · · Score: 1

      This is exactly how I started, and I second this idea as a fun way to start. You get the ease and flexibility of html/css with the good skills learned from php. To get results is not frustrating, which is important to a young person starting to learn something.

      --
      This is not a self-referential sig.
    5. Re:My experience by Richard_J_N · · Score: 1

      > php sucks as a general purpose scripting language

      Really? I have to say, I think PHP-CLI is pretty good. I tend to write long scripts in PHP, and shorter ones in bash. I've not come across anything that has ever required me to learn perl yet...

    6. Re:My experience by mtxf · · Score: 1

      PHP is bad for long-lasting processes (uptime >1 month?)

      [17:43] #mtxf# uptime Online for 325 days, 04:59 (background)

      try getting the real eggdrop http://www.eggheads.org/downloads/ ;)

      I have 4 of them running and they all have an uptime > 200 days

      (not to brag or anything)

      I also tried writing my own in C, i think it managed maybe half an hour of uptime? Sadly I never did get around to finishing it though, got bored.

      Hey, stop stalking me.

      You learned ASP, hehe. How'd that work out for ya?

      Also, I hope you're earning a tidy sum from that online shop, I could sure do with a steady income off of something like that. I'm off to uni to study computer systems engineering (yep, I'm branching out into electronics - I figure that having a physical product to sell is gonna be a good thing with things going the way they are.)

      I was gonna add some ontopic stuff here, but I'll save that for another post, where it'll have slightly less chance of being modded down.

      cheers

      Ps, you made me use html mode for the quotes, now i have to go and add p tags around all my paragraphs; i hope you're happy :P

  46. Link computer programming to his schooling by LM741N · · Score: 1

    First, like the other poster said, start him out with an easy to learn language like Python. Then as he gets more experienced, he can use the innumerable Python add-on packages to do all sorts of things. Remember, the O'Reilly Python quick reference book is the thinnest of all of them. I use Python and various incarnations of Numeric Python as the language doesn't get in the way of prototyping algorithms. Later they can be ported into C or FORTRAN.

    You don't say what age he is but do ask for the opinions of those in high school so I am assuming he has already learned quite a bit about math (although this is 2008, not 1975, so who knows what crap they are teaching kids?) I was always bored with math especially in high school. Thus he might be at a stage where he could find out where applied mathematics is really done- on a computer.

    The real world doesn't boil down to simple closed loop equations, as many simply cannot be solved in practice on a piece of paper or an exam. They require iteration to some tolerable error function, so that a very close approximation of the answer can be found. That requires the very high speed of the computer in order to do the iterationa in some reasonable amount of time.

    Moreover, topics like integral calculus are very easy to explain on a computer, since the computer performs it just like is done in the first week of classes, by breaking the area under a curve into very small parts, and adding up all of the resultant parts of the function. Thats a lot more intuitive than some obscure looking equation.

    I could go on and on, but I think you get the general idea where math is concerned. In science, where many calculations might be needed to solve a problem, he could just write a simple program to do the same in a microsecond. A great example of how a computer can speed up productivity and research. It would probably be great for homework, although he would still need to know the curriculum of the class in order to pass an exam- unless they now use computers in math exams, which I doubt.

    I really wish I had a computer in high school, as I was already doing quite a bit of electronics. But alas it took a few more years for the PC to be invented. In my days, just having a hand-held calculator was quite a luxury.

  47. Re:Son? by Darfeld · · Score: 4, Funny

    I know you're lying : you actually enjoy telling him.

    --
    (\__/) This is Lapinator
    (='.'=) copy it in your sig
    (")_(") so it can take over the world
  48. Do yourself a favor... by Chineseyes · · Score: 5, Insightful

    Don't try your to encourage your child to do anything for which they don't have a natural inclination, they will end up hating anything you try to push them towards to forcefully. Give them a well rounded education and make programming one of many things you expose them to, this was what my parents did and I am thankful for it. I lost count of how many people I met in college whose parents had enthusiastically encouraged them to learn one topic or another, especially the children of professors. Some people took off with whatever topic their parents introduced to them but most of them ended up switching majors 4 or 5 times and spending years and many dollars on undergraduate education. Demand excellence in whatever your child has interest in, with the caveat that as they get closer to 18 they have a plan on how they will feed themselves (so you want to be an actor Johnny? Great, better double major in something practical otherwise you'll be waiting tables cause I won't be paying your bills).

    --
    I think the invisible hand of the market has its middle finger extended

    --A wise old fart named SC0RN
    1. Re:Do yourself a favor... by mzs · · Score: 1

      I agree, but the poster did say that his son has shown some interest. The best thing the father can do is open his pocket book so the son can have books and computers to experiment with. He'll naturally have questions and then the son can ask the father. Often those people that think that they are terrible at explaining things but clearly have some knowledge in that area frustrate those that ask the questions because the poor explanations make them feel stupid. That is why the boy learning so much on his own will work great. The father's role in answering questions then really will not be to answer the question, but to point where the answer is, it helps if the father will answer in a humble way such as, "I don't really remember exactly let's man awk." The other thing the father can do is when he notices a pattern like this: The son will come and ask a specific question, yes he could answer it but it seems like the boy may be going about the problem the wrong way. Some conversation there instead of simply answering the question would be better and then a suggestion of pointing out a different approach will work great. It works great to say something like, "Man I had such a similar question when I was doing foo, and after banging my head on it for at least two months I figured-out I was going about it completely the wrong way. It's better if you do it this way..."

  49. Give him a C64 by Lord+of+Kaos · · Score: 1

    Bigges geek producing machine ever. :)

  50. Draw on the experience of the community by jeevesbond · · Score: 2, Funny

    Draw upon the extensive knowledge of the GNU/Linux community, for example:

    • whenever he asks a question, reply with either: 'OMG RTFM!!!11!One' or 'man *question*'. The shortest and most arrogant answer is always most helpful.
    • if there's a piece of hardware not supported, the best way of helping a newbie is by shouting, as loudly as possible, 'IT IS THE MANUFACTURERS FAULT!' Calmly explaining the situation with hardware support in GNU/Linux is not a good idea. It only leads to further questions (to which the answer is 'OMG it's Free software, code the driver yourself you n00b!');
    • if he finds any shortcomings in the software, ensure you encourage him by assuming the problem is his fault. Make certain to chortle condescendingly whenever he points anything out to you. If it is at all possible to blame the shortcoming on him, ensure that as you wander off -- chortling as before -- say, just audibly, 'luser error';
    • newbies feel most secure when their mentors display their superiority, always make sure your boy is aware of your vast knowledge and epic intellect;
    • loudly proclaiming that, 'next year will be the year of the Linux desktop' makes GNU/Linux newbies feel secure about the platform's future;

    If he actually does find a bug, here are some of the basics you should tell him about bug reporting:

    • keep it vague - developers don't want your life story, don't bother with debug traces and all that guff;
    • always gush - the ideal bug report is at least half gushing about how he loves the software;
    • demand developers contact him personally - this is very important, developers prefer communicating privately, private e-mail is best;
    • always raise new reports - it's never worth the bother of checking whether your bug has already been reported;
    • bug reports aren't just for bugs! - feel free to use bug reports for idle chat about the issue, or related things, even for just storing your shopping lists, tricking people into viewing goatse, or even rickrolling the devs;
    • most bug reports are the highest priority - if you're raising a bug report, it's of the highest priority to you, right? So generally, enter bugs with the highest priority possible.

    Now this post may seem like a troll, but if you do exactly the opposite of what I advise, he should do well.

    --
    I'm going to transform myself into a mighty hawk. Either that or I'll just go and work at Dixons, haven't decided yet.
  51. Find something your kid likes... by dave420 · · Score: 1

    ... then show him something *you* made that builds on his interest, making it even cooler. Robots, tanks, helicopters, police cars, whatever it takes. That will pique his interest like nothing. Encouragement, explanation, even bribery (reward coding something specific with money - worked for me). Both of my parents were developers back in the early days of mainframes, and that's how they got me hooked. I've been coding since about 6 or 7. I say "coding" - back then it wasn't much, but it sure was excellent fun.

  52. Pascal was the hook for me by mariushm · · Score: 1

    My father worked at a chemistry research lab and they had a small computer room with 4 486 computer (it was 10 years ago).

    I went there with my father wanting to play Mario but one of the people there started Pascal and showed me how to draw lines and circles in it.

    So I started drawing houses and trees and I got hooked.

  53. Hardware by spankymm · · Score: 1

    Buy him some uber-cool hardware which doesn't have *nix drivers, and delete his only copy of windows.

    --
    http://cafepress.com/spankymm - for the Masturbating Monkey in you!
    1. Re:Hardware by Zwicky · · Score: 1

      Hah! Evil ;)

      However: Relating somewhat tangentially to this, if Anonymous Hacker's kid is anything like me he'll want to work on something simple[0] (so not *nix drivers then) that is genuinely useful. Maybe a command line tool or a small GUI app (using a toolkit to begin with). I still use several of the tools I threw together and being able to throw things like this together to fill a gap is a useful skill that will last throughout his (potential) programming career.

      Either that or a game; whichever way the kid swings.

      [0] Make it fun and don't overwhelm the kid.

      --
      "Three eyes are better than one" -- Lieutenant Columbo
    2. Re:Hardware by Jens+de+Smit · · Score: 1

      Probably _the_ way to get him (more) involved in piracy, and (more) frustrated with you...

  54. how i started by theheadlessrabbit · · Score: 1

    when i was young (12ish), i had a magazine subscription that had a section in the back of every issue called "basic training" where it gave you the code for a simple game that you could program yourself.

    i sat myself in front of my IBM PS/2 (which i still have, and it still works) and typed in the BASIC code, only to discover that QBASIC does stuff differently than whatever version of BASIC the magazine used. but i had spend hours coding, i refused to let that go to waste, so i read the error messages and help files, and eventually got some of them to work. then i modified them.

    then i started making my own games, (including that RPG that every single programmer in the world is working on yet never finishes.)

    i was playing a lot of command and conquer around this time, and i discovered the awesome power of the "rules.ini" file, so i started making games with separate text files to control the variables, so i could tweak them game more easily.

    then i finished elementary school, and got stuck in high school with the crappy workload, making coding impossible.

    high school programming class was a joke, but then when i went to art school, i got really excited about micro controllers, and the BASIC stap let me use QBASIC again, and i was happy.
    then i discoved the picaxe system, which is an even easier form of basic, and way less soldering.

    i would have to say, working with BASIC powered micro controllers is the way to go. BASIC is so easy, even I can do it, and when you finish, you have something that you have built yourself, and it actually does something! its a damn good feeling.

    --
    -I only code in BASIC.-
  55. Simple by Snaller · · Score: 1

    Tell him if he does it right he'll make tons of money and then all the women will want him.

    --
    If Google really cared they would fix Android Chrome to reflow text, instead of discriminating
  56. Make it fun and keep it simple by jonnyj · · Score: 1

    My lad started coding when he was about 10, but it took a few false starts. In my experience, compiled languages like C aren't a great place to begin, as the need for compilation really gets in the way of the learning experience. I also had a failure with PHP - I thought that he'd enjoy web hacking as he was comfortable with HTML, but I found that cookies and sessions - without which you can't do much in a web environment - were a huge conceptual problem for a young mind.

    You need to start with something that's simple, rewarding, well documented and with good community support. A language that permits procedural code and dynamic typing is also much easier to teach. I suggest Python for the language as it has a great beginner's IDE on Linux (DrPython) and, importantly, it produces comprehensible error messages (Ruby on Rails: I'm looking at you). It also produces clean, legible code.

    You need to move beyond text-based programs pretty quickly: no-one wants to show off a terminal session to their mates. GUI interfaces aren't very teenage, so I suggest you check out PyGame for graphics and sounds - simple to learn with quick rewards.

    Finally, enter the next PyWeek competition with your lad - he'll never win, but it'll help him to see how a more complex project fits together and give him a gret sense of achievement.

  57. Do it the university way... by Splab · · Score: 1

    Start with SML (moscowML is a nice one), teach him what recursive functions are and how to solve problems. Teach him about datatypes and how to define your own, show him how to make trees and how to traverse them (go look at the curriculum, run the same thing with him - heck as a C programmer chances are you will learn something) If someone is used to programming ML can be quite hard to understand and very frustrating, however as a language for someone new to programming its easy to get started with and it wont teach you bad habits like PHP.

    Next is usually Java, its a nice object oriented programming language for newcomers to learn about objects and its a safer way to program compared to C/C++. If the interests in programming still persists at this point show him C/C++ and the work you are doing.

    Also remember, while doing all this you should gradually introduce stuff like algorithms and advanced math, they go hand in hand with programming.

  58. Show Your Enthusiasm by Dean+Edmonds · · Score: 3, Insightful

    Whether you teach him programming or someone else does, the most important thing you can do for him is to show your enthusiasm for programming and demonstrate why you love it. Those kinds of things are infectious. If he catches the bug then he'll learn it, one way or another.

    --

    -deane

  59. Simplest Way by sheriff_p · · Score: 1

    Help him to find a project he's interested in, in a language/environment where he can get damn-near instant results, and then let him run with it, offering guidance only if he asks for it.

    Hell, I got in to programming when I saw my brother playing on a BBC Micro, and asked him to teach me. I was 8 at the time. He helped me draw a picture of a door (using grid paper to sketch it out, and then copious LINE() or whatever statements). It was the coolest thing I'd ever seen. Next I drew a space-ship (and a pretty piss-poor one too ;-)

    No-one needed to teach me after that. I read all the programming books I could find and old Micro World or whatever it was called magazines... And, I still love programming :-D

    Get him started with Javascript. It's an awesome little language that scales up to all sorts of useful programming concepts, but best of all, you can get visual results reeeally quickly. There are lots of tutorials on the web, even if most are shitty. If he's still on it after a week, buy him the ORA book.

    -P

    --
    Score:-1, Funny
    1. Re:Simplest Way by kbielefe · · Score: 1

      I was beginning to wonder if anyone would suggest a solution that involved—I don't know—listening to your child. Kids don't just decide they want to program without having a reason in mind.

      I'd ask him what his goal is, and go from there. If he thinks it would be cool to make a widget for a social networking site, you know where to start. If he wants to make a java game for his cell phone, that's a completely different approach, but you still know where to start. Don't be afraid to make stubs and let him fill in only the interesting bits at first. Things teens might want to do with a computer are a lot more complex than when we got our start.

      --
      This space intentionally left blank.
  60. Give him his own machine by Eternal+Annoyance · · Score: 1

    Put slackware, gentoo or another advanced distro on it, but don't install a gui (the next step is games, which burn away a kid's time).

    Let him figure things out by himself and make sure he's got easy access to the basic information, the rest he should be able to figure out himself.

    Make sure he's got complete access to all information about his machine (so he can maintain it by himself).

  61. C! Not C! Sweet Zombie Jebus! by whistlingtony · · Score: 1

    Hello World is C? Sweet Zombie Jebus....

    We all started on something easy like Basic, or tapping something into a TI calculator, or what have you. It was the almost instant gratification that got us hooked.

    A little typing, tapping, It Ran! oh wait, that's not quite right....
    A little typing, tapping, It Ran! oh wait, that's not quite right.... and a few years later you look up to discover you're a Nerd.

    Now granted that's horrible coding practice, but it's what we started with. We all programmed little games. Who among us didn't try their hands at tank wars or Pac Man, and of course most of us tried to write a character generator for our favorite RPG. The point is we didn't start programming, we had other interests that programming could help us with in a cool manner.

    Don't start with anything low level. Don't even think it. C? Seriously? Please do introduce good practices. Write out a flow chart, do your pseudocode!

    Find a little project for him. Start with something small. Show him how to tweak things. You'd be amazed at how cool it is to change a little bit of text on some program. Do something related to something in the real world that he enjoys.

    And don't be peeved if he decides it's a giant PITA, 'cause we all know it IS. :D

    -T

  62. Give him Visual Studio by hinchles · · Score: 1

    Give him a copy of VS with C# as primary language and set him some simple challenges to do. Perhaps start with something like "make a basic calculator" all of this can be done in the VS GUI without him having to go in depth for all the framework and structs of the project all he'd have to do is create the onclick events to take the 2 inputs and the action fairly simple and yet should be challenging enough to get him interested. If he can manage that kind of task in something simple like VS then you'll find it'll really get him interested and he'll then start poking around at the more complex stuff. Alternatively give him EditPlus and tell him to make you a simple signup and login website in something like PHP and MySQL again simple enough but with enough challenge he'll have to look up some stuff and read some docs etc.

    1. Re:Give him Visual Studio by glebd · · Score: 1

      VS and C#? Tie him to Windows right from the start? Thanks, but no thanks. (Windows PC in my home is for games only.)

  63. Exaclty by Baron+Eekman · · Score: 1

    A good and appropriate project is the way to go. Then choose which tools are most suited.

    Write a rehearsal application, a database for his music collection, program Lego Mindstorms, whatever. A project automatically set both short-term and long-term goals, your kid will inituitively pick up quickly how things work, and it is easier to think about the problem encountered.

    You can always go more low-level afterwards, according to the developing interests of your child.

  64. Not NetHack! by Anonymous Coward · · Score: 3, Interesting

    Not NetHack! It was written by the evil Wizard of Yendor with help from his idiot minion Eric S. Raymond; consequently, the source is a horrifying abomination worthy only of the renegade god Moloch. It is not a good learning example. You should be at least a level 20 Kernel Hacker to venture inside.

    Can I suggest instead that you look for a simple game written in Python or Ruby. They are likely to have source that is possible for level 1 Noobies to understand.

    1. Re:Not NetHack! by ThePhilips · · Score: 1

      the source is a horrifying abomination worthy only of the renegade god Moloch. It is not a good learning example.

      Hm.. Well, you can always see it as how to NOT to write code. First.

      Second. If code is really shitty, that means as first assignment one can try to improve it. Reading code and trying to improve it (though might be tough at first) helps develop into better programmer.

      After all, there should be some work for good elves too ;)

      --
      All hope abandon ye who enter here.
  65. Quick Results (RAD) by aembleton · · Score: 1, Insightful

    You need to show him something that will quickly show results, preferably something that can display a UI and I guess these days that would be best done via a web browser. Try to teach him some PHP so that he can quickly see the fruits of his work on the web, and from there move to Javascript, mySQL, and then to AJAX. With that knowledge teach him to learn for himself by developing a facebook application by reading the facebook api and going from there. From there you can move him onto some of the C/Java code at which point he should have a strong understanding of the logic and will have picked up some useful SQL skills.

    Quick results are what got me into programming. Seeing that I could code a small, higher or lower game in about 10 mins for the BBC Micro or an Acorn and then show that to anyone who was interested was almost instant gratification. These days a web based project would be more impressive and easier to distribute.

  66. Chuck by six025 · · Score: 1

    Chuck has been covered before on /.

    http://ask.slashdot.org/article.pl?sid=07/01/20/0434210

    Although the syntax *might* be a little too advanced at this stage ... being able to get real time audio feedback from method calls etc. will provide a certain fun factor that could spur his interest more than simple text output on a terminal screen (and could double as a great debugging aide).

    There is full documentation with the install, and a lot of example functions and classes to get started. The separate GUI environment miniAudicle - currently in beta - allows Chuck programs (Shreds in Chuck speak) to be started and stopped in realtime, making it very easy to use.

    It's a little like the old days of "Logo" but with sound :)

    http://chuck.cs.princeton.edu/
    http://audicle.cs.princeton.edu/mini/

    (not sure why but the server is currently unavailable).

    More info here:

    http://en.wikipedia.org/wiki/ChucK

    Peace,
    Andy.

  67. Interesting programming language - Euphoria by stasike · · Score: 1

    There is a very nice language for learnig to program.
    Euphoria
    www.rapideuphoria.com
    As easy as Basic, with all the stuff a programmer needs, without the need to use object-oriented methods.
    Very, very nice and clean syntax

    A teenager can learn all the stuff he needs to start writting his own programs in an afternoon.

    It has a VERY friendly mailing list, discussion forum, 1800 programs submitted by users,
    on Windows it has a nice clicking IDE - submitted by some user and written in Euphoria itself.
    It also runs on Linux and has even FreeBSD binary available for download.
    There are quite a few graphical games written in Euphoria, Euphoria Editor (with syntax highlighting that works as an "IDE" written in Euphoria), many, many libraries, lots of stuff. Ready for download and tinkering.
    I know there are quite a few C programs (or python, or perl, or [insert the name of your favourite language here]) available, but majority of those 1800 programs written in Euphoria are readable (and understandable) by an absolute beginner.
    I personally have learned how to program with "raw" Windows API using Euphoria and their win32lib. I have created a simple Windows graphical game. By writting code, not by clicking on fancy buttons.

    It is a simple interpreter with a GRAPHICAL debuger (by graphical I mean running in color terminal in text mode, resembling the very old Borland C you remember from 'good ole DOS days') that can be used to step through the program ((this is one of the most important tools for a beginning programmer)) and display variables, and ...
    The debugger is surprise ... surprise, also written in Euphoria.

    When you have program debuged and you want speed, you simply "compile" your into a C source and run that through a compiler of your choice.

    The newest version is OpenSource (used to be shareware, nagware, free for non-commercial use)

  68. squeak & etoys !! by bukuman · · Score: 1

    I'd start here http://www.squeakland.org/ the environment is based on smalltalk 80 and is pretty pure OO, so even though it looks like a toy they will 'get their mind right'.

    On the surface it has a fantastic drag'n'drop tile based scripting layer that allows kids to quickly get toy and demo things working - building both familiarity with concepts, confidence, and interest. This http://www.squeakland.org/school/drive_a_car/html/Drivecar12.html jumps into instructions for a 5 minute draw a car and write the program to bind it to a drawn steering wheel. You can quickly progress to programs with sensors doing track following. I've used it to make flocking games (like herding cows etc) for the amusement of my kids.

    It is intended that you can drop under the scripting and start using the full OO smalltalk (http://www.squeak.com) classes, inheritence, coding while you debug while you run. OS integration, OpenGL bindings, links to DBs, multimedia, a whole host of good stuff.

    The idea is to give them something it's easy o come to grips with but that is OO, open, and as deep as you want to go.

  69. Re:Son? by pclinger · · Score: 5, Funny

    Geeks clone themselves, it provides the same benefits without all the hassle with women.

    It seems you made a mistake in your post, I've gone ahead and fixed it though.

    --
    /. editors made it impossible to link to file:///c:/con/con in my sig. Please just type it in
  70. Maybe he should try some healthy pursuits instead? by Cannelloni · · Score: 1

    Such as chasing girls? Seriously, programming can never be good for a kid.

    --
    Beauty is in the beholder of the eye.
  71. Better not by freeplatypus · · Score: 1

    Don't encourage. Let them have happy and social life.

    No, I didn't read TFA.

    1. Re:Better not by Zwicky · · Score: 1

      No, I didn't read TFA.

      Realize the truth. There is no 'article' ;)

      As for your point, I agree insofar as he shouldn't push his son but should merely point him in the right direction.

      His son is "starting to get curious about computers". Obviously this doesn't necessarily mean he is going to want to become some l33t hax0r (he may find he doesn't like it), but expressing an interest does open the door for a little encouragement by his father.

      Anonymous Hacker should help his son explore what is available, find something that appeals to him and go from there. Guide him - but don't force his hand and don't make his decisions for him - and the rest will follow.

      (And don't be disheartened if he later decides that a hacker he is not).

      --
      "Three eyes are better than one" -- Lieutenant Columbo
  72. Let him code something that is visible by Anonymous Coward · · Score: 1, Interesting

    As a teenager I liked the simple putpixel to draw on the screen.
    You can see immediately what changes you are doing by changing x and y position and/or color. And ofcourse create your own line/circle/polygon routines.

    When you can see what you are coding it makes it more fun.

    Just my two cents.

  73. Let him discover by RAMMS+EIN · · Score: 1

    When I learned to program (I was 8), it was DOS and text mode and BASIC. The programs I wrote were simple "enter some text or numbers, get some response". It doesn't have to have fancy graphics and the like to be interesting.

    And I'm not saying that because I'm an old fart. Everybody I know who programs started that way, although the younger folk usually started with GNU or BSD and Perl or Python, rather than DOS and BASIC. They do stuff that looks pretty uninteresting to non-programmers, but is very valuable to them. Usually, they start by automating something that they do often. Sometimes, they've found something they found cool (e.g. a script found on the web) and started tinkering with it. I had a book from the library with source code for a couple of simple games.

    Another approach that can be very rewarding is web development. You can get impressive-looking results relatively quickly, and it scales all the way up to what the big guys are doing.

    In the end, though, I think programming is something you have to want to learn. You may want your son to learn to program, and your son may be dreaming of making his own great game or operating system, but that's not enough. You need to develop the way of thinking that allows you to break down your idea into what you can express in your programming language, and that takes time and effort. It's going to be frustrating until you get it. Most people aren't really motivated to work through that, and will give up after a short while. That's ok. You can still learn to program when you are older, and you can be happy in life even if you don't ever learn to program at all.

    --
    Please correct me if I got my facts wrong.
  74. Set up the development Environment... by Anonymous Coward · · Score: 1, Interesting

    ... and let him learn on his own. Many of us learned programming from reading books and tutorials, and most of all from just trying stuff.

    So if he doesn't have it on the machine, install a compiler or interpreter for the language he tries to learn, give him a link to a good tutorial, and then just wait and answer his questions.

    If his geeky farther isn't available, it might be good to know where to contact the community for help (relevant web forums (like perlmonks if he choses perl), mailing lists or the like).

    If he (or you) doesn't know which language to start with, be sure to pick one where he doesn't have to bother about memory management first. That kills the fun at first, and segfaults are hard to debug.

  75. Hackety Hack by Redbluefire · · Score: 1
  76. as a kid.. by Anonymous Coward · · Score: 1, Interesting

    Personally I got into programming after reading those strange books you used to have as a kid where depending on the decision you made you had to switch to a certain page in the book.. I tried to program my own story-game that way. Basically it was just a load of simple IF statements, but it is what got me into programming.

    I also made a few simple scrolling graphics projects. Mostly huge "spaceships" which scrolled across the screen, made with ASCII blocks hehehe..

    This was when I was about 10 I think.

  77. Been there by jsebrech · · Score: 1

    Back when I was about 13, I asked my dad to teach me programming. He pushed a visual basic beginner's book and the visual basic 3 floppies into my hands, and wished me good luck. In retrospect, I don't think this was such a bad approach.

    What you'll need first and foremost is an environment with immediate visual feedback, that you can do one-liners in that gradually grow into larger programs. Visual basic fit the bill at the time, but these days I'd look more towards adobe flex (the gui tool, not the sdk), or if you get the heebie-jeebies from commercial products, just use html + javascript.

    What's important is to recognize that there should be some measure of reward right at the start. The kid should be able to build stuff that does "something" his first day, and be able to grow that into building programs that he designs himself.

    Don't try to push him in any way, let him discover things on his own pace. And don't try to enforce your "standards of work" on the kid, because it took you years, or even decades, to build up those standards, and it would be too off-putting to require him to "do it right" the first time around. Following from that sentiment, avoid pushing tools because they're "correct", but instead choose tools that have gradual learning curves, even if you wouldn't use them yourself necessarily.

  78. My story by Anonymous Coward · · Score: 1, Interesting

    I can't tell you how to teach, but I can tell you how I started to learn.

    My father bought a MicroBee with a tape recorder. He bought games, and I played games. I wasn't interested in programming. He did however code together some small text games, from magazines.

    I played those too.. we solved adventure games together, and when we couldn't progress any longer, we looked at the code.. but neither of us understood it.

    Ofcourse this didn't teach me to code.. what it did was to teach me that there were code, and that computer programs was code.. and could be reed, modified at choice.

    Then I got my own computer, a Commodore 128, with basic.. I didn't touch basic for a long time.. I played games.. but when I got stuck in a game, I did know.. that the games code somewhere did hold the solution for my problem.. I coded a few hundred lines of basic on that machine..

    I got an Amiga, and with that came AMOS, a basic. It was coding in a secure environment. You couldn't touch the hardware (well maybe you could). And I started to do some coding for fun in it.. After all I did know what all computer programs was code :-)

    After that I was self going, and installed Linux and reed C manual pages. I bought a C++ book and started to learn how to really code.

    --

    I guess that todays version of this would be to show him games, and from his age I guess you already have.. So I would get him VisualBasic. Powerful for the beginner, yet no need to peek and pook memoryaddresses :-)

  79. Get him a good book... by rwa2 · · Score: 1

    Get him access to a small bundle of O'Reilley books... make sure he's a bit bored or at least doesn't have any other distractions, and leave him alone.

    Also might consider eventually getting him a little Eee PC or Nokia N810 or OpenMoko device once he gets into it a little more. Install Python or an compiler on it and let him find a creative use for it somewhere with a bit of hacking.

    When I was young, we just had graphing calculators to play with, and we'd play with little programs on them in our free time on the school bus or wherever just because there wasn't all that much to do.

  80. Choose-Your-Own-Adventure... by cbrichar · · Score: 2, Interesting

    I've seen a few other people mention story writing, and I'd second that whole-heartedly. My friend and I first got hooked on programming when we started writing simple 'Choose-Your-Own-Adventure' style branching games in Q-Basic (complete with sqealing PC speaker musical soundtracks).

    My friend even got more sophisticated and started creating simple RPGs - random number generators with modifiers for the attacks, variables for vital character stats, etc. They were alwasy *very* simple, but we had a great time, and learned a lot as a result of it.

  81. My story by bioglaze · · Score: 1

    I began programming when I was 16. First I made simple chatbots and console i/o to learn C and C++. Then I moved on to graphics programming because it allowed me to learn many useful algorithms and data structures. I remember the glory when I got my first pixel on the screen. I began coding demo effects and software 3D engines. Actually seeing self-made things move on the screen provided me with motivation to learn more. Now, at 25, I write ray tracers and little games.

    --
    Who is John Galt?
  82. Re:PHP will ruin your mind by SimHacker · · Score: 4, Insightful

    There are so many reasons not to start with PHP, that I'm not even going to start listing them here. PHP is a HORRIBLE first language, and a horrible second, third or forth language. It corrupts minds, and makes it harder to learn other languages. It's a lot worse than corrupting someone by teaching BASIC as a first language.

    You should be ashamed of yourself for suggesting teaching PHP to a kid.

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
  83. As a current graduate student by strimpster · · Score: 1

    I would recommend staying away from the low level stuff to start. If he enjoys programming, he'll naturally want to learn that stuff as he gets more advanced.

    I got hooked on programming a little different than most people did. I started to make programs for my calculator that did things that could help me out in my math classes way back in ninth grade, I've been hooked ever since. I've noticed in my academic studies that the best students were those that pushed themselves on their own. I believe that these students will be the ones that succeed in the field because they have a natural inclination to want to learn more. So, I recommend to start to get him interested in making a program that he thinks would be cool. Have it a little simple to start off, and then help him do some more advanced things in it. If he enjoys programming, he will want to do some of the more advanced things on his own.

    It might be easier to have him start with a Basic-type language to start off with. A modern C-style language may be too difficult to learn the concepts at first, as a lot of beginning students really trip up on OO concepts/syntax. If he can handle the C-style language, why not teach him PHP. It is heavily supported by the open source community, meaning tons of examples and online help. This will allow him to move at his own pace. I would not recommend going with a Ruby or Python for an initial language. The syntax is so different than the C-style that is prevalent in the major languages, potentially not aiding him in his initial studies (also making it more difficult to move on to new languages as other languages do not share the syntax structure).

  84. Do not teach, Provide by Dersaidin · · Score: 2, Insightful
    Don't teach him anything.

    Provide him with a computer. Provide him with help when he asks (or not, figuring things out yourself is best).

    Show him how useful it can be to write programs to make the computer do whatever you want.

    If he wants to learn, he will. If not, bad luck.

  85. Re:Son? by Anonymous Coward · · Score: 1, Funny

    Yeah, especially if you're aware of this rusky plot to corrupt our precious bodily fluids!
    That's why I only drink rain water, and don't allow women my natural essence...

  86. Start high-level by Kjella · · Score: 1

    I remember the first days of programming on a C64, I could program the heck out of it. Part of it was that you could start so easy, but then under DOS/Qbasic I did a lot less and under the Windows API it died completely. At the time it looked like you needed immense amounts of dark magic just to throw up a basic application. I'd probably go with C++/Qt since it's what I know and I think Qt makes C++ high-level, but no matter what I'd say use all the tools like a proper IDE, graphical dialog designers and so on. There's plenty time for learning the hard way manually later, but now is not the time to learn low-level semantics, memory allocation, programming a layout as code and all that. That's to learn when the interest is burning and he's asking to do things that go beyond.

    --
    Live today, because you never know what tomorrow brings
  87. Find out what he wants to accomplish by Dracos · · Score: 1

    Programming is a means to an end. Ask him what he wants to program, then determine how to go about that, which may not be a direct route.

    For (a really roundabout) example, there's a good chance he's interested in video games. Download Blender and turn him loose on that. Eventually he'll need some Python knowledge to put Blender's game engine to use, and probably want to make textures for his models, so GIMP enters the picture.

  88. Re:Son? by Sparky+McGruff · · Score: 1

    Nerdy women need lovin' too... Or so I've heard.

  89. My experience by codeButcher · · Score: 1

    I started programming at 13, back in the '80s. An older brother had a Sinclair ZX Spectrum and after seeing some of the cool things it could do, I begged him to let me use it too.

    The user manual was a reference as well a tutorial (with exercises at the end of each chapter) and I taught myself just by working through that. Admitted, modern languages can be much more complex.

    I guess it will help if your son has some itch to scratch, likes to "build things" - even if it has not much value in the world at large. One of my first large projects (after the flashy screens and sounds) was to code an electronic version of a board game. I guess programming is much a solution in search of a problem, and finding a problem that interests your son and will keep his attention long enough to learn something useful is half the battle.

    Problem is, with modern computers much has already been done, and a newbie programmer could possible get quite disheartened with what he is able to achieve on his own.

    I did some part-time teaching too at a stage, and my biggest struggle always was to find some practical example to demonstrate the use of some or other concept, to try and keep the attentions occupied. Programming seems to be too abstract for many to grasp the usefulness of. When I had to give a small presentation at the start of one year to try to get more pupils interested in taking my subject, I used a Lego Robotics kit (yeah, Q&D point&click programming, I know) to try and get a more tangible demonstration of what programming entails. It certainly was less boring for the kids.... Perhaps also consider some robotics with good old solder and chips, when you son is old enough :-)

    --
    Free, as in your money being freed from the confines of your account.
  90. JavaScript: It's right there in the browser by moshez · · Score: 2, Insightful

    Teach him JavaScript.

    Set up Firefox and Firebug, and you have a wonderful console for programming right from the browser. You can do fun animations, effects, and various cool things.

    And showing it to friends is as easy as uploading to a host...

  91. Ask him by ei4anb · · Score: 1

    My son was bored with my attempts to show him how cool kernel hacking is and I began to despair. Some weeks later he came to me and asked if it would be possible to set up an 'auto-typer' to help in an online game that involves repeated typing of the same phrases. He was willing to get involved in putting the script together because he saw a use for it. He even agrees that our approach was better than just downloading one that does almost what he wanted.

  92. Re:Games by irtza · · Score: 2, Funny

    3 months? I lose interest after just a couple of sec

    --
    When all else fails, try.
  93. My own remembrances by OpenSourced · · Score: 3, Insightful

    When I was 15, I had never seen a computer, but I knew that I wanted to work with them. The _idea_ of computing, of writing instructions to make the computer do what I wanted, of playing with something that exhibited some of the powers of human mind, was terribly interesting to me. Getting my hands on my first PC, a thing with a BASIC interpreter and graphics! display in a TV monitor, was an intense experience, even if I cannot say why, what clicked inside me. The making of my very first BASIC program, unaided, reading a manual in a foreign almost-unknown language (English) was a triumph. The making of a program that draw a circle on the screen by calculating the distance to the center, was making mathematics come alive for me for the first time.

    What I mean is that, in my case, no stimulation was needed, and probably difficulties just added emotion. The interest and emotional attachment to the computing world was immediate and intense. I don't know if I'm a typical case, but my anecdotal evidence is yours for what's worth.

    --
    Rome taught me patience and assiduous application to detail. Virtues which temper the boldness of great, general views.
    1. Re:My own remembrances by l0rd · · Score: 1

      I agree 100% If this guys kid wants to program he'll find a way to.

      As a kid being able to program a computer to do what I wanted it to do & being able to crack games was an indescribable rush. Like you I wanted a computer ever since i first saw one, not having any particular use for it.

      The difficult thing is though that everythings gui these days. Back in the day you had to know a bit of basic just to run a program. Even after that dos was bundled with QBASIC & you had to understand memory limitations to run gumes (Remember DOS=HIGH,UMB).

      These days everything is just point & click and easy to use. Just because someone is "interested in computers" doesn't mean (s)he is a computer geek like in days of yore. I get the feeling less & less people are learning to program as kids. It's a shame!

    2. Re:My own remembrances by OpenSourced · · Score: 1

      Just because someone is "interested in computers" doesn't mean (s)he is a computer geek like in days of yore

      Yup. The son of a friend of mine decided to study computing. Reason? He liked computers. Turned out that what he really liked was chatting, internet browsing and playing PC games. The whole "programming" part that they try to teach him completely bores him. Just discovered that the career he chose wasn't the career he thought he chose.

      --
      Rome taught me patience and assiduous application to detail. Virtues which temper the boldness of great, general views.
  94. Find somthing fun to do by Yacoby · · Score: 1

    I started by writing scripts for game engines, mods and such. Why? Because it was easy, the community would go "wow, cool" when you did something (ego++;). That taught me the basic concepts, and that it could be fun, then look where I am now, 4 years later, sitting in a room, writing programs all day.

    No, second thoughts, don't teach him to program, drinking and sailing is much more fun.

  95. Scratch: A visual programming tool by zarkzervo · · Score: 1

    scratch.mit.edu should be enough for introduction. It is visual and like building Lego. It contains the known parts of a programming language (loops and tests and stuff).

    --
    Insert `fortune -o` here
    1. Re:Scratch: A visual programming tool by FictionPimp · · Score: 1

      This is a great way to do it. I often start out college kids with this as a introduction to programing in the class I teach. Of course we move on quickly to real languages.

    2. Re:Scratch: A visual programming tool by kermi3 · · Score: 1

      I agree. Start him out with something like Scratch from MIT. It's programming with trainning wheels, and it does a wonderful job of encouraging your programmers and introducing the basic concepts. Rather than writing code, they drag and drop possible commands from a menu. I used it to teach upcoming 6th-8th graders the basics of programming this summer. All it took was a 3 minute introduction and they were off. As they were ready (the next day), I gave them introductions to variables, and calling commands in other "sprites" (objects), and they took each step and ran with it. The biggest drawback to Scratch is that it does use some pretty big trainning wheels and does not use traditional programming terminology. When he becomes proficient in it, before moving on to an actual language, you may want to introduce him to Carnegie Mellon's Alice programming language. Same idea as Scratch - drag and drop programming that helps you learn the concepts, but Alice is more of a real bike with small trainning wheels than a tricycle. It allows a lot more freedom and is powerful enough to handle arrays, and true OOP.

    3. Re:Scratch: A visual programming tool by rbrewer123 · · Score: 1

      Scratch is awesome. It's simple enough that someone like my 6 year-old nephew can have fun fiddling with it. But it's powerful enough with sophisticated concepts like events, objects, multi-threading, message passing, and more to keep it interesting as you progress. Scratch is like Logo for the 21st century. My recommendation would be starting off with scratch, then moving on to something like Python.

  96. The uber languages by sega01 · · Score: 1

    C, Lua, and Assembler :-). But, it may be wise starting him on some XHTML 1.1 first. I started my computing journey by learning HTML in Neopets ages back :-|.

  97. HTML, PHP, etc by Manxa · · Score: 1

    Curious about PCs, eh? I started crashin 'em when I was 13. In the grander scheme, I'll still a youngen in my mid 20s, so compared to all those sysadmin gurus, I know squat. :P What did spark my interest around that age was HTML. HTML is an easy language to learn and gives those instants results so many before have suggested. It lays a foundation for your child to build on but can also introduce him to so many other concepts (proper coding standards, other languages to build on such as PHP or Javascript, proper tag closing, browser interpretation, etc) of programming. Really it'll depend on both what you and your son are comfortable with. HTML is a rather easy language to pickup and has many avenues you can venture down. However, if he doesn't want to be bothered with anything to do w/ the web AT ALL you may try something else...

  98. How my mother taught me to code by Freddy+Fantabulous · · Score: 1

    When I was a kid my mother taught me my first lesson in programming a computer. Back then they used to have these books that has the source code to simple BASIC games printed in them. She said that the secret to successful programing is in typing the program exactly as printed in the book, otherwise it might not work. Of course, I soon noticed that some typos didn't break the program... they just made it do something different. In time I was writing my own programs by recycling and recombining elements from these programs while still thinking of them as somewhat magical. I think this basic approach is quite sound as it parallels the way we learn natural language. We mimic others and learn in a very stimulus-response oriented way.

    I would suggested to anyone wishing to learn programming that they start by taking an available opensource program and learn the steps needed to build it from source. Then experiment with tweaking the source and seeing if it will still build/run. Games are perfect for this because the the bug/feature distinction can be very arbitrary.

    If a beginner is determined to write programs from scratch, I would recommend learning basic HTML and then PHP. It's relatively easy to write programs that do interesting things in just a few lines with PHP. Also, writing for the web lets you rely on the browser for I/O which spares the beginner a lot of tedium. PHP, like BASIC, may not be the most robust language, but I think that may actually make it a better language for a beginner. It takes years to learn programming anyway, so why not start with something easy?

  99. I seriously hope you're joking by p3d0 · · Score: 1

    +1 Funny for you, sir.

    --
    Patrick Doyle
    I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
  100. Start with configuration. by arcade · · Score: 1

    I think the right approach is to start with teaching him how to configure stuff himself. Linux only, of course.

    Then throw him the Gentoo-bone.

    Make sure that you give him a new cool distro, with some cool stuff - that just doesn't work straight out of the box. Something he wants to use, but that quite simply doesn't work as it should. Make sure it's easy to fix, though. Make sure you don't have time to help him more than by pointing at the documentation.

    And of course, the kid should have root.

    Make sure that each new cool thing is always 'one step away' from not working, but always in different areas.

    Kind of fun how quick kids are to learn how to fix stuff, when they want to get something to work.

    --
    "Rune Kristian Viken" - http://www.nwo.no - arca
    1. Re:Start with configuration. by croftj · · Score: 1

      I thought your post was a joke at first, but I see you're serious. I feel for your kids.

      Computer maintenance is not programming. You may script some things here and write small c programs there, but for the most part, they are different tasks.

      I've done both. I'm a programmer, not a computer operator.

      Sure those skills are needed in the long run, and the kid wil probably learn them as time goes by, but why bore the kid to tears first?

      --
      -- Many men would appreciate a woman's mind more if they could fondle it
    2. Re:Start with configuration. by arcade · · Score: 1

      Yes, I'm serious.

      I don't understand why it would be boring to learn how to use your computer. It's a good way to start out, and a very necessary part to become adept at programming later on. Starting to program before you know your way around the computer can certainly be interesting, but to become a solid programmer you first need to learn the basics.

      And, you talk about "computer maintenance" as if there is no need to learn quite a bit of programming doing exactly that. There is a great need.

      Think databases... "Hmm, I've gotten my usernames and passwords from a database.. maaaybe I can create a nice little application that tracks my CDs the same way?". .. and so forth.

      --
      "Rune Kristian Viken" - http://www.nwo.no - arca
    3. Re:Start with configuration. by croftj · · Score: 1

      When I think configuration I thing /etc/* resolv.conf rc.d scripts, /etc/sysconfig stuff, nfs nis blah blah blah... For true hackers always fun. To teach programming to a teenager, BORING!

      Like I said, always good to know. I use it almost regularly as a programmer (have to get the system to start your program somehow). To pique ones interest in programming, NOT!

      --
      -- Many men would appreciate a woman's mind more if they could fondle it
  101. Well here is a good start by floydman · · Score: 1
    --
    The lunatic is in my head
  102. Alice by Anonymous Coward · · Score: 1, Interesting

    Try Alice. It's the 21st century version of turtle:

    Alice is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a freely available teaching tool designed to be a student's first exposure to object-oriented programming. It allows students to learn fundamental programming concepts in the context of creating animated movies and simple video games. In Alice, 3-D objects (e.g., people, animals, and vehicles) populate a virtual world and students create a program to animate the objects.

    In Alice's interactive interface, students drag and drop graphic tiles to create a program, where the instructions correspond to standard statements in a production oriented programming language, such as Java, C++, and C#. Alice allows students to immediately see how their animation programs run, enabling them to easily understand the relationship between the programming statements and the behavior of objects in their animation. By manipulating the objects in their virtual world, students gain experience with all the programming constructs typically taught in an introductory programming course.

  103. Start off Small by nuclearpidgeon · · Score: 1

    I am currently 14 years old. I started my programming days back in windows 3.11 land. For Christmas I got a crappy old laptop that had a broken screen, so I had to hook up a CRT fishbowl screen (why are you wincing?). From there I found a DOS 6 manual and started screwing around with colour boot menus (AUTOEXEC.BAT FTW!). From there I learnt the ins and outs of windows by 'fiddling' (In windows 3.11 I completely screwed the hard-drive during a disk compression error). I only just discovered Linux in the form of an ubuntu tutorial in the Aussie magazine Atomic MPC. This year I started IT and got my first real taste of programming with VB Express, but I had a teacher to aid with that. I'd suggest buying him a 'Programming for Dummies', 'The Complete idiots Guide to Programming' book or something like that to get him started. The original ubuntu tutorial is not on the Atomic website, but there is a new one, Linux for windows users. Look it up at www.atomicmpc.com.au

  104. When I was a young teen... by Peter+Simpson · · Score: 1

    I took a summer course at a local school. I learned the basics of programming and how to write simple programs in FOCAL (sort of like BASIC). This was in the 1960s. I was 13 or 14.

    I would recommend something like this -- a class for beginners that's not part of "regular" school time (and so, not graded or affecting the time he needs to spend doing homework). Summer or winter break would be a perfect time.

  105. Re:PHP will ruin your mind by Anonymous Coward · · Score: 1, Informative

    There are so many reasons not to start with PHP, that I'm not even going to start listing them here. PHP is a HORRIBLE first language, and a horrible second, third or forth language. It corrupts minds, and makes it harder to learn other languages. It's a lot worse than corrupting someone by teaching BASIC as a first language.

    You should be ashamed of yourself for suggesting teaching PHP to a kid.

    -Don

    To be quite honest, you are terribly wrong, PHP looks alot like C or C++ is syntax, it has somewhat OK OOP (will be even better with php6), yet provides alot of functions for most things, it has tons of interfaces to UNIX-like enviroments and is easy to grasp.

    Ofcourse like most languages intended for webdevelopment, it is not optimal for system programming, even tho it provides alot of functionallity for it. I have no idea why you think its horrible, its really not. Want languages that will make it hard to learn other langugages if you learn them first? Look into Visual Basic or Python.

  106. Give him direction by Asmor · · Score: 1

    Speaking as a 23 year old who's largely self-taught in programming...

    Find out what he'd like to do, give him direction if he doesn't know. I find the greatest hurdle to learning, for me at least, is lack of ideas. Often, I end up programming the same thing first in new environments and languages: a dice roller. It's sort of my "Hello World." That said, while it's a good way to just get something done, it doesn't help me learn much. I learn best when I try to tackle something that's just beyond my level of expertise-- too far beyond, and I just can't do it. Too easy and I'm not learning anything.

    Just as an example, say he was interested in writing a program for his favorite game. The first thing I'd suggest to him is working on a functional GUI using the tools of an IDE. There's really nothing quite so satisfying as a really nice GUI; a command line app is often more functional, depending on your needs, but it's just not as satisfying.

    Next, you might suggest that he learn some of the I/O tools and add save/load functionality to his program, using simple text files. After that, you could show him some more interesting techniques for saving, like serialization or XML.

    Another example: Teach him how to use a database. Start off with a simple database with a couple of tables, maybe a list of customers and a list of items. Then start introducing normalization, joins, etc.

    1. Re:Give him direction by JoeCommodore · · Score: 1

      Often, I end up programming the same thing first in new environments and languages: a dice roller. It's sort of my "Hello World." That said, while it's a good way to just get something done, it doesn't help me learn much.

      Actually I find thats the best way to start learning a new language - your test project (dice roller) is something you know by heart so it isn't a factor in your new language, you know the ins and out of that. So mainly you can just concentrate on learning how to do it in the new language than trying to do something unfamiliar as well.

      --
      "Enjoy what you're doing! If it becomes drudgery, you're doing it wrong!" - Jim Butterfield
  107. Listen to me, you must. by lanec42 · · Score: 1

    I am 15. I became really interested in computers when I was 13, when I started writing HTML. I then did a lot of TI-83+ programming when I was bored in school, and now i'm learning C++, and basic shellcoding. Your son is already incredibly lucky. My parents take little to no interest in my geeky pursuits. If he can always come to you for help, and if he's already shown an interest, I bet he'll stick with it. It's addicting.

    1. Re:Listen to me, you must. by SplinterOfChaos · · Score: 1

      I remember doing TI-83 programming. I always finished my math homework so much quicker than everyone else because instead of paying attention in class, I'd be programming it how to find solutions. TI programming is great. Teaches a lot about optimization.

      And I agree. He's lucky. Even if you don't know the language he uses, being able to talk about conceptually what happens is very helpful.

  108. MOD PARENT UP by Asmor · · Score: 2, Insightful

    Javascript was my first programming language. It's something everyone's got simple access to, it's very forgiving (though it does set you up for some bad habits), and it's very simple to make GUIs and interact with the user.

  109. Jeez by p3d0 · · Score: 1

    You must have learned programming as an adult in college. Those of us that actually learned programming as a kid know what you just said is the exact opposite of what it takes to get hooked on programming at a young age.

    --
    Patrick Doyle
    I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
  110. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  111. From NAND to Tetris by STFS · · Score: 3, Informative
    I guess this really depends on how interested your kid actually is in learning the internals of computers. It might be a good idea to start with a "high level" tool, and I'm not talking about using Python or some such thing, but using Alice and/or LEGO Mindstorm. I've played with Mindstorms myself in a robotics course and I can vouch that you can do a lot of fun and interesting things with it. There's even a C-like programming language and compiler that you can switch to when the "block interface" becomes boring and your kid gets interested in learning more "orthodox" programming.

    Once he has a solid knowledge of basic programming and if he's still interested in learning more of the basics of how computers work and if you are willing to dedicate quite a lot of time and effort to destroying the social life of your kid once and for all and turning him into a full blown geek I'd recommend that you take a look at a course that has been called "From NAND to Tetris" in which students are given a NAND logic gate and must construct their own (simulated) computer out of that by gradually building on top of that NAND gate. Eventually they end up implementing a simple game, such as tetris or snake in a computer that they build from the ground up.

    Here are some links for this material:
    A short introduction to the course: http://www.youtube.com/watch?v=JtXvUoPx4Qs
    A long introduction to the course (Google Tech Talk) http://video.google.com/videoplay?docid=7654043762021156507
    The course material itself: http://www.cs.rpi.edu/news/colloquia/December8_2005.html

    Above all else I think you need to be sensitive to your kids needs and longings. Who knows, maybe he will not be interested in all about learning the internals of computers but more interested in the usability and design of interfaces (I know, your worst nightmare I'm sure). My point is, don't push him into a direction that isn't to his liking.

    --
    You don't think enough... therefore you better not be!
  112. Tell him about artificial life by chrischan · · Score: 1

    Independent from the decision what language to learn, talk to him about artificial life (programming little animats that live in an artificial environment and have artificial genetics). It is such great fun to program little animals running across the screen. IMHO, this is a perfect approach to learn programming:
    (1) You can start off simple (without any genetics or physics) and already have fun, then add more and more features to your animats and to your environment.
    (2) The concept of object oriented design is very obvious here: each animat is an instance of a class and has methods and attributes.
    (3) If you add genetics, your son will develop a natural view on evolution, which in turn will prevent him from becoming a creationist (god willing).

  113. Re:Learn to program by Chris Pine by MenThal · · Score: 1

    +1 and then some.

    I reviewed and gave feedback on an early draft of this book for Chris (as did a lot of people at my previous place of employement), and I'm a long-time Ruby fan, so I may be biased, but I really recommend this.

    Me and my wife went through about half of it together, and she really did seem to get a lot more understanding of what it is that I do as a programmer. (She isn't much of a techie despite we met on IRC, so she isn't scripting for her self just yet.) The book is a fairly good fit for the early teens, doesn't fly a lot of tech jargon over their heads and isn't condecending either. ... now if you'd pair this with an insane Ruby book from whytheluckystiff, you've got a dynamite combo that will never be boring. :)

  114. Lego by Frost_Azimov · · Score: 1

    For me it was Basic on the Aster (CP/M), and not much later the c64. However, I remember getting really 'drawn in' after getting the 'feedback' of what my programs did. There's nothing that gives more feedback than Lego Mindstorms robotics; even the old sets (cheap second hands) will allow a very simple (GUI) start, and allow an upgrade path (NQC for example) which could later lead to *nix hacking.

  115. Mod an existing game by ubertopf · · Score: 1

    I would not start with writing a game from scratch, many games such as Neverwinter Nights or Tremulous or what-have-you feature a scripting environment and sometimes even an IDE. Starting to write small modules gets you nearly instant reward as you can see the results in the game and teaches the basic concepts of control flow and APIs.

    --

    something clever to make me stand out!

  116. Re:Son? by K.+S.+Kyosuke · · Score: 5, Funny

    More than half of the a woman's body is water. So without loss of generality, he could just have written "without all the hassle with opinionated bodily fluids".

    --
    Ezekiel 23:20
  117. I program calculators!! by lanec42 · · Score: 1

    I started programmed calculators when I was in ninth grade! (Last year.) I am teaching myself C++ now, and you are absolutely right, the OO stuff is hard to get used to. I hope to learn PHP soon, (I might start looking into it next year) and as I'm going through C++, I'm starting to learn a little x86 assembly. I hope that I can get good at this, though I probably won't pursue a career in computer science. (Physics has always been my favorite.) I really wish that I had someone in my family that could help me. I think I'm talented, though. I often use programs on tests (mostly to beat the others ;)).

  118. Forbid it by SleepyHappyDoc · · Score: 1

    Tell him computers are for grown-ups, and that he'll be punished it you catch him programming before he's 18.

    --
    Stasis is death. Embrace change.
  119. My one real regret... by Joker1980 · · Score: 1

    Is that when i was younger my dad was desperate to get me to learn to program. Unfortunatly i had better things to do at the time (or so i thought heh) and so never did. Fast forward a good few years and im now a sysadmin. My dad passed away last year and its always bugged me that i never took him up on it, i know virtually nothing about programming but really want to learn (for my own amusement if nothing else). So as a total noob and to tag onto this disscussion what would the slashdot crew suggest as good place to start learning/playing around in this field. Any guidence would be GREATLY appriciated thanks.

    --
    Well, Bart, your uncle Arthur used to have a saying: "Shoot 'em all and let God sort 'em out."
  120. What I learnt then, to what I do now... by Jawdy · · Score: 1

    Like most others, I agree with starting out with something like Perl, Python or even PHP. If you got him on with HTML, CSS, PHP and SQL, then he could develop web sites quick and easily - what with the web being the most used thing now. The first language I started with was (dare I say it) Visual Basic, as you can make some "traditional" looking MS/Win32 apps very quickly, the syntax isn't tricky at all and the overall feel is very Micrsoft-y. Saying all of that though, I've been playing with C and Assembler for the ARM achitecture (using GamePark Holdings GP2X console) and trying to get involved with the Demo Scene. I've also been looking at 3D engines and low-level libraries as knowing how things work from the ground-up is what interests me the most. I think it took about 7 years of coding in general before I finally found the thing that interests me the most - so see if you can find out _what_ he would like to achieve from his code, and then try to direct him that way.

  121. Find something he wants to be able to do... by OrangeSpyderMan · · Score: 4, Insightful

    I've often found that by far the best way of teaching him to do this kind of thing relies on finding something he wants his computer to do for him.

    This could be just about anything - if he likes sports, it could be a sports results and stats database, if he likes RC modeling it could be an interactive application for setups for his radiocontrolled cars. Your only real role here is to ensure he chooses something feasible in a reasonable timeframe (don't suggest writing Quake5 :) )

    The thing I like about this approach, is that it will teach him far more than just "how to do it" - you can start it with a discussion about how he wants to go about it, to start with which language (pros and cons, quick GUI development vs. old school stuff - basically just see what ticks his boxes) and it'll then take you through the basics of data models, and the fact it'll be useful will keep him motivated. Help him break the task up into little bits, and use the first few to teach him the ropes, and then let him try some on his own.

    Make it clear it's his project, that you're there to help whenever and wherever you can - but don't judge. If he wants to start with an Access DB - by all means point out the pros and cons, but it's his toy - let him do it, he should be old enough now to see for himself whether it's "right" or "wrong".

    --
    Try NetBSD... safe,straightforward,useful.
    1. Re:Find something he wants to be able to do... by Quiet_Desperation · · Score: 1

      I've often found that by far the best way of teaching him to do this kind of thing relies on finding something he wants his computer to do for him.

      echo $GENERIC_PORN_QUIP

  122. Real Basic by TRRosen · · Score: 1

    I'd recommend Real Basic. You can get really nice results with very little effort or programing knowledge. This gets them hooked. Then as they want to do even more with there programs they will then end up learning all the good messy stuff underneath.

  123. You did it exactly right by iwein · · Score: 1

    Just show him what you know and show him that whatever you don't know is really easy to learn. He'll probably ask you things that you haven't got any experience in and then you'll figure it out together. He might even teach you something in a few years.

    I'm too lazy too look for the source, but I read an article suggesting that the commandline is the best place to start learning. But who cares? The most important thing is that you don't discourage him by forcing him to take a certain path or hide complexity. Peer instruction works the best so if you have the time just sit with him and do something that is new to you too.

    --
    Show a man some news, distract him for an hour. Show a man some mod points, distract him for the rest of his life.
  124. I wouldn't start there by p3d0 · · Score: 1

    Greenfoot looks neat and all, but it definitely has a Java mentality of programming on top of a massive framework that's provided for you.

    I'd think simple turtle graphics would be much simpler to grasp at first. The kids need to learn control structures (loops, if statements), variables, etc. before they tackle some huge object-oriented application framework.

    It's admirable that they want to teach OO programming early, but let's face it -- there's zero motivation to use OO until your programs reach a certain size (say 100 lines). There's plenty they can have fun doing before they ever get to that size limit.

    --
    Patrick Doyle
    I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
  125. Maybe Alice? by iamhere · · Score: 1

    http://www.alice.org/ I heard about this almost a year ago in a talk by Randy Pausch from Carnegie Mellon University, but haven't had time to check it out. It is supposed to make the learning experience of programming better. Also maybe if you have some first programs written a bit of competition could do no harm: http://www.topcoder.com/ The series of Head First books from O'Reilly also made a favourable impression on me.

  126. Easy... by rob1980 · · Score: 1

    Tell them their parents hate it. Naturally, they'll rebel!

  127. Self taught by ZeroExistenZ · · Score: 1

    While wanting to help your son in his curiousity, I think you shouldn't guide him too much but provide help when he gets stuck or something he tries to do doesn't work.
    For me personally, I learned programming by experimenting, doing, my curiousity and drive to do something on a PC often brought me into different fields of programming. It's the curiousity and that geeky drive that made me want to discover more. Often, when I found a good resource on how to do a particular task, it bored me as the challenge got lost. The same goes with having a peer with "all the answers", it makes you shut off your own creative process.

    Programming is to me exploration and experimentation, building on past "discoveries" and solutions you've thought up. If you'd want his curiousity sparked, allow him to be creative, think out new things to push himself further and constantly feeling a sense of realisation or achievement. Something that is "your own".

    Wherever that's on Linux, some flashmovie, a "hello world"-movie, for some a HTML-page, a clever JavaScript, it doesn't matter.

    --
    I think we can keep recursing like this until someone returns 1
  128. Re:PHP will ruin your mind by Jens+de+Smit · · Score: 1

    There are so many reasons not to start with PHP, that I'm not even going to start listing them here.

    I think you should, because this is a horrible way to make your case. Although it's true that PHP allows you to make hugely incomprehensible programs, that's no reason to write it off completely. C and C++ allow for even far more rancid hacks, and the only thing I've heard people say about those languages is that it's hard because of the compilation step...

    PHP has come a long way since PHP3. Although the typing system is still pretty weak, PHP5 has a nice OO model and Exception handling interface. What makes it great as a first language is that you have very easy access to a visual interface system (html) and that it has a huge library that help you along on the more complicated stuff, with proper documentation. Oh, and it's definitely worse to teach BASIC as a first language than PHP. Let's talk evaluation strategies...

  129. Find a project for him (something he wants to do) by JeremyDuffy · · Score: 1

    Assuming he already knows how to do "hello world" (in other words, he knows the basic syntax and structure of the language and how to make stuff run), then the next step is easy. I didn't read the other comments so sorry if someone already said this, but the easiest way is to find a project. Something that he'd like to make a computer do for him. Once he has a project, just turn him loose. Show him where help can be found online and answer any questions he has when he has them. Other than that, leave him alone!

    --
    Informing people about the scams, shams, and bunk that assault them on a daily basis. http://www.jeremyduffy.com
  130. My dad taught me by using hardware.... by croftj · · Score: 1

    After weatching and at time helping hime build a few nothing boxes (neon ring counters of a sort) crystal radios etc, I got interested in electronics, that ultimately led to computers which lead to S/W.

    I guess to start hime off, try some simple games. HILO Hangman or Towers of Hanoi (for advanced stuff).

      All of those can be non-graphical at first using any language such as Perl.

    Be sure to explain a lot. At 7, a Nothing Box was just flashing lights until I was told the properties of the neon bulb and a capacitor. Simple explainations will work if the kid has a bent for these things.

    --
    -- Many men would appreciate a woman's mind more if they could fondle it
  131. A.L.I.C.E. by DrakmirV · · Score: 1

    This is an interesting environment. You get a 3d environment to play in and prompted programming statements. Although not a "real" language, it would be a good introduction to programming and gives some immediate feedback to the beginner.

    http://www.alice.org/

  132. Programmers are born not made by tjstork · · Score: 1

    I think you have to want to do it. If he wants to program, he's going to learn how to do it and if he's self directed he'll figure out what questions he needs to ask.

    --
    This is my sig.
  133. First Ever Program by kramulous · · Score: 1

    y = sin(x) in Pascal (That was the language at school at the time)

    From there, research in non-linear algebra and research support for a supercomputer and cluster - mainly code tuning, optimisation and parallelisation.

    --
    .
  134. Re:Son? by Savage-Rabbit · · Score: 4, Funny

    ...the hassle with women.

    It seems you made a mistake in your post, I've gone ahead and fixed it though.

    Why don't you two just stop complaining and fix the problem once and for all by writing a proper manpage on women?

    --
    Only to idiots, are orders laws.
    -- Henning von Tresckow
  135. 2 key pieces to keep your kid programming by CandideEC · · Score: 1

    I would recommend looking for solutions with two key pieces, and an overarching theme. The stuff he is doing must relate to daily life in some way. This can be difficult depending on what he spends his day doing - but if he plays fantasy sports, he should be working up to a program that helps him manage his team / gives him an edge. If he collects rocks, he should be working towards something that helps manage his collection, pictures, etc. If it doesn't apply beyond the keyboard, good luck. Part 2 is similar - it should be something that can be shared easily with others. You put that much time into learning how to create stuff, and your going to want to share it. Impress people, help people, scare people...whatever. Those are the two big inducers though - its got to be stuff that can apply to your life or things that can easily be shared with other people. Thats the bit of heroin high you give him after he gets by the crossfire on the street and the giant rottweiler in the yard - if hes going to get good at programming, he'll be back. This points to web app type stuff usually - from my point of view, you'll get no where fast on the command line - he will find that stuff if hes interested, but the teenage social call will pull any reasonable adjusted kid away from anything so solitary pretty quickly. You have to sneak in some of this creation heroin before your car is out of the driveway for 6 hours every night - if your lucky, for every night he's shotgunning beers and chasing girls, there might be an hour of programming as he beats the hangover.

  136. This is how it worked for me... by Delgul · · Score: 1

    It might help to see how I was stimulated by my parents to take up programming at an early age.

    At 12 years old I started programming at school on a VIC-20. BASIC of course. Although I was interested in computers to begin with, my mother pushed me to do a course. In that time (1984) she already had the foresight to tell me that it would be a smart move. I am still thankful for that after all these years.

    Although BASIC seems a outdated choice now, in retrospect, the simplicity and the speed at which results became visible was important to keep me going at that age. This is the reason I would suggest to start simple. Perl perhaps. Also don't try object-oriented stuff yet. It will come later if the interest is there...

    The next push was a challenge: A few months later (I moved on to a C-64), IBM was programming a piece of software for the company of my parents. I noted this when it was discussed some time during diner. I remarked that it didn't sound very complex and wondered about the enormous costs that seemed connected to it. They asked me if I thought I could do it. I said yes. My father then said to me: "If you manage that, you earned yourself a printer and a disk drive for your C-64". Around that time, this was a unimaginable wealth for an underage C-64 owner (at least it was for me). I started on it and a few weeks later it was there. It worked, I got my hardware (and my father a huge discount from IBM after he showed them my program telling them that he wouldn't pay that asked price for software that could be delivered by a mere child in his spare time in a few weeks LOL)

    After this I went on on my own. During my studies I met some people with the same hobby and that completed my addiction ;-) These people also introduced me to higher languages like Pascal and C++.

    At this moment I am a regular perl/ruby/RoR/C++ programmer and still having a lot of fun!

    So a good approach seems to be:

    1) Start out simple (script?)
    2) Set challenges to overcome to keep stuff interesting.
    3) Slowly move to higher generation languages.

  137. Re:Son? by pyxl · · Score: 1

    Yeah, 'cuz the question is indeed about a budding programmer...

    --


    Given enough hydrogen, just about anything is possible.
  138. That's right. And to add.... by BitterOldGUy · · Score: 1
    I would encourage him towards art, music, dance, sports, etc... Things that will allow him or to meet people, especially of the opposite sex. Those subjects help them develop social skills and build confidence. And by learning as a younger person, there's a good chance they'll become good at it.

    Programming is a pure intellectual pursuit and can be learned at anytime.

    If I could go back into time, I would have spent more time on those artsy and sports subjects instead of locking myself away with my computer code. I grew up to be a lonely and shy person, while the concert pianists, dancers, and athletes had plenty of friends, partners, and much more success in life in general - all because they were much more easy around people.

    P.S. Many of those "dumb" jocks I went to school with are now Drs. and Lawyers and engineers; married to wonderful women and have a family.

  139. python and microcode by Speare · · Score: 1

    I agree with the basic premise that a high-level scripting language is a great first tool. No explicit compiler required, and you can accomplish things in a pretty straightforward way.

    Just after learning the basics of imperative programming, though, I would recommend a short primer in how microprocessors or microcontrollers work. Registers, limited storage, direct access to hardware, opcodes, and so on.

    As it happens, a little while ago I decided I wanted to write a cheesy simulator for a six-bit microcontroller in python. The bytes are six bits, the address space is six bits wide. It all fits on a chess board. http://halley.cc/code?python/octalplus.py

    --
    [ .sig file not found ]
  140. Re:Son? by smittyoneeach · · Score: 1

    M-x woman
    (goes after that man page like a pig at the troff)

    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
  141. Second by Nursie · · Score: 1

    My dad wrote me a multiplication test game for our C64 when I was young (much younger than this kid) and made the screen change colour when you got it right.

    From then on I tried to figure out how to change screen colours, make stuff scroll, deal with input... it went from there. Soon I was trying to alter the code for games (the ones written in BASIC anyway, there were a good few) and see what happened.

    Whatever it is I advise something that is simple but gets immediate results. That's what turned me on to computing at the beginning - making these wonderful machines do tricks for me, and doing things with them that other people can't or don't even think about.

    Oh, you're good with computers because you can know how to use word? Well check *this* shit out!

  142. Teens respond to teens by b4upoo · · Score: 1

    Teens have immense power over other teens. There is some sort of herd instinct that can be turned to your advantage. Get your son involved with other teens who are learning to program, hack etc.. There might be a formal teen computing club in your area but if not there may be a way to find avid teens who are computer junkies. Perhaps adults you know have teens active in computing. The garage band type of model for teens learning computing is hard to beat. His schools guidance councilor may be aware of teens involved in computing. Sadly a lot of Windows exposure will be hard to avoid.

  143. Induce Problem Solving Capability by Axe4ever · · Score: 1

    Before getting into *nix systems or Windows systems, i think probably he shud be understanding first, 'bout programming paradigms. Rather than restricting somebody to some system or a particular language,the person should be taught on how to tackle a situation, no matter what language he is using.After all, computer languages are way of expressing how you tackle a particular problem and make the computer do it for ya.So,essentially, paltform to platform, the syntax might change, but of course logic remains the same.But to improve logic, he needs to see the problem in a 3rd person view..as in..what he has with him (language) and what he wants to do. Once he gets into that, (atleast, a fair idea of how he is gonna tackle..start by writing out pseudocode)logic will improve.Once he gets the logic,converting that logic into a particular syntax is not a big deal.He will learn the art of solving problems rather than a particular language or a system.

  144. Game Development by BlueMonk · · Score: 1

    I don't know about your son, but I for one was so excited about programming that I didn't need much of a teacher. If you find the right instrument to get him excited about programming, he'll come to you with questions or figure out how to answer his own questions and lead his own learning path. Of course I'm sure he would still appreciate some ideas and guidance from time to time. Personally, I enjoy game programming. There are free game programming environments on Microsoft's web site if you're not too heavily anti-MS. The modern environments are, I suspect, much more entertaining to use for a beginner than the environment you're used to using. To get started, head to their "explore by intrest" page.

    Also, I am working on a more visual (less coding) game development environment (Scrolling Game Development Kit 2), and trying to make it a bit more portable (it might work in Linux someday since I am almost done converting it from DirectX to the OpenGL-based OpenTK library). I think game development is a very rewarding way to learn programming.

  145. Personally I say, start with modding games by Moraelin · · Score: 4, Insightful

    While I'll aggree that kernel hacking won't get anyone interested in programming, I think programming web sites is somewhat lacking in motivation. As you were saying, you want it to provide some serious bragging rights.

    Whatever you want to do on the web at teen level, has been done before and better. Publishing photos? There are a ton of providers which achieve the same thing. Forums? Ditto. All you need for a good guild web site are webmaster skills or maybe graphics design, _not_ programming. Approaching it from the programming side is the way to get the least bragging rights, with the most effort. Everyone won't go "woot, what an original forum you programmed!", but the more discouraging, "geesh, why don't you use PhpBB like everyone else?"

    Personally, looking back at what motivated _me_ back then, I'd say start with games. That was my motivation. I could throw together a game as good as Psion and the gang made for the ZX 81 and later ZX Spectrum, and show it to my classmates and get some serious appreciation. The first game I wrote, when I invited a couple of classmates to see it, they ended up playing it all afternoon. Mind you, it was uber-simplistic by today's standards, but it was as good as anyone could possibly do on a 1K ZX-81.

    It was motivating enough to get me started on assembly and converting it by hand to hex.

    Nowadays I wouldn't advise anyone to write a game from scratch at home, but there's a _lot_ you can achieve as a mod. And mod-friendly games are getting rather common these days. I can think of a few where most of the game logic (i.e., minus the graphics and such) was Python, one even TCL, and one was scripted in Java.

    So basically I'd say, show the guy how to make his own mods. Even if it's just for cheating it's a start.

    And the distant carrot of making it big and famous is there too. Both Counter-Strike and Team Fortress started as mods, and ended up major successes.

    --
    A polar bear is a cartesian bear after a coordinate transform.
    1. Re:Personally I say, start with modding games by pjt33 · · Score: 1

      Nowadays I wouldn't advise anyone to write a game from scratch at home

      Why not? "Game" isn't synonymous with "First person shooter". An intelligent teenager can learn enough to make games better than half the stuff on Miniclip in less than 6 months.

    2. Re:Personally I say, start with modding games by Courageous · · Score: 1

      I can think of a few where most of the game logic was even TCL,...

      I think I want to commit suicide now.

      C//

  146. Perhaps something more exciting than Hello World? by gerardvb · · Score: 1

    I think the main thing is to get more interesting results. I hooked my son by designing the outline of a text adventure, that he had to program in LOGO. It worked. He is a professional now. I think creating an intresting subject is more important than the choice of a specific language.

  147. Well, for one thing... by hyades1 · · Score: 5, Insightful

    ...you're his dad. The time you spend with him will be one of the highlights of his life, and will determine how he, in turn, raises his kids. Whether you suck as a teacher or not isn't even on the scale. Try to learn. Do the best you can and encourage him to let his interests take him to other sources. ALWAYS answer his questions.

    Sorry for the polemic, but believe me, your son will stretch himself to understand you far more than he will even for the most gifted teacher. What I owe to my parents can never be repaid, and there isn't a day goes by that I don't miss them.

    --
    I've calculated my velocity with such exquisite precision that I have no idea where I am.
    1. Re:Well, for one thing... by robotngineer · · Score: 1

      ...you're his dad. The time you spend with him will be one of the highlights of his life, and will determine how he, in turn, raises his kids. Whether you suck as a teacher or not isn't even on the scale. Try to learn. Do the best you can and encourage him to let his interests take him to other sources. ALWAYS answer his questions.

      Sorry for the polemic, but believe me, your son will stretch himself to understand you far more than he will even for the most gifted teacher. What I owe to my parents can never be repaid, and there isn't a day goes by that I don't miss them.

      Very, very well said.

      My dad is an electrical engineer and spent a lot of effort trying to get me interested in programming (BASIC, etc.) and electronics kits. They really didn't hold my interest like Legos, woodworking, and other things did, which he also spent time working on with me. I started out as a mechanical engineering major in undergrad, but the switch flipped (pardon the pun) sometime late in undergrad, and I now work as an engineer programming robots, designing circuits, and doing mechanical design.

      I'll always be thankful for those memories, even those times when I was bored out of my skull by staring at traces on the oscilloscope, etc. Because of his example, I'll strive to spend time with my future children--at the expense of almost all else.

    2. Re:Well, for one thing... by hyades1 · · Score: 1

      Actually, I thought about it, and concluded the writer was almost certainly male. Would you like to place a friendly wager on his gender?

      --
      I've calculated my velocity with such exquisite precision that I have no idea where I am.
    3. Re:Well, for one thing... by pavera · · Score: 1

      While I agree parents are extremely important, and my own have had a profound influence on my life, I will have to disagree just a little with being willing to stretch to understand.

      My dad, while brilliant, also, is an extremely poor teacher. In high school I was generally very good at math and science compared to my peers, but when I would get stuck on hard problems, I dreaded working with my dad on them. He could look at the hardest problem in my high school calculus book and solve it without writing down a single thing. He had a very hard time stepping back and walking through his thought process, and it made math extremely frustrating for me. Instead of getting me more interested it really turned me off.

      Again this isn't to say I don't love my dad, or appreciate time spent with him, but I would much rather go sailing, skiing, talk about investing, or just about anything else besides work on math problems with him. It seems this could be a similar situation, a veteran kernel hacker with poor teaching skills could really turn off someone to programming because their insights, ability to see through problems and solve them without needing to express what their brain is actually doing can be extremely detrimental to the learning process and therefore ongoing interest in a subject.

  148. Ask him to run and understand this by krkhan · · Score: 1

    #include <stdio.h>
    #include <stdint.h>
    int main() { uint32_t x[] = { 544499015, 1768693857, 1931502950, 2190959 }; printf("%s\n", &x); return 0; }

    1. Re:Ask him to run and understand this by cleatsupkeep · · Score: 1

      And in doing so, all hopes of achieving the message will be gone.

  149. Not the same as 20 yrs ago by Mathinker · · Score: 1

    I agree about encouraging the son to program in some high-level language (in which the father is also proficient), but I disagree with your dismissive "it's the same as basic was twenty years ago".

    Twenty years ago, the computer had a kind of mystique which is now, if it still exists at all, much less strong. The way society relates to computers now, compared to twenty years ago, is really different. I have the distinct feeling that this is causing there to be less interest in learning about computers because they're much less exotic.

    Or maybe just a different demographic is interested in computers --- perhaps the kind of kids who were interesting in computers then, might now be more interested in far-out stuff like nanotechnology, space exploration, particle physics, and genetic engineering, and the kids interested in computers now are more like the hot-rodders/car freaks of then (note: this is not meant to be judgmental of either group).

    In addition, twenty years ago society wasn't saturated with exposure to computers running impressive programs like interactive 3D games, or with computer generated movies. A dreaming teenager today must be a bit more intimidated looking at all this stuff when he is starting out, writing "Hello world".

    1. Re:Not the same as 20 yrs ago by CastrTroy · · Score: 1

      I don't quite agree with you on that. I think that computers have lost their mystique. They are quite a bit more common, but still nobody understands just how they work. One you get into programming, even simple hello world applications, and actually see what's going on underneath the hood, you really get to a level of understanding that 99.99% of computer users will just never see. When your teenager compares "hello world" to Crysis, he may be a little intimidated, but you can reassure him that all those guys who wrote Crysis, probably started off writing hello world programs on their home computers. It's a long journey, and you can't write the Linux Kernel in your first year of programming.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
  150. Let Infocom be your shepherd by spyrochaete · · Score: 2, Informative

    Games are what got me interested in programming. I used to read Creative Computing BASIC games compilations in bed as a youngin'. They had the source code of a game along with a couple of printed-out test runs. I found this an interesting application of programming that spoke to my hobby of video games.

    Why don't you write a game with your son? A text adventure a la Infocom, or a slot machine or dice rolling board game?

  151. How I started by anarkavre · · Score: 1

    What got me interested in programming was video games. I played a lot of Sega Genesis when I was a kid and eventually Doom on the PC. I really didn't start programming though until High School. I started HTML when I was like around 10 years old, but this is not really programming in the true sense. Though I guess it wouldn't hurt to start with something like that. High School I really didn't learn a thing. I learned most of the stuff I know on my own. It was mostly out of interest using books and the Internet. C/C++ and various Assembly languages I am familiar with. I am now in college majoring in Computer Science. I think a person really needs an interest in the subject to take it seriously. But I guess it still doesn't hurt to try. Buy him a book on C or another language. I learned a lot about pointers and memory management in C through an old book my stepdad had.

    --
    "Without curiosity and knowledge, the mind is a vast void. Without the mind, curiosity and knowledge are nonexistent."
  152. 2 things by Anonymous+Cowpat · · Score: 1

    1) C? Oh dear me no. You need too much understanding of computer science to get on with C - better to use a language that protects you from having to use pointers and the like. If the syntax for setting up an array, for instance, is complicated, he'll try to find a way to solve the problem without using an array, which will just end in disaster.
    1)a) Fortran. Fortran is an awesome beginners language - it teaches good programming practice like explicit variable declarations (I'm looking at you, basic) and being absolutely damn certain that the code does what you think it does (I'm looking at you, matlab), whilst at the same time, not being hard and unforgiving like C. It's not case sensitive this means that you don't get into the habit of having a variable named 'i', and one named 'I', and since that's begging for hard-to-find bugs to crop up, not doing it in the first place is good.

    2) Find something to do. I spent several years kicking about with QBasic and got nothing out of it. Why? Because I didn't have a problem to solve. Sitting down at the interpreter (or IDE) and not having a problem to solve just isn't productive.

    Come up with a good list of problems to solve and algorithms to implement:

    • Bubble sort
    • Shaker sort
    • Root finding
    • Rectangle, trapezium, newton-raphson methods of numerical integration
    • Runge-Kutta
    • Random Walk
    • 2D random walk
    • nD random walk (implement Box-Muller algorithm to distribute the step lengths on a non-lattice walk)
    • Statistical analysis - mean, median (requires one of the sort algorithms), mode, range (don't mention the minval() and maxval() intrinsics yet), standard deviation, standard error, variance, the last 3 again for correlated data
    • Linear Regression
    • Curve fitting (at higher orders)
    • Monte-carlo sampling
    • Implement a random number generator

    etc, etc, etc.

    --
    FGD 135
    1. Re:2 things by leuk_he · · Score: 1

      Bubble sort for a teenager? to get him programming. yeah right.

    2. Re:2 things by Anonymous+Cowpat · · Score: 1

      what? the bubble sort is incredibly simple, but teaches you about:

      • Arrays
      • Loops
      • Exit conditions (getting out sooner than 'as many steps as there are data values' - accomplished using logicals)
      • Efficiency (and how bubble sort isn't efficient, even if you use an early exit)
      • Good programming practices (good point to bring in swapping values using a subroutine, rather than as part of the main program)
      • Reading data in

      It was also the first 'program' that we had to write in mathcad as undergraduate physicists

      --
      FGD 135
  153. whoops by kramulous · · Score: 1

    I went in that direction, I'm not suggesting that being the next step in the learning process ... although ...

    --
    .
  154. emulator for an old home computer by Fallen+Andy · · Score: 1
    Programming per se seems dull when you're that age, so you really want something where he can play and *see* stuff. So, I'd suggest an emulator for the good old Commodore 64, BBC Micro, Amiga or whatever. You need to do a little research to find out which has a good lively user community though.

    A bit further down the line you might get a gameboy advance emulator e.g. VisualBoy Advance and devkitpro. Nothing beats banging the metal for sheer excitement. Before you know it he'll be writing *new* games for the DS...

    Oh, and don't forget to set him some pretty programming tasks like the gingerbread man, mandelbrot set etc....

    Andy

  155. Teaching is dependant on how you learn by asc99c · · Score: 1

    I've always found that I'm a terrible teacher, as I don't learn in the most usual way. If I'm given a fact I'll just forget it. Given a theory I can remember it.

    Normally I find myself trying to describe why something is like it is (even though these days I consciously try and avoid doing it). I tend to get a lot of blank looks, and people wondering why I don't just tell them the 'simple' version. To me a list of facts is just useless as I would forget the lot!

    What I'm getting towards is there is probably much similarity in how you and your son's brains work - especially if you're both interested in computing. Even if you're a terrible teacher for everyone else, you may find you are good at teaching your son. Or maybe not! - my brain works the same way as my dad's, but my brother's does not.

  156. Re:PHP will ruin your mind by neuromanc3r · · Score: 1

    How is Python making it hard to learn other languages? (well, apart from showing how pointless semicolons and fancy brackets are)

  157. math & SICP by basiles · · Score: 1

    Get him good introductory math books. Get him the SICP book. Show him high order languages like Ocaml, Haskell, CommonLisp.

  158. Why's (Poignant) Guide to Ruby by matvei · · Score: 1

    Just point him to Why's (Poignant) Guide to Ruby. That shouldn't be too boring. I enjoy reading just for its style, even though I already know Ruby :-)

  159. Formal Programming for Teens 101 by Mathinker · · Score: 1

    You don't have teenage children, I suppose?

    The original post makes it sound like he's asking for suggestions on how to make things more interesting for his teenage son (and that he's already explained a bit about the "shell"). Unless his son is quite special, I doubt that formal programming is going to be more interesting for him than something with graphics and user interaction.

  160. Re:Son? by spaced-cadet · · Score: 1

    Inferring that all geeks must be male is rather a large assumption.

  161. php worked nicely for my students by sneaktiger · · Score: 1

    i have been teaching 16 year old students for the better part of the last 5 years. after learning html about half of them started learning php on their own. (they had chosen an IT career path in the beginning)

    it really depends a lot on age and personality, but here are the details that worked for me:

    - find a project they are really interested in
    - don't teach theory when you can point to possible solutions a kid can acquire on its own
    - use the simplest development environment that fulfills the need (otherwise they have to learn to navigate that, too. e.g.: i start my html course with notepad, move to notepad++ after an hour and some move to dreamweaver after a week)

    good luck

  162. easy. by d_i_r_t_y · · Score: 1

    give them an editor that has boobs in it.

  163. Game/Puzzle programming by thepacketmaster · · Score: 1

    The best way to get a kid's interest for programming is to program something he likes to use. Even though I deal with non-game programming now, that was what originally got me interested in computers at a teen. My father was typing in computer games from old Compute! magazines, and I wanted to learn how to do the same. I also remember a summer course that taught LOGO. BASIC might seem "evil" to a Linux kernel programming, but put Visual Basic on a Windows machine is a good way to do it, or Java.

    --

    --

    Luck is just skill you didn't know you had.

  164. RockBox by Roger_Wilco · · Score: 1

    I just recently started hacking RockBox, and it's a lot of fun. You can quickly go from having a boring MP3 player to doing something unique. It's portable, so you can show your friends, etc.

    You're limited to using C, but that way he's got half a chance of understanding what's going on in the machine, unlike with high level languages.

    I'd install it on a player, maybe a spare one that isn't actively in use (though it may be an upgrade to the existing firmware, it's pretty slick). Let him see the demos, modify them, and go from there. You could start with simple things like changing the colours or something in the existing programs.

  165. Re:PHP will ruin your mind by ricotest · · Score: 1

    When I learned BASIC it had line numbers, GOTOs, and some versions didn't even have functions (just GOSUB). This is a far cry from PHP which effectively retains all of C's syntax.

    Yes, it has inconsistent function names and register_globals/magic_quotes are really stupid from a security point of view. But neither of these are relevant when teaching a kid.

    Plus, web programming is a much more visible way of using those newfound skills. A child who's learned PHP can write a cool webpage and show his friends. A child who's learned C can write maybe a text-mode executable, but it's going to be hard to pass it around.

  166. Drive away by Joebert · · Score: 1

    Computers themselves have always been enough to interest me.

    In the beginning the thing that drove me away from computers was my father and stepmother controlling every single thing I did with their computer because it cost them $2,000 USD nearly 20 years ago, I absolutely hated being confined like that & I instead got involved in construction where there was more room (for me at least) to grow.

    I'd have an extra 10 years of experience, and might have even stayed in school, if I'd been given even a piece of crap computer to do whatever I wanted with or at least hadn't been confined like I was.
    Sad part is they'd bought it to be a "business" computer & it just ended up going to waste, fucking assholes. I hate them soo much.

    --
    Wanna fight ? Bend over, stick your head up your ass, and fight for air.
  167. Go ask Alice. I think she'll know. by Jupiter+Jones · · Score: 1

    How about Alice?

    JJ

    1. Re:Go ask Alice. I think she'll know. by _Shad0w_ · · Score: 1

      But if you ask Alice you're liable to end up talking backwards and generally just be totally off your head.

      --

      Yeah, I had a sig once; I got bored of it.

  168. Processing by LunarCrisis · · Score: 1

    Why not try something fun and interactive like Processing?

    --
    Mr. Period: Nine is the one that's right by ten!
    Nine: One day I will kill him. Then, I will be Ten.
  169. Don't scare him off with C by jocknerd · · Score: 1

    Get him on Python for starts. There's a good book out there called "Think Python". Its in pdf form right now and will be published in 2009. Its written by a high school computer science teacher who discovered Python when he was trying to teach his students C. The book is a revised edition of another book he did called "How to Think Like a Computer Scientist: Learning with Python".

    You can find it here: http://www.greenteapress.com/thinkpython/

  170. Does his school use graphing calculators? by Lord+Crowface · · Score: 1

    Those were MY first experiments in programing. I built all sorts of little games in TI-BASIC, a few of which became popular around the school. I never moved on the Z80 assembler, but some do...

  171. IBM's Robocode by Coop · · Score: 1

    IBM created a framework to encourage kids to learn programming, but apparently it's so engaging that big kids who really ought to be working spend their time obsessed with it too. You create a bot class, overriding it's methods that respond to events in the game, and then have your bot compete in battle with other bots. As a side effect you learn fundamentals of Java.

    Robocode is at http://robocode.sourceforge.net/ While googling I also found http://robocoderepository.com/ which is a Robocode enthusiast site.

    --
    "If you're not passionate about your operating system, you're married to the wrong one."
    1. Re:IBM's Robocode by dfries · · Score: 1

      I thought robocode would be a good tool for learning programming. Then I showed it to my cousins that were pretty young at the time and found out just how young someone can be and still get something about of it. I mean when you can program, move forward, turn right, and shoot when someone is in front of you without even introducing the concept of variables, you can start them pretty young. The program is even good for some advanced AI learning. I hear they were more entertained by that program than a little robot thing that had a small built in LCD programming screen, it was too limiting.

  172. html, css and php by ico2 · · Score: 1

    Teach him html, css and php.
    Spiffy websites impress women a lot more than a hello world program in real mode assembler. Trust me.

  173. Shoes, Gibson and Garry's Mod by krilli · · Score: 1

    Shoes:
    http://code.whytheluckystiff.net/shoes/

    Try Ruby:
    http://tryruby.hobix.com/

    William Gibson books.

    Garry's Mod.

    --
    Jag pratar lite svenska.
  174. Put him up for adoption by 91degrees · · Score: 1

    Then adopt an Indian boy who already knows how to code.

  175. O'reilly Head First Series by djdead · · Score: 1

    Like most people at my office, I am a huge fan of the Head First series of books by O'Reilly. A number of people at our office have gone from not knowing anything about computers (we have a number of hardcore theoretical mathematicians) to being proficient java programmers with these books.

    --
    -1: flamebait should really be -1: inciteful
  176. I think it's difficult. by seanyboy · · Score: 1

    There are a couple of reasons that it's getting harder to teach languages.

    1. Languages are moving away from knowing fundemental coding constructs (loops, if statements, etc) and towards knowing an API. You can't really do anything with a modern language without knowing what the libraries are. I suspect these things are frustrating for the learner programmer. I'd pick something with as simple an API as possible.

    2. Back in the day, a junior programmer could write something in a couple of hours that was almost as good as the games, etc you purchased. This is no longer the case. I think it's difficult teaching the basics of programming when no child is going to produce anything that comes close to the games they play or the programs they use.

    If I were to try and teach programming, I'd look at something like scratch or Hackety Hack

    Good luck.

    --
    Training monkeys for world domination since 1439
  177. Ti-89! by Crazyswedishguy · · Score: 1

    Strangely enough, the first programming I learned was on a Texas Instruments Ti-89 scientific calculator. I wasn't even sure in what language I was programming in, but I found some games (generally text-based RPGs) and science programs (math or physics) and decided to understand what was going on. Soon I was making my own RPG (never completed it but I learned a lot) and my own math/physics programs.
    I won't say this is the best way to learn programming, but everyone has a different introduction, and this one definitely piqued my interest enough to take a computer science class in college (which I loved).

    On a somewhat unrelated note, there's a great book that may get him interested in Ruby: Why's Poignant Guide to Ruby. Maybe give that a try.

    --
    This space up for sale.
    1. Re:Ti-89! by Nyall · · Score: 1

      There isn't an official name for the language. But in the ti sites/forums we call it basic or 'ti basic'.

      I consider it a very good way to learn how to program. Its a portable platform you can take to school, and you can make programs for the classes you take. It is very easy to make dialog boxes and give output. Things that would take you a couple years to learn all the APIs on a real PC to accomplish.

      --
      http://en.wikipedia.org/wiki/Jury_nullification
  178. Show your son Smalltalk by chris_sawtell · · Score: 1
    Show him Smalltalk and let him get on with it.
    It's probably the most productive language and programming paradigm ever created.
    It'll probably blow your mind apart, but youngsters take to it like ducks to water.
    The slogan is: Smalltalk makes hard things possible, and the impossible, possible.

    If he gets a reasonable grasp of the principles of these, I assure you he can look forward to a very profitable and rewarding life.

  179. Re:Son? by maxume · · Score: 1

    Impossible. The documentation will only apply to a single instance and will forever be incomplete.

    --
    Nerd rage is the funniest rage.
  180. FreeBASIC by ciw42 · · Score: 1

    In my opinion by far your best bet is something like FreeBASIC (http://www.freebasic.net/) which has a number of advantages as such:

    • Available for DOS, Win32 and Linux
    • Compiles to fast, native, very compact executables. A major advantage over Python or VB if he wants to give copies of his creations to friends.
    • Includes bindings for dozens of major libraries e.g. OpenGL, SDL, DirectX, MySQL, SQLite, GTK, Win32 API, FMOD, BASS etc.
    • Essentially based on QuickBasic (there is a QB compatability switch) but with the addition of things like pointers, basic object orientated features, a greatly expanded built-in graphics library and even in-line assembly.
    • Several good, free IDEs

    I taught my girlfriend to program using FreeBASIC in a single evening and she picked it up really quickly, even writing her first game (using circles for the objects) over two nights.

    With it being BASIC it's quick to get started, but has enough modern features and bindings that it's perfectly suitable for serious work. I've used it for quick prototyping and written quite a few helper apps and utilities for work, and I know others who've used it to write Windows Services without too much trouble.

  181. Or maybe take computer blocks off... by Impy+the+Impiuos+Imp · · Score: 1

    > How To Encourage a Young Teen To Learn Programming?

    Tell him if he finishes the work, you'll get him a purple, season 11, tier 43 sword.

    --
    (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
  182. Logo Writer by ezterry · · Score: 1

    I wonder if there is a modern equivalent to Logo. In elementary school they had us making the turtle draw complex scenes, eventually involving functions and loops.

    Sometime after that my dad upgraded to a old world perform power mac. (60MHz, 512MB disk space) and installed a C compiler [probably so he could poke it at some point, not that he ever did]) and gave me a lesson or two in C, before I started coding/learning on my own.

    A little before the LOGO writer he tried to show me basic.. but at that point I had little interest.. or really didn't like the line numbers

    The real trick is the logic mindset and desire to change the logic. Then you can learn any language once you figure out some of the syntax. However very few people think this way even in the field I find.

  183. Web site. by CountBrass · · Score: 1
    When I was a kid I self-taught programming on a Commdore Pet. What drove me was that I could, and did, programme games as good as those being professionally published (I even self-published a couple).

    Obviously today that's not possible. But I think where you can still produce stuff as good as the pros is in developing a Web 2.0 web site.

    I'd suggest getting him started on Ruby on Rails and working through a book like "Ruby on Rails E-Commerce" (exciting title eh!) or similar ones that you work through to build a social networking site.

    As he gets into it you can perhaps guide him to other aspects of the system:

    • security,
    • design of the UI,
    • AJAX,
    • ruby gems.

    If he's got a bit of math geek in him then perhaps look behind some of the data structures especially the ones RoR uses to hide the complexity (eg hashes).

    Edward

    --
    Bad analogies are like waxing a monkey with a rainbow.
  184. Alternatives by HungSoLow · · Score: 1

    Give him access to alternatives. I was interested in computers, programming, etc... as a kid but I also had access to hardware. I began with Basic / C (coding games) and ended up migrating to coding for PLDs / FPGAs, then to designing audio amplifiers, until finally I found myself in antennas / electromagnetics - I'm now working on my doctorate. Computers are the first introduction to technology, and programming is the easiest to start with, but it certainly isn't the only thing to learn. All I'm saying is to make sure there are options.

  185. CROBOTS by duranaki · · Score: 1
    My dad introduced me to a programming game called CROBOTS (as in 'C' Robots). You had to program a robot to fight in an arena using simple C, then pit it against up to three other bots. I actually tried it not that long ago, but it was clearly using loops for timing, so the "live" battle took about 1 second. Maybe there's a newer version or something similar for another language?

    In general, I think it's good to find something your son likes and find a programming project that fits. Then go from there.

  186. Games by Jaysyn · · Score: 1

    If he likes PC gaming at all, find one he likes that is scriptable, preferably with a C like structure. Neverwinter Nights & Unreal come to mind immediately, but I'm sure there are many others.

    --
    There is a war going on for your mind.
  187. Re:Son? by PopeRatzo · · Score: 4, Funny

    Just show your son these comments. It'll convince him to learn to play the violin or become a social worker instead.

    Can he sing? Tell him to get three of his friends and start a boy band. Then you can retire and hack your kernel in style.

    --
    You are welcome on my lawn.
  188. Some fun intros to programming by Ramayana · · Score: 1

    'Teenage' can cover a wide range, but we've had fun with Lego Mindstorms http://shop.lego.com/ByTheme/Product.aspx?p=8527&cn=17&d=70

    I used to work as a TA in some intro classes that used Karel and Karel++ http://pclc.pace.edu/~bergin/karel.html Kinda like Lego Mindstorms on your screen. It's really pretty cool what you can do with it (make a binary calculator out of robots, for instance). The classes would start with a few weeks of Karel, then move on to other languages.

    For me anyway, it's about learning to think and express your ideas via programming, the language is really secondary (i.e. most learn more than one, if they go on in the field).

    Stuff like this was fun (for most people) and laid a decent foundation for later.

  189. Try Logo or Robowar by Kolargol00 · · Score: 1

    Logo combines simple programming with rewarding Turtle graphics. Programming gets much more interesting when you can make something nice appear on the screen.

    After that, I suggest Robowar a game where you program robots to fight against each other. It combines programming with tactics and graphical animation of combats.

    --
    XML is like violence. If it doesn't solve the problem, use more. Junta
  190. VB, JAVA, or server-side scripting by sorak · · Score: 1

    Hello world will get old after a while. You need something easy, that can produce something that would interest him. For that, I would suggest either VB, because it is very easy to get a GUI app up and running, Java, or HTML, with php/asp/J2EE, all for similar reasons.

  191. I have three kids... by _14k4 · · Score: 1

    Ages 7, 8, and 9... and they are all very interested in the computer; naturally, for the games. So when they see me programming (usually snippets for stuff on project euler) they are always asking "How can I make a game like WoW?"

    The nine year-old is good at typing, and great at reading. I've worked with him on some of the different "higher level lower functional" programming languages that focus on children. He loves it. Though he fell from it when it became somewhat like a lesson and less like a flashy game. I think that, personally, is my biggest hurdle. Teaching without the flash, when I know they need to know the stuff behind the flash first. As they get older, the flash will come, but at least with my kids, they outgrow the "draw a line and the turtle follows it" stuff fast. Also, I have to admit, the oldest may simply not like programming! Which is ok too, I guess. Until the day they tell me HTML is a programming language. :P

  192. Project Euler by frenchbedroom · · Score: 1

    Well, if you guys both like math challenges, you should check out http://projecteuler.net./ To quote the homepage :

    Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.

    Maybe you could tackle those problems together ? You could design algorithms together, let your son do the writing and then review his code and discuss better approaches. Also, when you solve a problem, you can access a forum on the website where other users post their solutions. You can learn a lot by comparing the approaches there. And since every user on the site has his or her favorite programming language, you can broaden your horizons by looking at solutions to the same problem written in K, Python, C, assembly language...

    I've solved 51% of the problems and they've been great at making me remember some good programming practices.

  193. MUDS! by Swampcritter · · Score: 1

    A MUD (Multiple User Dimension, Multiple User Dungeon, or Multiple User Dialogue) is a computer program which users can log into and explore. Each user takes control of a computerized persona/avatar/incarnation/character. You can walk around, chat with other characters, explore dangerous monster-infested areas, solve puzzles, and even create your very own rooms, descriptions and items. You can also get lost or confused if you jump right in, so be sure to read this document before starting.

    Part 1: MUDs and MUDding contains general information about muds and mudding, connecting to muds, mud etiquette, and some commonly used terms found within muds.

    Part 2: MUD Clients and Servers contains general information about mud clients and mud servers and provides links and descriptions of various types of clients and servers that are available.

    Part 3: RWHO and mudwho contains basic information about RWHO and mudwho, utilities for getting information about who is logged into a mud at a given time.

    Part 4: Servers at a glance contains a more detailed breakdown of the various mud server types that are available. This section is limited right now but will grow with time.

    As for the programming background for muds -- they come in C, C++, C#, Java, uLPC (Pike), Python, VB.NET, PHP, etc.

  194. SCRATCH! Re:Scratch: A visual programming tool by JasonNolan · · Score: 1

    There's no question that unless he's bored, start with scratch. I use it with senior undergrads, and we'll be looking at it in my grad class today. It is easy enough for a child, and you can do enough with it, especially if you add the robotics tools such as the picocricket module for scratch.

    --
    https://www.tandfonline.com/doi/full/10.1080/1369118X.2013.808365
  195. Effing Magic by Keeper+Of+Keys · · Score: 4, Insightful

    You've hit on something there. I started messing around with computers when I was 12, and got such a kick out of getting them to do the simplest things, like print messages on the screen. And I can't say the thrill of getting one of these dumb lumps of matter to do what I want it to has never really gone away.

    I think Python would be an excellent starting point, but the language I would choose for a kid's first taste of programming is javascript. They're already familiar with browsers, and within seconds they can be bossing one around, leveraging all its graphical power.

    1. Re:Effing Magic by bhima · · Score: 1

      Hah! These days I'm mostly an embedded developer and the part of my job I enjoy most is doing the hardware shakedown code... nothing like making the lights blink and motors whir. Maybe it's just me but I find the massive IDE used for today's development really off-putting and prefer to just use vi and a cross compiler... or at least I find it far more clear just what in the hell I am doing in that sort of environment, rather than today's full on IDEs.

      --
      Nothing in the world is more dangerous than sincere ignorance and conscientious stupidity.
    2. Re:Effing Magic by minister+of+funk · · Score: 2, Insightful

      I've had many conversations with various peers around the question, "What do you think is a good first-language?"

      When I was first exploring computers, I was using Basic, Pascal and Logo. I don't remember Pascal, and I can't forget Basic or Logo. My first big passion-driven project was developing a Choose-Your-Own-Adventure engine in Basic. It got me into abstraction, simple databases, and eventually graphics.

      I think JavaScript is a GREAT learning tool. You can simulate writing to files using text areas or new windows and Firebug is an excellent debugging tool. The language is very approachable and forgiving. Maybe using a strongly-typed language as a first language encourages disciplines that are missing in new programmers, but inference-typed languages offer tremendous power and can lower frustration levels.

    3. Re:Effing Magic by LeafOnTheWind · · Score: 1

      I learned Python as my first language when I was 10 and moved on to C++ at 11 and 12, where I moved to learn C, Perl, and Java, Scheme, etc, etc.

      My advice:
      Don't be a teacher. When your son is stuck or needs a pointer here and there, be there to move things along, but don't be a teacher. After seeing some fellow CS students who don't have any interest outside of class and only learned in class, I started to realize that I had the most respect for those who taught themselves.

      Providing pointers will allow your son to progress quickly (not getting bogged down in annoying conventions) but not taking away the fun of innovation. There used to be an old school mentality of crappy documentation, code snippets, dial-up internet, and late night hacking which has quickly deteriorated. Teach your son to teach himself and I will be thrilled to work with him. :)

    4. Re:Effing Magic by soliloqy · · Score: 1

      My very first program (in Apple Basic, hah) was a Mad Libs type program for my little brother. It would ask him to type in a noun, verb, color, whatever, and then output a story using those words. Later I modified it to ask him if he wanted to play again. Then I added more possible stories (I was copying them out of a Mad Libs book) and added a "Do you want to play again with the same story or a different story?" at the end. Extremely basic, taught me the foundation of programming concepts, and was fun.

    5. Re:Effing Magic by Draek · · Score: 1

      The problem with javascript is, it doesn't have the l337 CLI c00ln3ss of Python and Ruby. Making things appear on your browser is web design, making things appear on a white-on-black terminal is stuff that only hackers do ;)

      Besides that, though, I think that the initial language is pretty much irrelevant with a good online tutorial and someone to ask questions to. I learned in friggin' C++, which I still consider the most complex programming language known to mankind, but having a friend and my dad to ask when I got confused negated any possible drawback of the language, IMHO.

      --
      No problem is insoluble in all conceivable circumstances.
    6. Re:Effing Magic by betterunixthanunix · · Score: 1

      I personally started with C++, and I was programming little (terrible) games on DOS using DJGPP. To be quite honest, I had never been more excited than when I managed to get a magenta dot to appear on my screen, by directly accessing video memory. If I had started with Python, I would have missed out on that.

      Then again, writing directly to the screen in this day and age is a bit trickier.

      --
      Palm trees and 8
    7. Re:Effing Magic by T3Tech · · Score: 1

      I also do embedded development, but I started using Eclipse a couple months ago to see if I liked it. However, I still use a command line make cross compile so don't really use it so much as a full IDE as I do a glorified text editor with a couple useful extras. So far, I like Eclipse much better than KDevelop which I've used for some basic stuff in the past mostly because it was already installed with KDE and I figured WTH.

      I've still never gotten completely used to vi/vim even though I still often use vi because in some cases it's the only editor available on a box and I did use gvim (still do occasionally) for quite a while to do coding. Almost the same thing with emacs. I used it all the time when my primary machine was an Amiga, and have on occasion since then but I never really got into using it enough to take advantage of even half its features. For basic quick text editing I prefer to use pico. Yeah, I'm strange.

      --
      Of course I didn't RTFA... why would I do that? You really are new here aren't you? Don't let my UID fool you.
    8. Re:Effing Magic by inline_four · · Score: 1

      To be quite honest, I had never been more excited than when I managed to get a magenta dot to appear on my screen, by directly accessing video memory.

      I can relate. I'm not very unique in having started with BASIC, Pascal, C/C++, and Perl. What might be a little more unique is that I started programming with roughly 1 hr of computer lab time per week. That was back in Russia in the early 1990's. At that time, reading a book, experimenting, writing some code to manipulate video memory or the like and seeing that stupid dot on the screen was definitely magic. But maybe not so much now for a modern kid growing up surrounded by mobile devices and other clever gadgets, who probably can't even imagine a computer not connected to the internet.

      What made the dot on the screen magic to us was that something grabbed our fancy and drew us in resulting in an early self-motivated interest in learning to program. The principle I'm sure is still valid today, but maybe the initial stimulus might have to be fine tuned. I don't have kids, so I'm kind of guessing here, but what I like about the Javascript idea is that it could allow a teen to start messing around with things that can

      1. be used to construct things like what is relevant now (interesting web pages, games, rich(er) web apps);
      2. be easily shared, shown off, reused, and continuously maintained; and
      3. serve as a gateway to learning about server-side programming, networking, and other facets of modern computing.
      --
      Alexey
  196. Re:Son? by sjs132 · · Score: 4, Insightful

    There are girl geeks... Few, but some... So you can't assume your % of woman / water, it could have been % of male / water, etc..

    Off topic, but...

    One GG that I know, and is rather pleasant to view, decided the biological ticking was too loud. Having not found a suitable male after being hurt/rejected a few times, she decided to completely forgo the male part of the equation. A few Dr. visits, lots of $$ for fertility drugs, and some frozen sperm = twin babies on the way, no father needed.

    Now, in reality, a male was the initial donor of the frozen sperm, and I told her that she could of saved a lot of money by just going to a bar and drinking a lot of vodka, but she went on spouting about genetic core, family traits, selectability, et al...

    I almost wanted to point out the story of Dr. Jacobs who was convicted of fathering children with his own sperm instead of the donor sperm that was selected, but figured that would only cause too much angst.

    BTW, I guess this is becoming a trend among some women today, so the available men better figure things out soon, or the next generation will all be wearing "popsicle"(tm) T-shirts... (I'm out of the game, married with 2 kids myself, so don't blame me.)

    --
    --- Relax, that mass muderer is just trying to reduce our carbon footprint, one fetus at a time...
  197. Ruby, HTML and JavaScript by Tulitiikeri · · Score: 1

    I would go for Ruby. It's one of the simplest programming languages (you can understand code if you understand english). It could be, however, even better to first learn basic HTML and maybe some JavaScript tricks.

  198. Re:The interesting part of the problem. by jamesivie · · Score: 1

    Absolutely. If he has any aptitude for programming, GameMaker will bring it out and get him thinking like a programmer. The next step towards real development would probably be Flash. After that, most other mainstream languages will not be too hard.

    --
    "O'Connor, smash the window." "Why me, Bigboote?" "It might be boobie-trapped!" "Oh!"<smash> -Buckaroo Banzai
  199. Buy them a scribbler.... by summetj · · Score: 1

    Buy them a $150 scribbler robot with Bluetooth camera module that you program in Python, and turn them loose on our free online textbook.

    Robot: http://www.georgiarobotics.com/roboteducation/products-1.html

    Textbook: http://wiki.roboteducation.org/Learning_Computing_With_Robots

    Disclaimer: I teach this class, and work for IPRE ( http://www.roboteducation.org/ )

  200. Re:PHP will ruin your mind by Anonymous Coward · · Score: 5, Funny

    Hey, I learned PHP as a first language you insensiti-Warning: Cannot modify header information - headers already sent by (output started at /home/a9286564/public_html/x/forum/bb-settings.php:169) in /home/a9286564/public_html/x/forum/bb-admin/install.php on line 10

  201. Young Teen, huh? by jeffsenter · · Score: 1

    Well for the parent of a young teen, the best way to intrigue a young teen in a topic is to make it forbidden.

    BAN your son from programming!

    Sure enough soon he'll be sneaking out of his bed at night to code on his own.

    1. Re:Young Teen, huh? by kbielefe · · Score: 1

      I know everyone's trying for a funny mod with this joke but seriously, that's a pretty low representation of teens. They mostly want to be allowed the independence to exercise their own judgment and creativity, and recognized when they do it well. Of course, the easiest way to be certain you aren't merely mimicing your parents is to do something you know they do not approve of, but that isn't the primary goal. Assuming that your kids do everything to either please or displease you is a very ego-centric view.

      If you want to encourage teens to do something, it needs to be their idea, then it doesn't matter if you approve or not. You can guide that decision as much as you want, providing information they are not aware of, helping them to see the longer term ramifications of their decision, but the final "click" of the idea has to come from them.

      For example, the stereotypical "teen wants to wear weird clothes" scenario. You can say, "Well, that's certainly not a style I'd choose for myself, but it's an interesting choice. What attracted you to it?" That emphasizes their independent thought, and shows you are interested in their point of view before you pass judgment.

      You might follow that up with, "Like it or not, people make assumptions about others based on the clothes they wear. What assumptions do you think people will make about you if you wear that kind of clothing?" Again, focusing more on their ideas than your own.

      "When I was in high school, most people I knew who dressed like that didn't do drugs, but enough did that a lot of people still assumed they were into drugs. How do you plan to handle that if it comes up?" You are giving them information they may not have thought of, not accusing them, but showing you think they are capable of coming up with a solution. If they really aren't prepared, you'll find out at this point.

      In the end, they still might decide to go a different way than you would prefer, but your concerns are addressed and they are prepared to handle the consequences of their own decision. If you do decide to "lay down the line" (which is stupid for something as trivial as clothing in my opinion) at least they will fully understand your reasoning behind it, and hopefully at least feel you don't outright hate them, but merely are utterly incapable of ever understanding them.

      From the perspective of cultivating an interest in programming, the OP's teen has obviously already shown that interest. All the parent has to do is find out what the teen wants to accomplish with it, make sure he understands that sometimes you have to slough through some boring stuff in order to have enough skills to do the fun stuff, and make sure he has all the tools, resources, and guidance to succeed.

      --
      This space intentionally left blank.
  202. itch to scratch by acroyear · · Score: 1

    Part of the hacker mind is that whole idea of getting noticed, and for me, feeling noticed was getting my stuff out there where it could be seen - i went into user interfaces.

    so rather than trying to force-feed him into low level unix hacking, start from the top - set up a http/php/mysql environment and give him something to do like, say, make an app that catalogs the dvd and cd collection.

    with that, you should see the "don't repeat yourself" start to come into play - as you start the boring job of entering data, you figure there's got to be a way to automate that, and then you can encourage them into looking at ajax and freedb's web services to auto-populate the fields on cd insert and other hacks like that.

    the hack is the short-cut that works better than the real solution, but in order to appreciate the hack (and come up with your own), you have to at least start making the real solution first.

    --
    "But remember, most lynch mobs aren't this nice." (H.Simpson)
    -- Joe
    1. Re:itch to scratch by sjhalasz · · Score: 1

      If you've got a young teen (or younger) (or older) with an itch to scratch, try the "Scratch" programming environment from MIT: scratch.mit.edu It's fabulous.

  203. Personal Experience by LEMONedIScream · · Score: 1

    The worst thing you can do is force it out of him. My dad tried the same thing by pulling his own whatsamacallit-tiny-thing-with-no-nonvolatile-memory-and-16k-ram-or-something. I can sort of remember the word "variable" out of an hour long conversation where he tries to explain the basics. Granted, he did buy me a book and I was reading through it but... what I really needed at that point was just basic "programming" stuff, not methodologies, techniques and correctness tips.

    It wasn't until a few years later that I really got into it, I picked it up myself, out of my own accord and I fuelled myself forward. OK, so I was trying to program in a Microsoft Word 97 vb macro utilities but I was young. So so young.

    What your son really needs is to find a reason to do it himself. The project needs to be large. My first real program was in C, writing cheats for online games. It was a vast undertaking, including grabbing a http page, parsing it enough to find certain things, calculating the next thing along to do.

    The most important thing was that I kept myself going on this part. At this point, if I asked my dad for help, he'd look over something and point out an obvious but anything specific he'd just mutter "I can't remember, I'd have to look it up, why don't you do that?" or something similar. This would be down to simple things such as, "how do I use function pointers" or something.

    Well, fortunately I can now use libraries and their documentation and know how to look things up in a grown up "all by myself" way. Unfortunately I learnt through going through every online tutorial on C available. They like to gloss over the why and reasons for doing something but between about 5-10 (following one, looking up the topics in others), they'll kind of explain the topic between them. My desire to work out what's "good" and "bad" in programming seemed to naturally calculate things and work themselves out. Then I learnt the formal approach to patterns, consistency, etc.

    If your son is in high school, this would be the perfect time and approach. After the whole affair, everything I ever learnt at all was turned upside down for the better.

    Anyway, to your son: good luck and have fun!

  204. Re:PHP will ruin your mind by SimHacker · · Score: 5, Informative

    If you're a PHP programmer, you're irresponsible if you're not already aware of its flaws, because you have not educated yourself by reading any of the following well publicized articles. Once you understand the flaws of PHP, you can't honestly make the statement that it's a well designed language suitable for teaching programming to kids.

    First there is this classic article, Edwin Martin's "What I don't Like about PHP", which goes into detail about the following fundamental flaws:

    1. Bad recursion
    2. Many PHP-modules are not thread safe
    3. PHP is crippled for commercial reasons
    4. No namespaces
    5. Non-standard date format characters
    6. Confusing licenses
    7. Inconsequent function naming convention
    8. Magic quotes hell
    9. Framework seldom used
    10. No Unicode
    11. Slow

    Then there is the mind-set of the PHP language designers and community, which is deeply flawed. Ian Bicking's "PHP Ghetto" article sums up the problem with PHP's design and community pretty well:

    I think the Broken Windows theory applies here. PHP is such a load of crap, right down to the standard library, that it creates a culture where it's acceptable to write horrible code. The bugs and security holes are so common, it doesn't seem so important to keep everything in order and audited. Fixes get applied wholesale, with monstrosities like magic quotes. It's like a shoot-first-ask-questions-later policing policy -- sure some apps get messed up, but maybe you catch a few attacks in the process. It's what happened when the language designers gave up. Maybe with PHP 5 they are trying to clean up the neighborhood, but that doesn't change the fact when you program in PHP you are programming in a dump.

    Jonathan Ellis' "Why PHP sucks" article makes a lot of good points and links to many other sites with more information to back up the claim that PHP sucks.

    He perfectly summarizes the yapping of the PHP apologists when he says: Basically these all boil down to, "I don't have enough experience to recognize PHP's flaws because I haven't used anything better."

    He summarizes:

    In short, PHP sucks because, PHP's authors are prone to confuse "pragmatism" (a fine design goal, if done well) with "adding random features without considering how they impact the language as a whole." Thus, its authors have found it necessary to correct obvious flaws in both minor and major releases, with the result that the recent PHP5 breaks with the past to an unprecedented degree while still leaving many fundamental flaws un-addressed. I don't know if this is because they didn't recognize those flaws, or more likely, because they were willing to impose "requires a lot of pain to upgrade" but not "requires a complete re-write."

    There is also a lot of great stuff about why PHP is so bad on http://www.ranting-wolf.info/category/technology/programming/php/ including a concise description of why the "Smarty" templating system is such a horribly ill conceive and terribly implemented idea.

    And if you're still not convinced the design of PHP is deeply flawed, because language design is HARD and should only be attempted on purpose by experienced people, here's what the Father of PHP Rasmus Lerdorf himself said in an ITConversations interview, quoted in "Why PHP sucks, Part III":

    "I don't know how to stop it, there was never any intend to writ

    --
    Take a look and feel free: http://www.PieMenu.com
  205. Flash ActionScript by berlindx · · Score: 1

    I got a great beginning by learning Flash. This worked well for me because initially, I got immediate gratification from seeing my colored shapes tween around the screen. Once I got bored with that, I was able to make more involved projects by learning ActionScript, which is a very well documented and teachable language. Although it limited you to working in Flash, it gave excellent results for not that much work, and it taught me the basics of programming in any language (IFs, loops, functions) Once I wanted to expand my horizons, learning c++ was easy as pie. It also game me a reason to learn things like PHP, mySQL, and JavaScript, to make even more useful and involved projects.

  206. DrScheme is great by dg__83 · · Score: 1

    Hey,

    Try DrScheme; learning Lisp is a lot more palatable for beginners in my experience and DrScheme has a wonderful interface. He can have fun with simple programming and making his own algorithms without having to go through all the tedious memorization and syntax that would comes with a lot of languages.

    My non-techie mom loves puzzles and is a competitive (and damn good) bridge player - I'd always wanted to get her into computer science, but was never able to because having to think about compilers or calling pre-existing packages would just make her eyes glaze over. I finally broke through with DrScheme - now she makes her own programs to crack those puzzles that are in the newspaper each day (and has no idea that that is programming - she assumes programming means something ugly like Java).

    http://www.drscheme.org/

    --
    :)
  207. Visual basic 6 by slimjim8094 · · Score: 1

    No, seriously. You can write some shit code, and it's not very powerful, but it's easy to do stuff with (just not complex stuff)

    I don't like the .NET one, but version 6 learns nicely. It was my first actual language (aside from like HTML).

    The thing that's nice about it is you can draw your window and run it. It'll work, but not do anything. Changing properties is also a GUI - no .setVisible(false) or anything like that.

    Then, when he's made a window that suits him (take two minutes to explain the basics of ergonomics - ok and cancel go bottom-right, etc), have him double-click a button and explain that this will run when you click, etc.

    Very simple to learn and use, and decently useful.

    --
    I have developed a truly marvelous proof of this comment, which this signature is too narrow to contain.
  208. Re:Son? by ShieldW0lf · · Score: 5, Informative

    I can't comment to a teenager, but I've been having success getting my 7 year old daughter interested in programming with Scratch. She's been using it to make movies and games. The thing that really captured her attention was that she could publish her work through Scratch and get positive feedback from the community on the Scratch website. The idea of building a fan base really appeals to her. I've also told her that if she develops the skills, when she's ready for her first job, we will give her part time work instead of her having to get a job in some fast food joint or convenience store, and that seems to have made an impression on her.

    Seems to me the best thing you can do to get your teenager involved in *nix programming is to get them involved in an online community that will give them some positive feedback and the possibility of celebrity, then show them some of the success stories out there that started in just that way. And, of course, let them know you're genuinely proud of them when they create something.

    --
    -1 Uncomfortable Truth
  209. how i got in by Joe+the+Lesser · · Score: 1

    The seed of my love of programming was implanted by a BASIC programming course in 7th grade. I never coded BASIC again, but the thrill of it stayed with me and in High School I took a C++ course, received top honors, and declared CS early decision that year.

    I wasn't even very good with computers...didn't know DOS or UNIX before college... but the logic of the programming was seducing.

    --
    "I only speak the truth"
    Karma: null(Mostly affected by an unassigned variable)
  210. Check out Alice by Hemingray42 · · Score: 1

    Here's an idea: http://www.alice.org/index.php?page=what_is_alice/what_is_alice It's a great intro to object oriented programming and would probably draw the video game types.

  211. Re:Son? by sgbett · · Score: 1

    Oh they dont need men at all if i recall correctly

    http://science.slashdot.org/article.pl?sid=08/02/02/0244213&from=rss

    --
    Invaders must die
  212. Re:Son? by zifferent · · Score: 1

    Like nobody would be able to figure out who the parent AC is. Holy-moley, can you leave any more clues?

    But I can imagine it would be difficult to keep more than one relationship going at once. Which is why I'm monogamous. Why people want to have more than one and spend the extra effort to keep them separate and secret borders on masochistic.

    As to open multi-homed relationships, you are correct sir. Not everyone is up for the challenge.

    --
    cat sig > /dev/null
  213. Not just games by Hierophant7 · · Score: 1

    In order to prompt him to program something other than games (and there's nothing wrong with that,) ban Windows from the house and suggest that he install Gentoo. Then he'll have all the source for all the software on his computer at his fingertips. It'd help him find things other than games, maybe he'd develop an interest in a particular area.

  214. Airwolf Episode by sesshomaru · · Score: 2, Interesting
    Well, how about this Episode of Airwolf?

    Moffett's Ghost

    Hey it worked on me when I was a kid!

    --
    "MIT betrayed all of its basic principles."
  215. Games got me hooked by ninjacheeseburger · · Score: 1

    I am also a teen programmer who has only just started learning, with C. Although I am interested with computing and what a career programming what really got me hooked was games. Although it will be a while before I can write anything good, Ive written a few Pokemon style battle programs as they are easy and simple. I use a really informative book "Absolute beginners guide to C" which you can get on Amazon. Your a programmer yourself so it at least if h has any questions you should know the answer where I just had to keep trying until it works.

  216. you should let him decide... by hvulin · · Score: 1

    You should let him decide! Don't push him, let him come to you and ask... Maybe it will catch on, maybe not! If not, just accept that we are not all born to be hackers, programmers or whatever our parents wish...
    Just make sure you answer his questions regardless how simple they seem...

  217. Re:Give him a reason by Fieryphoenix · · Score: 1

    Absolutely spot on. The reason comes first, the means after. I first learned to program because I wanted to play the computer games published in computer magazines. Since they were mostly written in BASIC for Apple and I had a PC, I had to learn how to modify them for PC. Likewise, I learned to configure my PC because I needed to get the damn games I bought to run.

  218. Re:PHP will ruin your mind by dargaud · · Score: 1
    I already flamed someone for suggesting C++, and indeed I have ambivalent attitudes about PHP. It's easy to get started, it allows for efficient web pages (which may interest a kid so he can show his skills to friends "look at my cool webpage"), but I agree that it certainly corrupts the mind like Basic did.

    Having now read more messages in this thread, I think too few people are mentioning specialized description languages like PovRay or even game description languages. Probably a lot more fun than trying to do a fractal in basic nowadays...

    --
    Non-Linux Penguins ?
  219. Programming from the ground up by walshy007 · · Score: 1

    here

    let him learn assembly, just as I'm sure you probably would have, only this time he has these handy things called system calls for useful things :)

    programming from the ground up will help his knowledge of how computers work also, so when he codes in c, he can know what it's actually being compiled into.

  220. Push him into it! by elrous0 · · Score: 4, Funny

    If you're going to pursue this dream for your son, I suggest the "stage mother" approach. Force him to program, drag him to computer conventions and force him to take computer classes, and when he starts to cry tell him you're going to put his dog to sleep if he doesn't perform. It may sound harsh, but if you're ever going to exploit and live vicariously through your kid. It's the time-tested way.

    Granted, to date, it's mostly been used for singers and actors. But there is no reason it couldn't work for other professions as well. Just be careful to dodge the whiskey bottles when he gets older.

    --
    SJW: Someone who has run out of real oppression, and has to fake it.
    1. Re:Push him into it! by 19thNervousBreakdown · · Score: 4, Funny

      I was going to suggest dressing him in unmatching polyester outfits and knocking his books out of his hands and telling him to "pick it up, faggot." Maybe find a pretty girl to laugh at this occasionally. In my experience, this is almost certain to drive someone to program.

      Maybe combining the two would create the perfect uber-coder.

      --
      <xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
  221. The resources are already out there for teaching by east+coast · · Score: 1

    The teaching resources are already out there. Maybe a bit heavy for a kid learning the ropes but he doesn't have to cram a course into 15 or so weeks.

    My concern would be that if I just let him do a project that he wants to do he may not learn the overall picture. Maybe I'm wrong but I'd sooner have a rounded understanding of what's all there. I recall as a n00b with a fantastic Vic 20 that I just did what I wanted to do without following that fine manual page for page and while I learned a lot I also missed a lot. it wasn't until I got a C=64 and some intermediate programing guides that I found that some of the stuff I was doing was doing it the hard way.

    But I didn't have anyone who knew how to code to help lead the way either. I was really in the dark with a candle, trying to find my way around.

    --
    Dedicated Cthulhu Cultist since 4523 BC.
  222. book on programming aimed at teens by ncmathsadist · · Score: 1

    I am working on a book based on the programming curriculum at the North Carolina School of Science and Mathematics. It addresses programming from the LINUX viewpoint using Python then DrJava. The intended audience is a bright, creative person (especially a teen) who wants to learn how to program.

  223. Re:Son? by K.+S.+Kyosuke · · Score: 1

    There are girl geeks... Few, but some... So you can't assume your % of woman / water, it could have been % of male / water, etc..

    Of course I know, I belong to the ranks of highly opinionated male bodily fluids as well! :-)

    --
    Ezekiel 23:20
  224. Give hime something tangible... by novalis112 · · Score: 1

    Set up a simple OpenGL/OSG/Direct3D/etc. framework for him and show him a few quick ways to modify it. If he's at all interested in programming, he'll figure the rest out on his own. The key thing is that he needs something that shows him the "fruits of his labors" quickly and easily. I started with Logo myself, but I think that current 3d APIs have become sufficiently sophisticated that the basics can be done with relatively little knowledge of programming or 3D graphics in general.

  225. Scratch by Innova · · Score: 1

    I'm surprised no one has mentioned Scratch yet. It gives quick results and teaches the basics of program flow.

  226. Why would you want to? by cjonslashdot · · Score: 1

    Programming's days are numbered. Do you really think people are going to be hacking away at procedural code in 20 years? I don't. I have my thoughts about the direction things will take, as do others. But I am sure that we will rise out of this procedural "programming" rut.

    1. Re:Why would you want to? by ledow · · Score: 1

      I've yet to see a computer program itself. In fact, I've yet to see a computer do anything more than *exactly what it's told* by the programmer/operator. And it does things perfectly in the order you give it. From a limited set of instructions. Mmm. Damn, that sounds like procedural programming is still necessary to me.

      However, we are quite likely to move onto more "unusual" languages, such as massively parallel ones for a start (which are still procedural, but just procedural across many "computers" simultaneously). Ignore the paradigms like OO etc. because they are just pretty ways to do procedural programming in shorthand. That's the human element, not any massive "change" in computing. The underlying code is and always will be procedural. Therefore, even if it's only the GCC team, someone will be hacking procedural code.

      "Do you really think people are going to be hacking away at procedural code in 20 years?" Yes. People said this 20 years ago and it's still true. In fact, people were saying this nearly 30 years ago and it's still true. Possibly even 40.

      The fact is that, without a massive change in the way computers work, procedural code is here to stay. When we get onto computers that don't operate on the basis of performing sets of a single operations one after the other, then procedural programming will die. This is basically the "quantum" era, although I suspect something else may well appear before we have that practically available to the masses. We are probably a lot more than 20 years away from quantum computing. Twenty years ago computing was identical is all but scale. In fact, the last "big change" was from hard-coded to "programmable" computers and that was DECADES ago.

      Even then, the world's software will mostly work the same way - you still have to wait for the user before you can do anything etc. and so ordinary procedural code isn't going to go anywhere even then. What'll happen is that you'll have two different types of computer in one... an "ordinary" one to allow the user to talk to the "weird" one so it can get its answer straight away, or transmit that information securely. The fact is that you've got to change a significant proportion of the userbase, developer base and equipment away before procedural code dies entirely. In a world now entirely dependent on things to carry on working as they are. 20 years ain't enough time for that. In twenty years the basic home PC still hasn't changed its core instruction set, let alone the way it's programmed or works.

    2. Re:Why would you want to? by Talonius · · Score: 1

      Seriously?

      I don't see anyone attempting to move away from procedural programming. I see tons and tons of new languages aimed at new methods of expressing the same ideas and concepts.

      Considering COBOL still has a huge developer base in our world, do you SERIOUSLY think corporations are going to let their existing code base go simply to chase some new paradigm?

      --
      My reality check bounced.
    3. Re:Why would you want to? by cjonslashdot · · Score: 1

      Hi. Thanks for your thoughtful response. However, I must respectfully disagree with you. I feel that procedural programming is not here to stay. I have programmed compilers that took functions as input and generated highly concurrent procedural code (microcode). The input was not procedural; the output was. There is no reason why humans must define procedures. Humans can define programs in non-procedural ways, and the benefit is that there are non-procedural programming paradigms that lend themselves to expressing more of the intention of the human rather than a particular procedure. Procedural programming leads to errors in parallel processing, it is fundamentally insecure, and a procedure defines an implementation rather than an intention. It is fundamentally flawed in so many ways. And there are alternatives. I believe that we would be better off with a combination of functional languages to express behavior, and structural design languages to express structure for defining security boundaries, data conduits, and trust models.

      Also, please note that the fundamental architecture of computers is in fact about to change. Massively parallel systems are just the beginning. We are headed toward machines that do not have pre-defined instruction sets, and in which applications choose the hardware architecture that is most appropriate for the application, dynamically. This is not too far away, and is enabled by new classes of electronics that have been developed. The compilers for these systems will not need to be procedural at all (even on the output side) because the underlying substrate will not have a fixed instruction set: it can be a data flow machine or whatever is appropriate for each application, and can be changed at memory access speed. This technology has been written about in many credible sources. You have made some good points about "we have heard that before" and it is true. But we must not become complacent just because little has changed: a time will come again when a sea change in computing will occur.

    4. Re:Why would you want to? by cjonslashdot · · Score: 1

      Hi. You should look at functional languages, such as Haskel (which is fairly new).

      Yes, I do seriously think corporations will chase a new paradigm. It is a matter of CIOs being concerned with constant technology churn and getting poor productivity out of IT in spite of all the "new" languages and tools. (Ruby is new - NOT. Ruby introduces new concepts - NOT. XML is a step forward - NOT - and introduces new concepts - NOT.) My job is to consult to CIOs, so I know what they think. IT leadership is starting to look more closely at HOW things are developed and not leave it to the whims of programmers as they have in the past. Programmers are going to have to get more serious about things that matter to the corporation, such as assurance, maintainability, and transparency into why particular solutions are chosen over others.

  227. Vintage computer by Creedo · · Score: 1

    A lot of people mentioned how they started off learning to program on old 8-bit machines. Why not just go to eBay and grab one of those? I have several Ti 99-4A computers, a Commodore and a couple of Tandys, with the odd Timex thrown in. My kids picked up the instruction manuals and started hacking. They are 7 and 8, by the way. Once I showed them sprites on the TI, they were off and running.

    --
    All that is necessary for the triumph of good is that evil men do nothing.
    1. Re:Vintage computer by Talonius · · Score: 1

      I think this would depend on the kid. As well, learning how to work a C= 64 simply taught me a lot of lessons I had to unlearn later. ;)

      --
      My reality check bounced.
  228. Just start them with the basics by JoeCommodore · · Score: 1

    If the kid is interested they will start learning more.

    The best thing you can do is help them get set up in whatever language: Show them how to get the editor running, write a simple program compile (or whatever) and show them how to run it. Hand them an introductory guide (one with some type-in examples would be a good start) and let them go at it for a while. Answer questions but also keep it simple till they get the hang of it.

    If they get into it you will see the complexity level of questions jump (usually they thought of something that they want to write themselves), then you can work on getting better ideas and practices in their head.

    --
    "Enjoy what you're doing! If it becomes drudgery, you're doing it wrong!" - Jim Butterfield
  229. How about robotics? by OG · · Score: 1

    As others have noted, finding a problem that he's interested in solving is pretty key. If he's interested in games, help him find a gaming project. Something else I'd consider, however, is some kind of basic robotics project. Get him a kit that he can hook up to his computer and use a BASIC-style language to control. It sounds like he's already inclined towards "geek" projects, and this gets him both some software and hardware experience in one go, and he can see three-dimensional results of his programming.

  230. Introduce him to topcoder by Binder · · Score: 1

    Especially if he's competitive topcoder may appeal to him.
    It has alot of practice problems which are hard enough he would need to learn something, and he'll have a score as some feedback.

  231. What worked for me... by yup2000 · · Score: 1

    I had a TI-89 graphing calculator and tigcc ( tigcc.ticalc.org ). It's a great way to learn C. You can crash your calculator all day long at school (which is great debugging practice, it also provides motivation to go home and fix said bugs at night).

    Lots of kids do games, or teach their calculator how to be a little better at math ;) Of course, I'd encourage making simple games, and maybe working up to a 3D rpg :)

  232. immediate gratification by bazonic · · Score: 1

    It seems to me that the youth of our (US) society respond best to that which is instant. Instead of having him spend two hours trying to compile something that will return Hello world!, start him out with web languages, where he will be able to see the results, and modifications immediately. By learning some interface coding (HTML, JavaScript, PHP, etc) he will open doors that could lead to a number of places.
     
    He may become fascinated with web infrastructure, or databases, or routing, or security, or more complex programming. Working the web would also allow him to persue other passions - for expamle, installing and configuring an OSS CMS, then tweaking the interface for a local skateboard park or chess club or whatever. Social networking web tools might be a fun place for a kid to start hacking.
     
    The key is to keep it simple and instantly rewarding in the beginning. And what will give a kid more cred with his buddies - building an app that figures out phone charges across time zones (exercise 2, after Hello world! in my 101 class) in C++ or really pimping out his MySpace page? Had I started with C++ I would not have gone much further. But that's me. Some of y'all are crazy that way.

  233. Try with Hackerteen project by linuzer · · Score: 1

    Have a look to hackerteen project: http://www.hackerteen.com/ What's hackerteen Project: "Hackerteen is an educational project that trains teenagers to work with computer security. With an innovative and fun methodology, young people learn how to protect companies - not to break into them - while reducing time spent on computer games, MSN and MySpace."

  234. what's on teens minds by doti · · Score: 1

    I'd also be especially interested in what younger people think, in particular those who are currently in college or high school.

    Sex.
    They think about sex all the time.

    --
    factor 966971: 966971
  235. Instant Gratification by Hassman · · Score: 1

    As lame (or awesome) as this sounds, get him to do some basic web programming. I know it is mostly just markup stuff, but to do anything complicated or cool, you have to get into the code behind or JavaScript or whatever.

    The benefit is, that you instantly see what you just wrote. Sure it may be basic and not really do anything, but it is there on the screen and he can say, "I did that". After the initial learning curve, it is pretty easy to be able to churn out a blog, or a calendar / datebook, or photo repository. A simple program like that will introduce him to the basics of what programming is all about.

    Hell, it beats copying 1000 lines from a BASIC book to create a text based game. Ahh, memories.

    If he likes that stuff, it won't be a large leap to get into some of the more difficult languages like C++ or C# or Java or whatever. That's when the real fun can begin.

    --
    -Mark
    Dovie'andi se tovya sagain.
  236. Re by threeZ · · Score: 1

    i would find something that he likes, whether it be a game or something and encourage him to build something for it. for example: any online multiplayer game, try to find ways to manipulate data being sent to the sever etc. then build a client or something ( like a trainer, most "lower end" games are easy to manipulate ). this teaches alot of things at once while peaking an interest into the 'backend' of things. some people might say that's rather advanced but, would you rather risk the complexity of the challenge with something that they like or start with something they have no interest in. Quote SimHacker "PHP is a HORRIBLE first language" -> how? if you're learning the fundamentals: while loops, variables, if-then-else and the basic logic for functions, any language is good even, dare i say mIRC scripting. there's plenty of routes you could go, if you son has an online clan ( i don't believe his age was specified ), i would defiantly try to teach him php for his clans website or something. i mean, nothing is more rewarding to a kid then to have something to show for what they've done. as a programmer for 10years with a son on the way, i would try to do any/everything to build my son's confidence in himself and believe it or not, this is a very good way. you have to find something that he's interested in. you can go over a million c++ tutorials but, if they don't have a set scope for something that they are interested, there's nothing to inspire them to continue. - sean ( threeZ )

  237. Python later, Pascal first by V+for+Vendetta · · Score: 1

    Pascal was intended to be a learning language and I consider it to be quite good at it. It enforces good programming practice while at the same time it "spells out" things, which makes it easier for kids to understand. For example BEGIN/END brackets are easier to grok for kids than {}, showing the principal of code blocks better.

    1. Re:Python later, Pascal first by wed128 · · Score: 1

      I don't really know Python, but as far as pascal is concerned, as a C programmer (who learned on BASIC and dabbles in PERL) i find pascal to be too structured and make too many presumptions. for instance, there is too much type-incompatibility, and not enough of the language is transparent as far as what is actually happening in the computer itself.

      If the kid wants to learn how a computer works, i suggest even an assembler and a small embedded development kit (HC12 or similar). (full disclosure: i do embedded development professionally). if they want to learn algorithm design or mathematics, then these high level structured languages are fine.

      if i could do it all over, i would have probably started on PERL, because one can use exactly as much structure as you know how, but are not forced to learn things like Objects before achieving a basic understanding of procedural processing.

  238. Games! by tstripli · · Score: 1

    Give him a game that's written in an easy scripting language and let him play it for a while. Then show him how to modify code in the game to cheat. Hey, it's how I started...

  239. Make sure he obtains... by Talonius · · Score: 1

    ...near instant gratification for the first steps that he takes. Whether that means console programming, or working within another prebuilt environment - few folks at that age want to invest weeks and weeks of time without seeing an immediate (or near immediate) payoff.

    Once he's hooked - on the control, on the ability to do whatever HE can do - let him take on the more advanced stuff that requires an investment of time or resources.

    Finally, make sure the tools he uses and the environment he's working with are *preconfigured* for what he wants to do. Don't make him figure out what patches need to be applied, or what directories need to be in his path - make sure, again, that it's easy for him to begin.

    (I guess my advice is to treat it like a drug. Make it REAL easy to get hooked, then make him work. ;))

    --
    My reality check bounced.
  240. Simple by grikdog · · Score: 1

    Recapitulate phylogeny and do for programming what the Rennaissance did for medicine: Institutionalize open source for anyone who can afford the education, drive the charlatans (including Microsoft certification) beyond the pale, and stop wearing funny bird masks in times of pestilence, plague and peril. Train a generation of mothers that "My son, the programmer" means something good.

    --
    ``Tension, apprehension & dissension have begun!'' - Duffy Wyg&, in Alfred Bester's _The Demolished Man_
  241. Start with something that is fun like this by dman32 · · Score: 1

    How I got into programming was probably the easiest and best way for a kid to do it. It started off with my favorite PC game called Duke Nukem 3D and there was a simple map editor. Although it resembled more among the lines of autocad; there were still objects with parameters that you set but it was all relatively simple and object oriented with minor event driven programming. It definitely would be a great start because it would allow him to start in an area where he enjoys it the most; and its not strictly text base coding like most people are suggesting; Kids won't want to do that. However, finding something similar to that now a days may also be a little more difficult; I'm sure if you look around you can find something similar. Have him start creating his own games or maps that he can play in (also try maybe making a flash based game with him) those are easy and won't take long. See if further down the line his school has a technology preparation course or special computer courses that he could attend if he feels he likes it. And keep in mind he's a kid and keep it fun!

  242. DO NOT TEACH HIM CODE! by odin84gk · · Score: 1
    When I was 11, I started becoming curious about computers. My brother gave me an HTML book, and 2 days later I swore I would never become a computer programmer. EVER. A web page would be cool, but I did not have direction or a desire for a final project. It was like a book report on... html... not that interesting. (I know HTML is not the same as C++ or Ruby, but in my young mind it was)

    What started perking my interest was creating a video game mod (Specifically Battlefield Vietnam). At first it was just maps, then I wanted to insert bots, then... My interest kept growing. If it wasn't for that first HTML book I might have gotten into some of the more advanced mods, but I swore that I would never go farther than changing .config files. When I got to college and I was forced to take a programming course, I really enjoyed it. In the end I graduated with a degree in Computer Engineering (Couldn't go full software, too boring :-). If it wasn't for BF:V, I probably would have been a music major (not a joke, I was seriously considering it).

    If he wants to do something specific on the computer ("Hey dad, I want to make my own video game" or "Hey dad, do you know how to make the PC run faster?") then you can do some code. Learning code for the sole purpose of learning how to program is useless and counterproductive at this stage in life.

    The moral of the story is this: Find an end result that He wants to do. It might be as simple as Forge on Halo 3, his own OS, or even a go-kart, but it has to be his idea.

  243. is he a music fan too? by frission · · Score: 1

    if he enjoys music as well, you can do a small project (that I've been meaning to do, but never have). you make make a plug-in visualizer for your favorite music/mp3 player. from what I've seen, they can range from very simple, to very complex (open gl, etc).

  244. Re:PHP will ruin your mind by tal_mud · · Score: 1

    PHP is a HORRIBLE first language, and a horrible second, third or forth language.

    Even Forth is a horrible forth language

  245. Processing by cdkf92 · · Score: 1

    I would recommend processing: http://www.processing.org/ It's been described as "Java with training wheels" but I think its strength is that it demonstrates programming concepts in a visual way. A person can have a nifty animation up and running in no time. It's a very short hop from Processing to Java. I would also recommend ActionScript. It's finicky but it will give a newbie cool results quickly, and then they're hooked.

  246. Carrot and Stick Approach by Ranger · · Score: 1

    For every X lines of code he gets to watch Y minutes of porn. Be sure he has lots of pizza, Mountain Dew and kleenex.

    --
    "You'll get nothing, and you'll like it!"
  247. The Lure of Programming by thervey · · Score: 1

    Initially it was the idea of programming games that caught my eye back when I was in middle school/high school in the mid-late 90s. I started off making simple games in Basic which provided a great environment to learn the basic. I later graduated to C++ when programming became more of a fun puzzle/problem solving activity than just a means to create games. There are now several pseudo programming languages out there that are specifically geared towards learning programming concepts and creating games. Depending on the age of the child these may be appropriate or they may be too simple.

  248. 3d graphics and/or robotics by isdale · · Score: 1

    Most languages dont give much back quickly. You need something that will catch and hold their attention. 3D graphics and Robotics are cool to kids (and many of us geeks) and actually not that hard to break into. In fact both are used very effectively to introduce middle school and older students to programming - even high level stuff like AI (or autonomous behaviors). And the links below are Open Source!

    Check out Alice.org

    "Alice is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a teaching tool for introductory computing. It uses 3D graphics and a drag-and-drop interface to facilitate a more engaging, less frustrating first programming experience."

    Or how about Robotics?
    Myro and Institute for Robotics Education
    or its pure python predecessor Pyro Robotics

  249. Logo by xtracto · · Score: 1

    I haven't read anyone state the obvious... at least for me.

    My first contact with a computer was, fortunately, my first contact with a programming language. That is, LOGO.

    I would strongly suggest you give a look at Starlogo TNG.

    StarLogo TNG is real graphical programming in that you create programs by stacking boxes together (each box representing a different instruction like, if, then, while, etc). And the result is a 3D Turtle (yup, our beloved Logo turtle) moving in a 3D environment, which can also be modified.

    Regards.

    --
    Ubuntu is an African word meaning 'I can't configure Debian'
  250. It's never too early by technienerd · · Score: 1

    I'm 22 years old now, entering grad school in computer science and I knew I was in love with computers since I was 8 years old. I started programming at age 7 or 8, in BASIC. My mom picked up a BASIC manual, learned the language herself and taught me what she learned (out of family rivalry really because at the time I was the only kid in the family who wasn't a self-proclaimed computer expert). Since then I've been enthralled with computers and algorithms and I'm doing very well in school as a result. About a dozen people in my class also started programming well before the age 10 as well, so it's a relatively common thing. If you can do basic arithmetic and reason about complex or abstract things at that age, you can program to some degree.

  251. You might try MIT's Scratch by willutah · · Score: 1

    Since you said he is a young teenager, you might try the MIT Media Lab's Scratch project: http://scratch.mit.edu/

  252. Re:Logo by xtracto · · Score: 1

    BTW, you can look at bugmenot.com for a username and password to avoid having to register.

    --
    Ubuntu is an African word meaning 'I can't configure Debian'
  253. Robotbattle! by jadin · · Score: 1

    Might I suggest http://www.robotbattle.com/ or similar type game? You use the scripting language (very similar to C? I don't remember) in your text editor of choice to program robots to kill each other with energy missiles. It's a lot of fun and can be really addicting. It can help develop a solid interest in programming. Making your first robot and then starting up the game to watch it get slaughtered and not act as you planned is pretty interesting.

    I bet a lot of slashdotters would enjoy it actually.

  254. As a teacher, I recommend finding the hook. by databoi · · Score: 1

    I taught programming at a design school for seven years, and I tried to turn web designers into web developers, as the pay and opportunities were better. The comments that suggested finding something that the young one wants to do really are on the right track. Game programming with Flash and cool web pages with PHP/MySQL will be the easiest way to get that going. But most of all, as a parent I say enjoy the time with your child, they are so precious. Until they stop being that, of course.

  255. Sorry To Hear That!-(( by littlewink · · Score: 1
    He'll probably end up a poor code monkey all his life.

    Maybe it's time to introduce him to alcohol and social drinking?

  256. I wasn't exactly encouraged... by chrysrobyn · · Score: 1

    I think you should encourage him the same way my dad encouraged me. He left plenty of Basic books around and left me alone with the thing.

    Eventually, when I was about to become an Eagle Scout, in 1991 or so, my father told me he wanted to get me a really special gift, but didn't know what to get me. I told him I wanted something more adult than Basic; was "Fortran good for making graphics?" My father did something that was incredible at the time; we didn't have much money, but we did have a 10 year old IBM PC. He bought me Borland C++. It had a compiler, profiler, debugger, an integrated IDE, all the bells and whistles. Only I wanted to use the compiler and nothing else. I learned an incredible amount from just following the book examples. My mother laughed every time she saw me in front of the television just reading the book that had the listing of the available commands. It felt like I was reading a catalog with someone else's credit card.

    Give the boy the means and the time. Provide a few trips to the local used book store for some examples to just type in and make minor variations. In my experience, that's the best recipe to success for continued interest. Any more involvement and you'll end up with a football player or cheerleader.

    The big thing that I know nothing about current GNU compilers, which is the only thing I'd expect a kernel hacker to provide, is that I don't know about graphics libraries. Motif, GTK and the like are far too much. Just something to draw a pixel or a line is what a growing boy needs.

  257. Interactive Fiction and book suggestions by Gulthek · · Score: 1

    How about writing Interactive Fiction? Download Inform and he can go through the manual coding alongside it. It's not a traditional programming language, but the concepts are there and easily accessible. Graham's writing really shines in the manual and he explains a lot of complex programming very nicely.

    If your kid isn't so much into the writing (or the text only, which is understandable) then I'd start him off with Learn to Program.

    Although your kid is probably too old for many of the exercises and activities, but Computer Science Unplugged is a fantastic resource.

  258. Kids need multimedia by synthespian · · Score: 1

    Today's kids need and deserve the full package: multimedia.

    You should change the Unix kernel hacker hat for the Squeak Smalltalk programmer hat.

    http://www.squeak.org/
    http://squeakbyexample.org/

    --
    Main difference between the BSD license and the GPL license: one is from California and the other is from Massachusetts
  259. High Level Languages...Quick-Easy to Learn... by JSThePatriot · · Score: 1

    I would highly recommend having your child learn a high level language. One that I really enjoyed learning more on when I got started was AutoIt. Unfortunately it's only for Windows. Also web programming is a lot of fun and provides quick returns for minimal investment. If after they still are showing interest in programming, then they can then spend a bit more time and learn a few lower level languages.

  260. Re:Son? by The+Great+Pretender · · Score: 4, Funny

    If this thread can even touch on how to encourage a young teen to do anything, I'll be impressed and grateful. My current strategy is to let mine be and hope that when he screws up he doesn't die. If he can make it to the end of the adolescent years, with all limbs and senses, then he may be able to achieve something.

    --
    A positive attitude may not solve all your problems, but it will annoy enough people to make it worth the effort.
  261. POV-Ray by reikendo · · Score: 1

    I've always thought POV-Ray would be a great way to teach programming--instant visual results, and initially grasping OOP is probably easier when you're used to describing and instancing primitives with Sphere(...) and such.

  262. Lego Mindstorms + Java by dougwhitehead · · Score: 2, Insightful

    Get Lego Mindstorms and download Java for it, called leJos. That way his programs can start simple and still get real feedback.

  263. Some Thoughts by DannyO152 · · Score: 1

    Scheme or SmallTalk (using the Squeak environment). I think javascript/html has its merits for accessibility, but there's an awful lot of casting into and out of String representations, which is a big deal and a security issue. Since the programmer has to be involved with the whys and hows, it's my feeling that such domain-specific hacking, though impressive, is a distraction.

    In the course of learning languages one learns to look not for the specific implementation details (does an expression end with a line break or a semi-colon or...) but the larger concept, i.e., how does the compiler or interpreter know that an expression is complete. We walk up to a new language with expectations, for instance, that there will be a way to do basic output and maybe, we hope, a way to make the output nice looking. Then we look for what the printf is called and how is it used.

    So then, here's my real suggestion: pick a language you'd like to learn and and learn it together with your child. You'd see the language through experienced eyes and can call out things that are idiosyncratic and things that are fundamental and can demonstrate how much of the problem solving occurs before the coding starts. Plus, if you're lucky and your child is engaging with all their curiosity, you'll have to field a whole lot of "Why" questions and formulating the explanation will be recreational, in all senses of the word. I expect your explanations will be better if you, too, are navigating new seas.

  264. Good idea, I'd start with simpler language by failedlogic · · Score: 1

    Disclaimer of sorts: I studied Computer Science at university. I was turned off by programming as I found it boring (C, C++, java). The product that comes about, I always find interesting. I've moved to more overall functional and easier to learn/use language for my personal use. I won't mention langauge ... no flamewar. ;) I think getting a former programmer-in-training as opposed to a site loaded with professionals might help.

    I'd say let your son learn a language. I started with BASIC on the C64. It was fun and I was 8 yrs old at the time. If your son knows HTML, I good place to start might be PHP or Ruby. I think syntatically (as a now-nonprogrammer) its probably the easiest to learn.

    IMHO, after about a year of programming, assuming he's not completely turned off, have him do some much more complicated tasks (within "reason"). Have him do it in C or C++ (given time to learn it). I'm serious about this. If he wants to continue to post-secondary education, better to find out if he REALLY wants to do programming, or if he's doing it 'cause dad does it. You or he can save having to plunk down a couple grand (or more) for one semester or one year of tuition. My dad is a doctor. I wasn't pressured to do it either. I thought I would be really interested in it as well. I wasn't.

  265. This was designed by a professor for this purpose. by acarbs12 · · Score: 1
  266. How I cut my teeth on programming. by shypht · · Score: 1

    I'm lazy - and I really got into programming by realizing "Hey, I can write code to automate repetitive tasks". I was running a BBS in grade 7 or so, and I had a habit of frequently switching software / re-designing my BBS from the ground up and having to re-import everything. After about the 100th time doing it, and getting sick of tedious tasks such as manually re-typing the description of text files - I started to write programs to automate this for me. My first tool that gave me a 'wow' factor, was a simple thing that would embed a file_id.diz into a text file, and pull it out when I re-uploaded it into the newest incarnation of my BBS. Sure, it's not as glitzy as game programming, but stuff like that is what got me excited about writing code. So, going along that lines - is your son really into say, organizing his MP3s? what about showing him how to write a program that can read ID3 tags, and organize his MP3 file structure accordingly. (Even with ID3 tags and modern media libraries, I have a bit of an OCD habit of having a logical file structure to organize my files also) Or, show him how to make a simple RSS reader for his favorite sites / etc. I geek out over utility/automation programming - and many of them can be very simple things that you can bust out in a few hours and get instant results.

  267. Silly animations caught my eyes ... by puddles · · Score: 1

    ... I didn't have a computer at the time (1982-ish) so I read the BASIC code and tried to figure out how the program worked, what the statements did, and how the program managed to put up the animation of a burning cigarette (yes, leave it to a teenage boy to be curious about smoking, among other things).

    I'd say, find something that's likely to spark his interest and get him started with interpretive language. Instant gratification is important in early stages. I'd get him to try these:

    Bash scripting, quick and dirty, use with sed / awk to get going quickly with text-based problems (ciphers, puzzles, etc.)

    Logo for quick romp around with the turtle ... and recursion of course

    BASIC for a little bit more control

    Avoid the nitty-gritty details in the beginning. A lot of tools and practices today require a whole bunch of magic incantations at the beginning before you get to do anything fun at all ...

  268. XCode + iPodTouch/iPhone by chochos · · Score: 1

    I think a good way to introduce a teenage kid to program is a cool platform. And the coolest platform for a teenage kid might be to program something for their iPod Touch or iPhone, because they will be able to show off their work to other kids and will really open his eyes to the potential of the device they usually just carry around to listen to music and talk on the phone.
    Plus, they get to use a really cool development platform (XCode + Interface Builder) with a really nice programming language (Objective-C), learn about OOP, can do some stuff in C, there are some really good tutorials on the Apple Developer Connection site.
    Even if he doesn't end up writing an app to put up on the iTunes store, he can just play around with stuff and load it onto his iPod or iPhone. I would have loved to have something like this when I was 13; instead of just writing stuff that only I could use, with no one around to see how cool it was, I would have been able to show it to my friends.

  269. Old Teens by Ophion · · Score: 1

    Young teens need little encouragement, but old ones are notoriously stubborn.

  270. Blatant piracy by dave562 · · Score: 1

    The article asks, "What originally got you interested in programming." In my case I picked up x86 assembler so that I could crack copy protection. With regards to the son of the guy who asked the question, I think that the answer should present itself. The kid is obviously interested in computers and programming. There has to be something about programming that speaks to him. I personally hate programming. I think it is one the most tedious things in the world. I definitely enjoyed learning assembly though because to me, it represented the actual working of the computer in terms of directly manipulating what is in memory and being able to step through the lowest level of the code as it executes. That was cool for me. Actually writing a high level program doesn't interest me in the least.

  271. Simple programs to start with by flablader · · Score: 1

    Make sure he knows the basics of keyboard Input and console Output, then encourage him to write programs that do what he's currently being taught in his math classes. It sounds cheap, but I never understood a mathematical concept better than right after I wrote a program to do it for me. Bonus points if the program has to show intermediate steps!

    Language is fairly irrelevant at this stage, it's just the basic interest that has to be fostered. I started programming like this in BASIC, but I've studied a wealth of languages since then. If you can, look for a specialized math/science/computer school that he can attend (some school districts call them "magnet" programs).

    By the way, I'm a graduate of the University of Central Florida's Computer Science program and now "work" professionally as a Software Engineer.

  272. The most important thing to remember. . . by krunk7 · · Score: 1

    Is that the reason he's interested in programming is because your a programmer. I'm sure he finds the topic interesting, not saying that. But if you were an auto-mechanic, an artist, an author, it's likely he'd find that interesting as well.

    The best way to keep him interested and to foster improvement is to stay involved. Pull a good book of your shelf, tell him why you enjoyed it when you were learning, what you found useful about it. Encourage him to sit in the same room while you hack and not to hesitate to ask any questions he may have about the material, take the time to answer those questions. As he improves, work on projects with him and as soon as he's able to contribute to what your doing....work with him.

    Share your enthusiasm, talk about the challenges you had during the day with him and the solutions you found. He may not understand it all at first, but he'll listen, absorb, and gradually start picking it up. And if he loses interest, still talk with him, encourage him to seek his own interests, and emphasize that the most important thing is not *what* he seeks, but that he finds something that inspires the same passion in him that you've found in programming.

  273. My daughters asked me what I do for a living... by PRMan · · Score: 1

    I sat my daughters (10 & 8) down with me and said, "We're going to make a copy of this calculator on the computer."

    They had a lot of fun drawing the buttons, coloring them and double-clicking them to make them put their number on the screen. When it got to the tedium of acutally handling the stack and making the operations work, they were a little less interested. But when they saw it working, they had a really good understanding of what it is that I do.

    Will they be any good at programming or even want to do it? I don't know, and frankly, I don't care. I just want them to find a career doing something that they love, finding a good husband and having a nice family (I'm selfish, I want grandchildren, sue me).

    --
    Peter predicted that you would "deliberately forget" creation 2000 years ago...
  274. Don't teach, enable him to Do by mctanis · · Score: 1

    Attempting to show him how to program, just for the sake of learning to program won't work. He'll get bored.

    What he needs is something that he can 'DO' that requires him to program, then he will be motivated to learn the programming end of it.

    My suggestions include:
    * Game programming - You can use something like Garage Games' game builder suite. It's relatively inexpensive and it works on Linux if thats the way you want him to go, or you can use their XNA version and you son can make his own games for an XBOX 360.

    * LEGOs - Get him a LEGO NXT set and help fund experiments into building robots. The NXT has it's own visual language, but there's also C, Java, C#, python, LUA and other alternative development environments for it.

    * For web programming, look at his other hobbies and see if there's some kind of website that he could create to support or promote that hobby that he could use a LAMP system to develop

  275. ALICE, C, PHP by cyberneurology · · Score: 1

    Carnegie Mellon has an interesting free project called Alice ( http://www.alice.org/ ) that is described as a "scripting and prototyping environment program for 3D object behavior." It is cross-platform and seems to be very easy to learn.

    Getting slightly more adventurous, I'd suggest PHP, HTML, and CSS. They're fun, relatively straightforward, and more or less forgiving, while still being pretty powerful.

    After that, the multitude of desktop programming languages (Java, C, etc.) might be a logical next step.

    Being a C programmer, I'd naturally advise against Ruby, Python, etc., but in all seriousness, since your son is a beginning programmer, the nuances and reasons for the existence of those languages will be lost on him. Sure, they may be easy to learn and use, but if you want him to grow up with a natural love of *NIX, the "C and Perl" route is likely the best eventual course.

    As far as textual material on the topics, Google is by far the best resource. I've taught myself much of what I know, and I've found that, while O'Reilly books make great references and SAMS books make great tutorials, nothing beats a good search engine and the knowledge (and sometimes outright stupidity) of the internet community.

  276. Take the utilitarian approach by xouumalperxe · · Score: 1

    Before you can get creative and derive actual pleasure from programming, you first need to be able to do more day-to-day stuff. "Hello world" is great to teach someone what the basic structure of things is like, but that sort of direction gets completely uninteresting within a couple of hours if you're not already academically inclined towards the subject at hand.

    My suggestion is to teach him to Get Things Done. Like you said, people take computers to mean "point and click" today, so you first have to get rid of the mentality that what is superficially easy is, in fact, the easiest way to do things.

    So start with the shell, show him how freaking powerful shell scripts are. Start with the basics, like "mv *.mp3 /to/some/place" rather than having to sort the files by type, select the mp3 files by hand, drag somewhere else. That shows him some basic pattern matching. Want to find out which of a dozen files contains a specific phrase? Show him the following snipet:
    for $file in *; do echo === $file ===; grep file "phrase goes here";done; (check for errors, haven't used this stuff in a while and don't have a proper shell handy). Hooray for loops!

    Once you have that sort of thing going, give him a "real" programming language. I'd say a scripting language is best. That'll steer him towards good algorithms over stupid "one less instruction" optimizations. Later on, if/when he starts showing some interest in the behind-the-scenes stuff, give him C.

    At the point in time when you start showing him a "real" language, give him real problems. Does he like Monopoly? Everybody loves park avenue, or whatever the street immediately before "go" is called, because it's so freaking huge and expensive and stuff. But is it really *that* good? Show him how to use a random generator to simulate like ten thousand games with 500 rounds each, and aggregate which squares are the likeliest to land on. (IIRC, the best set is the orange, best odds*price value). Next step up, add some more complicated logics to the process. I heard that tennis essentially works as a high-precision instrument, where small differences in average odds to win a single point translates into very high odds of winning a match. So you can adapt your monopoly simulator for a tennis sim and check if that's true. That'll also teach him the value of code reuse, in particular the importance of writing easy to manage code.

    At this point, just plop some documentation on top of him and let him hack away! Show interest, let him know your opinion on how it's looking, share your expertise if he asks for it.

    (Depending on how visually-oriented he is, one thing that might also work is having him learn POV-Ray. Depending on how much *you* are into that sort of thing as well, and provided you haven't played with POV yourself, learning it together would probably be great fun)

  277. Knowing how to learn by jmdaught · · Score: 1

    It seems to me that the best way for you to help him would be helping him learn how to learn in the programming space. When he hits a problem, help him learn how to search for more information rather than giving him the answer. It might also be worthwhile for you to set up the development environment for whatever it is he wants to build. That way he can jump right in to the code.

  278. curiosity by nategoose · · Score: 1

    His curiosity is the most important thing. He's your son and likely to learn similarly to the way you have, but it seems like you are both trying to make him you and encourage him peruse his own interests at the same time. Be there for him to answer his questions, loan him books, and set up development environments if he needs it. It's just as likely that he'll want to learn about what you are interested in as it is that he will end up learning about stuff you know very little about, so don't feel bad when suddenly he knows more about something than you do. As far as encouraging him, just ask him how he might solve a certain problem. Brain storm with him, even if it's not that difficult of a problem for you. Then occasionally sit down and write a test program or a helper program with him based on the brain storming. I'd avoid Big O problems directly for a while though. Let him get comfortable first. Also, C for Dummies was great to me, but it's slightly Dos/Windows biased, but I've moved on from that now.

  279. Re:Son? by TheGreatOrangePeel · · Score: 1

    If he can make it to the end of the adolescent years, with all limbs and senses, then he may be able to achieve something.

    ...declines obvious comments as to Stephen Hawking's contributions to science...

  280. Re:PHP will ruin your mind by cyberneurology · · Score: 1

    I find it interesting that many of the complaints listed here against PHP are not so much against PHP as they are against the various extensions people have written to PHP. I will admit that I much prefer PHP4 to PHP5, and the additions that PHP6 will include make me want to vomit.

    Many of the features in the first list are descended more or less directly from Perl. Others of the features are complaints against PEAR, which I don't consider to be a part of PHP. One can use PHP without using PEAR and I do so all the time. I also refuse to use Smarty, as it is a horrific mess of PHP, HTML, and bloat.

  281. Re:Son? by ScrewMaster · · Score: 1

    If this thread can even touch on how to encourage a young teen to do anything, I'll be impressed and grateful.

    Decide what it is you want him to do, then put a gun to the little bastard's head and make him.

    --
    The higher the technology, the sharper that two-edged sword.
  282. Coming from a 20 year old. by gubers33 · · Score: 1

    I'm a 20 year old IT student, I'm also an intern and have a job offer already. I agree with many of the people who suggested Python, that is how I got my feet wet in programing, it is pretty easy to pick up and you can find a lot of small programs with walk-throughs online. Mainly the best way to learn is to find programs with some basic instructions and to learn by doing. As for the people who suggested C++, I wouldn't recommend starting here, I took C++ classes, I like it I see the functionality of it, but it isn't one of my favorite languages to program. If you want to get someone hooked on programing give him a Java book. Is about just as easy to learn as C++ and I think it is more fun to write. The various Java games you can write get you hooked. If you want him to get hooked just find him some fun program examples and give him the tools and help him if he asks.

    --
    Just because you are wrong and I called you out on it doesn't mean I am a Troll.
  283. Don't Worry, It's Easy by daveslab · · Score: 1

    Hi,

    So, I was a studying a science in college up until a month ago when I graduated. Mid-way through college, actual computer science started to interest me, as opposed to dinky Matlab simulations I would write for homework. So, I know what can help your son out.

    There is a great, free, online book that I always go back to. It's called "How to Think Like a Computer Scientist." It covers all the basics and gives you a solid theoretical as well as practical framework to learn programming. I would reccommend the Python version to you, as that is the one I learned from.

    Also, I taught a class to my fellow students at college extracurricularly as well as TA'd the intro computer science course (though I had not taken it :) ), so if you have questions, I would be happy to answer them. Just message me.

  284. How I started back in 1979 ... by Anonymous Coward · · Score: 1, Interesting

    I had open access to an apple ]{ at school about 2 hours a week. The others did not know the computer existed (kind of).

    So I learned basic from the documentation. It was rewarding to learn to master it with no outside help.

    I programmed games (pacman, tennis, snake) all with less than 200 lines of basic code.

    I programmed some math programs to plot functions

    And then I programmed my own drawing code to generate bitmap images.

    All this was great for my self esteem.

    Now we are in the year 2008, so here is what I would suggest:

    Coach him just a little bit, point him to the right tools, then let him learn by himself. Just congratulate him on the progress he makes.

    One thing of course is to point him to something modern enough. I would suggest java inside Eclipse (part of linux distributions.

    He can start by using just one object and not use anything object oriented, then he ca nlearn object oriented programming, graphics, network, etc ...
    There are lots of java one page samples ...

    Have fun,

    Georges

  285. Re:Logo by dhasenan · · Score: 1

    This is for a teenager. Starlogo TNG looks like it's for eight-year-olds. Even if it's appropriate for an older audience, it doesn't look like it at first glance, so it's not appropriate.

    I'd start off with something that gives a GUI designer. Get a GUI, then make it react in simple ways. It's pretty easy to get something that looks good using Gtk#, though maybe a dynamic language will be easier to work with at first.

  286. Tell him ... by tr9sh · · Score: 1

    ... that you get the girls with leet assembly skills!

  287. If it ain't fun, don't do it by fortyrod · · Score: 1

    Good question, I have two sons, currently 12 and 17, and am going through the same process. Here are some of my experiences.

    We went through Lego Mindstorms a couple of years back and it was very helpful. Not "really" programming, I guess, but great fun and introduces some fairly sophisticated parallel event handling concepts without even trying. I mean, it's a robot, a bunch of stuff HAS to work in parallel, right? The kids, as usual, think it's obvious and go about their business of having fun:

    Adult: "Wow! Nice LabView setup you've got there!"
    Kid: "Can I have my toy back, please?"

    So, first the 12yr-old. And the shameful parenting revelation part. At one point I paid him $10/chapter to work through "Java for Dummies", which he did with much delight. The main difficulty was keeping him from taking on the immediate cloning of WoW before actually understanding variables. He also did some of the C and C++ for Dummies books at other times, so yeah, he knows what a pointer is. So much for youthful innocence.

    Not much happened after that, till he discovered the Warcraft level builder or whatever they call it. Now he's lecturing me on IF statements at the dinner table. Time to let nature take its course, I guess.

    The 17yr-old has done everything from ARM assembler to PHP and Flash at this point. He has done interning at a couple of startups and absolutely gets the programming thing, though certainly with that occasional, and very annoying "I know everything even though I'm a clueless n00b" aura that teens seem to own.

    This summer, he had a very manual, outdoors, sweat-all-day-in-the-heat kind of job. That gig ran out so now he is trying to land a job at an ice cream shop where you have to sing and dance if a customer gives you a nice tip. I think it's a great idea. Kind of a good balance too, if you think about it!

    I don't know if either of my boys will ever use their programing skills in a professional capacity. I DO know that they consider programming to be one of many valuable life skills, and will never be taken aback when confronted with any C-like programming language.

    However, no APL, Forth, or beer until they're 21! At least in my state. I hear tell the Forth age is lower in California ;)

  288. Be patient by q-the-impaler · · Score: 1

    My Dad was into programming and I was into games. He tried a few times to get me into programming, but I just wasn't focused enough yet. He also introduced me to many scientific studies and side projects ranging from electrostatics, water purifying, model rocketry and solar power. This was back in the late 80s.

    Today I'm into all of that stuff and am a senior developer and software architect as a profession, but I'm sure I seemed less than enthusiastic at the time. He was fairly patient with me and is surprised how much I still remember.

    So, remember, you are doing the right thing, but you may not get immediate results.

    --
    Sierra Tango Foxtrot Uniform
  289. Student-Centered Learning, FOR THE WIN by Little+Brother · · Score: 1

    The kid, from what I read is already showing interest, yet most posts I've seen here are about how to get the kid interested. What the submitter was asking is how to teach and possibly WHAT to teach.

    I am a substitute teacher, and am slowly working towards my teacher license. The most important thing I can tell you, for teaching one-on-one is to find out how the kid learns.

    Everybody learns best in different ways. If your son learns best by reading books and going with it, you are lucky, your job consists of buying the right books and letting him go at it. If he learns best by watching, you need to do some simple programming yourself, with EXTRA comments, then letting him tweak the source code. If he learns by doing, walk him through the steps of creating a program to do a simple but useful (I use the word loosely) task. (Converting metric to imperial or putting words into pig-latin make good starting projects.)

    Find out how visual vrs conceptual he is. If he enjoys the visual start with a visual IDE. Sadly, I do not know of anything in *nix that is better for this than Windows-only visual studio. If he is more of a mix, go for console-based graphics programming, which requires more conceptual awareness, but still hits the visual areas as well. If he is a pure conceptual person, go for a pure functional console based start.

    What language you use is fundamentally unimportant. Some may be slightly better than others, but he will use what he learns, then decide he dislikes that language and move on to something else. We all do.

    Now, so far as finding out how he learns best, find out what subjects in school he likes most, and which ones he does best in.

    If he loves math, and does well in it, you have a good case for going with abstract instruction. Explain the concepts of functional decompisition, object oriented programming, flow-charts etc.

    If he is an English/Language person, start with the syntax of the language, or better yet, pseudocode. Make projects that manipulate strings, and focus on the language, instead of programming in general.

    If he is an art person, start with graphical manipulation. Something simple, but fun. Fractals are good here.

    If he is an layout/design/yearbook person, I cannot recomend anything better than Visual Studio as it will allow him to START with the layout, then do the work after-wards.

    If he is a science person, dig deeper, does he prefer just knowing scientific "facts" or does he like the quest for empirical experimentation that SHOULD be the underpinning of science. If the former, focus on code snippets that perform specific tasks. I would highly recomend an OO language. If he prefers the experimental aspects, he will actualy probably be more intrested in a lower level language. You might even start with electronics theory, then expand to assembly.

    If he is a music student, I have no clue, but you might want to consider things that deal with timing loops or counters.

    If he is a Gym-jock.. erm uh, hmm.

    Whatever the case, WATCH HIM LEARN. Find out where he is learning fast, and where he is learning slow. Make sure you keep adding more where he is learning fast, but don't cut the slow parts. Just don't add more to the areas he is doing slow in until he masters the previous step. You may well end up with a kid who knows esoteric compiler options before he understands bubble-sort, but he will be constantly learning SOMETHING. He will keep the interest he is already showing. Keep him challenged, without making it hard. That is the perfect level for teaching.

    Do not focus on the language. Do not focus on the program. Do not focus on the computer. Focus on your son. Everything else doesn't matter.

    --

    Little Brother, watching the watchers

  290. At this age, there is only one motivation... by lord_mike · · Score: 1

    ...to write games... after all, what else is there to do with computers? Game programming is how the commodore 64 generation got into computers, and it is still a powerful draw for game addicted kids.

    Try this book to start:

    http://www.amazon.com/Game-Makers-Apprentice-Development-Technology/dp/1590596153

    There isn't any "programming" until the later chapters, but my 12 year old nephew loves the book! It gently guides them into the whole aspect of programming, which is great for those who are experienced using computers, but no.t much else (i.e. most of young America). After finishing this book, there are other books that can guide him into more advanced game programming.

  291. Web Programming by shaitand · · Score: 1

    I would start with web programming. Most agree that html is not a programming language but it contains many of the same elements.

    There are lots of 'languages' to learn in the web world and they all work together. Hit HTML first, your child will be producing results that can be seen within 5 minutes. Next would come CSS, then maybe javascript. After that you could throw in PHP or Perl.

    Web browsers represent a great graphical interface for cross platform compatibility. Every language I just mentioned is cross-platform compatible. More importantly, they are all technologies that teach programming principles and fundementals and yet provide quick rewards that keep you coming back. Of course during this time have him use something like Ubuntu.

    Only then would I bring him back to system level programming. By then he will have a love of building and designing things and will appreciate the classic architecture used by those who built *nix. Time to learn C and C++. After mastering the basics of those languages I would recommend something like Linux From Scratch to give a solid system level understanding. Let him code on *nix type stuff for awhile before throwing him to the wolves with assembly.

    That, or you could give him the idiots guide to vb.net.

  292. See what he likes about *Nix and run with that by mediis · · Score: 1

    There must be a reason why your son wants to start learning about *Nix. Find out what that is, and explore those options. Believe or not my impetus for computers started with scripting. Before then I just liked to play games. I had a computer job doing operations crap, nothing big. I would do some cool things with the work-flow and I used Access to manipulate the data in the Oracle DB but nothing really stood out for me until I started to learn how to script. Once I started to write scripts, I learned how to build, monitor and maintain things at a level I had never imagined. Call it "geek power", I could control a limited universe and I really liked it! That pretty much drove my career into Unix Administration, because you couldn't script on an NT box. I loved playing on computers, creating little programs that helped me do my job. There is a great feeling of accomplishment when someone asks you to do something, expects it to take all day, and you finish it in about 5 minutes. This still drives me in wanting to learn. Right now it's Ruby so I can do Rails. As time goes on, other things will pop up that will drive your son's career in directions you never thought.... in directions he can not even imagine. If I did what my father wanted me to do, I would be an unemployed Novel Netware Administrator.

  293. Re:Son? by rapierian · · Score: 2, Informative

    Along those lines I would point out that Smalltalk was designed to be easy for children as well, so you might want to take a look at http://www.squeak.org/ It's never too early to pick up good programming habits.

  294. Re:PHP will ruin your mind by SimHacker · · Score: 1

    For all the complaints about various PHP extensions, there are also many complaints about the PHP language design and implementation itself.

    Take, for example, magic_quotes_gpc. That is the stupidest flaw ever, which should have never been in any rationally designed language in the first place, and it makes programming in PHP a LOT more obnoxious and error prone.

    Don't blame Perl for PHP's mistakes. It was idiotic of the PHP designers to foolishly ape the mistakes of Perl (and later the mistakes of Java, when PHP5 tried to express PHP's dynamic interpreted language's OOP system in the SYNTAX of a Java's static complied language OOP system, resulting in a horrible impedance mismatch, and many subtle inconsistencies and gotchas). That is called "Cargo Cult Programming Language Design".

    The REASON that most of the code in PEAR is crap, is because PHP encourages and supports crappy programming, which is precisely WHY it should not be taught as a first programming language.

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
  295. KidBasic works fine by Charles+Roth · · Score: 1

    See David Brin's article "Why Johnny Can't Code" at http://www.salon.com/tech/feature/2006/09/14/basic/index.html Then see BASIC-256, nee KidBasic. Available from http://thedance.net/kidbasic. I taught 8 9-year-old-boys elementary programming in 3 one-hour sessions, and they ate it up.

  296. Try finding a book with source code of BASIC games by HycoWhit · · Score: 1

    Way, way back in the day--my dad came home with a TRS-80 Model 1 and a book filled with the source code to a bunch of simple games; Connect Four, Tick Tack Toe, Moon Lander, and I think big game in the book was Lemonade Stand.

    Anyhow I sat down and start punching in the games, line by line. When I would finish there would be a myriad of typos to fix.

    Little did I know I was coding and debugging. About the fourth program I typed, things started to dawn on me. IF THEN, FOR NEXT, GOTO, etc. all started to make sense.

    It wasn't long before I was the one heading to Radio Shack looking for new books. Figured out PEEKs and POKEs next, and before you know it I had my own original game.

    At fifteen I was working on mini's programming RPG3. By sixteen the IBM PC came out I was one of the youngest hires at IBM's Yorktown Research Center.

    Of course the flip side is by 26/27 I was burnt out on coding... Hey but at least my career path was secure!

  297. Re:Lua and Python will free your mind by SimHacker · · Score: 1

    There are many practical, clean, simple and easy to learn programming languages, much better than PHP, that are great to learn as a first programming language.

    Learning Lua will enable you to write your own World of Warcraft mods, and increase your chances of writing your own game or getting a job in the game industry, as well as enabling you to script all kinds of applications like Adobe Lightroom and WireShark. Lua is an extremely well designed and implemented, efficient and powerful programming language, which will open your mind in the same way Lisp does, instead of corrupting it like PHP and BASIC.

    And of course Python is also extremely useful to learn as a first language, for all the same reasons as Lua, and also the fact that it has a huge library of mature, solid, powerful modules (unlike PHP's PEAR, a collection of buggy, poorly though out modules, hacked together by ametuers).

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
  298. Because of bragging rights, remember? :P by Moraelin · · Score: 1

    Why not? "Game" isn't synonymous with "First person shooter". An intelligent teenager can learn enough to make games better than half the stuff on Miniclip in less than 6 months.

    Because you want to give the guy some bragging rights (to keep him motivated) and with as little effort as possible (so he doesn't go bored before seeing any results.)

    Sure, if you're already a decent programmer and have at least some minimal graphics skills, by all means, go ahead and start a 6 months project. But if you want to motivate a 12 year old, 6 months before seeing a result is an eternity. It's 1/20 of his entire life so far, or even more if you discount the first years from which he has no memories. It's akin to starting a 2 year project at 40. It may work if it's already on the domain of your hobby, but not as a teaser to see if you like an entirely new domain.

    (I don't know if perception really scales linearly that way, but some studies _do_ show that children perceive time as flowing a lot slower than adults perceive the same interval.)

    If you want to get someone's attention, fast, you'll want to start with something like, "see, you click here and here, and type a bit here, and... taadaa... our automated patrolls in X2 The Threat will buy and use missiles. And, hmm, you know, maybe we could make them call the nearest destroyer to jump in the sector if they run into pirates." Stuff which you can finish in half an hour and upload on some mods site, and actually see a couple of guys saying, "thanks, that's just what I needed."

    Heck, probably the smallest mod I've seen that apparently made a bunch of people happy, was IIRC a one line change in the Creatures 3 script. It's a special case, but it shows how little effort may be needed in some cases and still end up with something useful and a little bragging rights. That's the kind of thing you'll want, to get someone hooked.

    IMHO.

    --
    A polar bear is a cartesian bear after a coordinate transform.
    1. Re:Because of bragging rights, remember? :P by FingerSoup · · Score: 1

      Start them programming simple games... You may forget, but learning how to read code and trace it out, even in a mod for a game, can be a chore, and would intimidate the heck out of many teenagers. Choosing a simple language, with some simple graphics commands built in (BASIC, Turing, whatever), and provide some simple examples of how basic data structures work (If/then/else, Loops) would allow them to learn code at their own rate. having commands like drawBox(), drawLine() and drawCircle() to make graphics easy, speeds up the instant gratification you seek.

    2. Re:Because of bragging rights, remember? :P by pjt33 · · Score: 1

      I should perhaps have been clearer. I didn't mean that you should start him on a 6-month project. Rather I was arguing against the view that games nowadays are so complex that there's no point trying to write one.

      I'm not sure that mods are the best way to start programming either. That one-line change you talk about probably required understanding hundreds of lines of someone else's code.

  299. Re:PHP will ruin your mind by Spy+der+Mann · · Score: 1

    No, PHP is *NOT* a horrible language. It lacks some important object-oriented features (at least PHP 4) and allows horrible programming - which is very different.

    Want a horrible language? Try Foxpro. It's limited, proprietary, ambiguous regarding variables and database fields... ugh.

    But as a learning programming, I wouldn't recommend PHP either. There aren't many things that you can do in PHP other than web portals.

  300. my 2 cents by seededfury · · Score: 1

    i always thought the best way to encourage anyone was to discourage them.... Sex is fun and great but YOU are not allowed to do this. NO No No...

    That's how it all got started for me anyway. I built my empire because someone told me I wasn't allowed to.

  301. Writing a program that people will use by PeterJFraser · · Score: 1

    The BSD's with their anti-GNU bias are missing a whole series of simple tools (i.e stunnel ).
    If someone writes up BSD licensed software that is well written I am sure that their software
    would be adopted and shipped. Nothing give more joy of programming that have others using
    your work. Programming is a complex process the trick is to find simple but useful tasks
    to start with.

  302. Have them learn how to make games. by triceice · · Score: 1

    http://www.alice.org/ Check this website for all the tools to get them started programming.

  303. Re:Son? by Bloodoflethe · · Score: 1

    Me - I think I could only handle one relationship - otherwise I don't feel I would do justice to the other person. I don't want to just "keep her happy and feeling loved" I want her to be the most important person in my life. I worked hard on making sure she was the best for me, I'll be damned if I show her that she isn't.

    Yeah, I know, totally OT, just struck a chord with me.

    --
    "Little is much when little you need."
  304. Videogames! by Spy+der+Mann · · Score: 1

    I remember when I was had a Commodore 64. My dad used to buy the Compute! and RUN magazines - which included some games source code for you to type (included was the Automatic Proofreader (TM) to make sure you typed the lines correctly). That's how I learned programming.

    WHy don't you get your kid a C++ / IDE combo (like Dev-C++, Codeblocks, or if you're on linux, kdevelop. Personally I prefer Codeblocks) and install the SDL library. Then buy him a game programming book (preferredly with included CD).

    Start with simple things before the games: Loops, if/whiles, and then move to the graphics parts and reading joystick input. Then let him get curious with the book and game examples provided.

    If that's too complicated, why not getting a copy of Adobe Flash and let your kid learn to write flash games. Sprite programming is a piece of cake in Flash.

  305. Simple by DaitanGio · · Score: 1

    If you learn programming:
    + You would be able to dominate the world (see wargame)
    + You will have a lot Money. A lot of money. Do you know Bill Gates?
    Cons:
    + A lot of Shame on you.
    Do you know windooze vista?

    --
    -- Giovanni Daitan Giorgi http://gioorgi.com http://www.siforge.org
  306. Hardware and software by neuromancer2701 · · Score: 1

    I would go with python was well it is really easy to mess around with and has pretty good documentation online.

    One cool thing that encourages even me to learn new aspects of a language is combine it with other things you enjoy. I did that with learning about xml and python so I could parse the World of Warcraft armory. http://jerdking.blogspot.com/

    If he enjoys working with his hands and likes robotics. I would suggest the http://www.arduino.cc/ It is a little standardized open source hardware platform that has a neat IDE and uses a modified C++ language. I think it is cool to show kids that programming can cause real world actions not just something on your PC screen(not that there is anything wrong with that)

    --
    "If you like Battlestar Galactica, you're probably a huge nerd." -Stephen Colbert
  307. every (typical) teen wants to make video games... by blakieto · · Score: 1

    I suggest you turn him on to the NeHe OpenGL tutorials. He'll get a series of tutorials on how to create basic opengl graphics, animation and the supporting infrastructure logic for making games. That is a great doorway to everything computer science and an endless ladder of geekdom. (Worked for me... [game making that is, I started long before NeHe was around.])

  308. Re:Son? by ShieldW0lf · · Score: 1

    We tried that one too, and LOGO as well. I liked Squeak better actually, but my daughter preferred Scratch. Incidentally, Scratch runs well under WINE.

    --
    -1 Uncomfortable Truth
  309. Re:PHP will ruin your mind by Firehed · · Score: 1

    As a PHP programmer, I completely agree. I find it very flexible to do what I need, but I also know what to avoid and what I have to undo (like magic_quotes_gpc). But at the end of the day, if you make it easy for newbies to fire off SQL statements, it's inevitable that plenty of them don't know a damn thing about sanitizing user input. Various languages have done various things to attempt to deal with that, obviously with magic quotes being on the wrong end of the "monumental fuckups" scale.

    It's also the reason I simply don't trust anyone else's code. There are so many newbies doing stupid things that I've no idea where it ended up or whether it could be present in code snippets other people have produced. More work for me, but I'd rather write my own forum knowing that there are no SQL injection holes, login security flaws, and all that junk than use someone else's.

    I use it all the time and love it for what it is. But there's a reason I've always got a half-dozen tabs open on php.net when developing. Is it implode($glue, $pieces) or implode($pieces, $glue)? Oh, wait, either works... but "For consistency with explode(), however, it may be less confusing to use the documented order of arguments". Yes, I agree - that's absolutely retarded. Just like how half the functions are called as function_name() and the other half are functionname(), and on odd occasion, '2' is used instead of 'to' (nl2br, etc).

    Do I wish that PHP6 would simply kill all existing naming and syntax inconsistencies (as well as other stupidities like magic quotes) and stick with one thing? Yes. Will they? For a couple things, but by and large, no.

    However, you really can't beat its documentation and the number of guiding examples. Combine that with the number of prebuilt apps out there make it very easy to pick up. But of course, that also makes it very easy to pick up on bad practices - so I, too, would never recommend it as a first language.

    --
    How are sites slashdotted when nobody reads TFAs?
  310. Programming Your Kid by Keynan · · Score: 1

    Before starting you project please note the below system requirements:
    The Child must have one of the below libraries installed...
    1. Wants to make video games
    2. Wants to understand the magic box
    3. Likes Problem Solving

    NOTE: option 1 is precursive only. Options 2 or 3 must develop if Project is to succeed.

    Several tutorials exist (see above) describing methods of working with option 1 and will not be discussed here.

    To satisfy option 2: C is the best option. mmmm... pointers....

    To satisfy option 3: import to project Ruby Quiz a library providing several logic challenges to challenge the mind (Good for you too).

    To satisfy option 2 & 3 simultaneously: Work in C++ and implement data sets and algorithms. (I personally LOVED the challenge of AVL Trees and the Quick Sort.
    and implement

    I agree Ruby or Python are more fun to program in. but only after using Java/C/C++ so that they can appreciate how easy every thing becomes

  311. Re:Logo by neomunk · · Score: 1

    I prefer NetLogo myself, but that's because I like to whip up little simple simulations of various systems, and netlogo excels at exactly that.

  312. Re:Son? by mweather · · Score: 2, Funny

    I fail to see how procreation without mean will make bugs squish themselves.

  313. Because We Can by llamaspit · · Score: 1

    I started programming later than most, and it was because my music career was not going anywhere, and I was tired of being broke. The reason I chose programming is very much the same reason I chose music: because not a lot of people could do it.

    That's right, it was an ego thing. And I think that a lot of people get into programming, or other sciences, because they are geeks and want to be able to do something "special". Vain, I know, but everyone wants their own skill that they are good at and to be able to impress people.

    There is a downside to this, though. I suspect that many of the people who do it for ego purposes are the same to get into unethical hacking. "Because they can". The rush is addictive, and can lead to trouble. I was fortunate in that respect because I was older and wiser than many when they first start programming.

    But with proper guidance, and if you've taught your kid the difference between right and wrong, stroking the ego goes a long way. And if he or she is an "outcast" it can really give them the boost they need in self esteem.

  314. Experiment with 'real-world' apps by migilligan · · Score: 1

    I learned best by buying books and looking online. The other thing that really helps me is to try developing an actual app (or game). I HATE when you're in classes and they have you make these programs that really do nothing. Give him a practical idea to work towards and see if he can achieve it. Say for example you want him to write a [web] app that catalogs your music collection (just an example). I have played with many different languages so far and am still trying to find my "favorite." I'm a junior in college and know quite a bit I think for my age.

  315. Ball Buster by Spatial · · Score: 1
  316. show him how to do something he cares about by notorious+ninja · · Score: 1

    I started to program because I thought designing websites was sooo cool as a preteen and used to work on my blog layout so it would be better than my friend's :/ So I started doing the template in HTML and progressed to javascript and then PHP and went on from there. Regardless, he needs to find something he really wants to do, whether it's to develop a mod for a game he likes to play or build a game, a website, etc. You can't make someone want to do something :) Like maybe you can help him learn how to make a character that looks like him in his favorite game or some kind of online quiz he can send to his friends or something fun without making him wade through all the boring stuff first. Teaching the basics first is nice but not interesting, so teach him what he needs to know and if he likes it he can always pick it up through other things.

  317. my CS Prof's motto by Goeland86 · · Score: 1

    While some people suggest you throw him in one language or another, I don't think that there's a benefit to it. A language is essentially just a syntax, a tool for him to communicate instructions to a computer. What you want him to do is, and I shamelessly quote my CS prof. Jeff Ely on this one, "You need to learn problem solving before anything else."

    Jeff taught us that by using a very simplified C language, teaching only if statements and while loops, and throwing simple problems at us, that could be solved using those. Later he introduces arrays, but in CS1, that's all we ever used. His toolkit used only doubles, strings and character variables. And he got us going with that. Another statement I like from him is "The power is in the mind."

    Do NOT, I repeat, do *NOT* start with syntax. It's boring and completely useless as far as educational purpose goes. It's not what computer science is about. Give him a problem like "write a program that, from a number of pennies, can tell me how many coins of each type I have", and let him figure out the language he wants. The fact that he's researching it will teach him TONS more than anything you could throw on his desk, because, and I speak from being in his shoes not so long ago, he's a teenager. He won't want to do everything you say, so dropping a Python, or C or other language book on his desk is only going to frustrate him. Give him a problem, point him to the appropriate section in the library, and step back until he comes at you with questions.
    Just my $0.02 of information on the matter, as a fresh CS grad.

    --
    ---- I am certain of only one thing : I know nothing else.
  318. The Wisdom of the sands by bugs2squash · · Score: 1

    I thought Antoine de Saint-Exupery's books were a little wierd, but the reason my son learned to read was not to read for its own sake, but to get to the fantastic riches that lay within books.

    If you can forget about the mechanics of programming and find some project that will engage your son and, co-incidentally, need programming to make it come about. I think you will have an eager programmer.

    I suggest something cool and physical, like a rocket altimeter, or an electic field sensitive music synthesizer, or a camera trigger to photograph a glass jar smashing or a light display, or something that balances weirdly with one of those solid state gyroscopes. Something the Mythbusters would be proud to do and your son will enjoy.

    And then find a suitable embedded system to implement them in. Perhaps from silabs.com. They have some good cheap systems that will easily sequence lights or measure bubbling potion fluid levels and are inexpensive enough to blow up from time to time ($20 or so).

    --
    Nullius in verba
  319. Heck, if he plays WoW the lua by Tran · · Score: 2, Interesting

    is perfect - immediate gratification as well as using APIs.

  320. Good heavens no. by LWATCDR · · Score: 1

    "4) On the topic of programmer speak show him Slashdot or Digg or something like that. Programmers have started there own culture in these places that he might be interested in seeing."
    I would say that percentage wise there are very few programmers on here. Way too many wanabes that think they know everything.

    You are better off on programing mailing lists or language forums like the Java forum.
    Too bad there isn't a mentors forum anywhere. I would love a forum where nobody ever said RTFM.

    --
    See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    1. Re:Good heavens no. by AmaDaden · · Score: 1

      You have a good point but I was thinking of it more as a culture thing then a learning to program thing. Programmers tend to be interested in select things. Video games, general technology, science, etc. Slashdot and Digg are not very good for me to learn how to program but they both have introduced me to things that I was interested in because I am a programmer. I learned about Firefox, SCO, Python, and many many other things from Slashdot and Digg. It will not teach him how to program but it will teach him some topics that come up among programmers. For about my first year of reading Slashdot there was at least one story a day that contained a term I did not know.

  321. Lego Mindstorms NXT FTW!!! by soapdog · · Score: 1

    I think the best way is by using a robotics kit such as LEGO Mindstorms. If the kid is son of a geek then he probably already know LEGO blocks. Now, IMHO, new coders need to see physical results of their labor to be hooked, if they code a little line following robot and the thing comes alive, BOOM, they will be hooked. They will move quickly from LABView thingy to NQC and soon they will be very good coders. When we were young and all we had was a text interface with the computer, it was way faster to learn and code useful stuff. These days of ubiquitous network, fancy 3D graphics and bad operating systems, it's no wonder kids don't code anymore, look at the learning curve!!!! now, if you make coding a small thing again, with a pleasant learning curve and results they can show to people in awe such as little robots, you have a recipe for success. my 2 cents

    --
    -- Por mais que eu ande no vale das trevas e da morte, meu PowerMac G4 Não Travará!!!
  322. Get the sampler pack! by AnomaliesAndrew · · Score: 1

    This is roughly how I went through learning to program starting at around the age of 14...

    Start with HTML... it's very forgiving and is pretty straight forward. It's not exactly a "programming" language since it lacks logic among other things, but it's a good introduction and, lets face it, it's probably never going away.

    Then some basic C programming for shell would be good... get him to build a basic text-based game... or some ASCII stuff. Play around with ANSI colors, get some exposure to how the language interacts with the OS and is presented to the user... You could also get him to make a C program that manipulates an HTML file in a few basic ways, like lower-casing, or applying a font style to loose text... etc...

    Then quickly move onto Java or PHP before you get to any of the more complicated things like references and pointers... once the basics are all there with C's flow control and the basics of variables and functions. Perl is also not a bad place to play around briefly for the regular expressions and exposure to more exotic syntax.

    Java and PHP are EXCELLENT proving grounds to learn just about all of the fundamentals of coding. PHP is a lot more forgiving than Java, but Java is the closest thing to C if he wishes to go back and take in all of the more complex practices in C. The thing about PHP is he'll need to learn pretty accurately how a browser and web server interact, and the stateless nature of HTTP.

    Then learn SQL. MySQL will do to start with... then move onto PostgreSQL or MicrosoftSQL.

    Then I'd say dive into C# .NET or build some GUI apps with GTK so he can experience an event-driven model and get introduced to GUI coding.

    I suggest taking a "tour" of the programming world like this because then you know what you're up against and so much knowledge is transferable from one model or language to another. Jumping around lets you avoid biting off more than you can chew. At least, that worked for me.

    If he gets this far, he should expect his first 4 years of college CSE major coursework to be a minimal distraction from his beer pong competitions.

    --
    Move all sig!
  323. Women by Jonboy+X · · Score: 1

    Teenager, eh? Tell him chicks dig computer programmers.

    Actually, if he buys that, he's probably destined for janitorial service anyway.

    --

    "In a 32-bit world, you're a 2-bit user. You've got your own newsgroup, alt.total.loser." -Weird Al
  324. Give him his own hardware. by SanityInAnarchy · · Score: 1

    Everyone else has already pointed out my personal favorites -- Shoes, TryRuby, Squeak, Alice, and so on -- so I'm going to give you a piece of general advice:

    He needs his own computer. Maybe more than one, but at least one, entirely to himself. And you don't get root on it unless he needs help.

    He needs the freedom to be able to make his own mistakes, without it affecting anyone else.

    I would even go one step further -- set up some virtual machines. Yes, he still needs to own the real hardware -- if nothing else, there's a psychological component. But virtual machines means he can deliberately sabotage a system without consequences -- what impact does "sudo rm -rf /" really have on a running environment? Let's find out!

    Oh, and be prepared for him to make entirely different choices than you. Hopefully, he'll at least go beyond C -- point is, you'll know you've done your job when he disagrees with you on something -- and he's right.

    --
    Don't thank God, thank a doctor!
  325. Peace On Earth by laejoh · · Score: 1

    Precious bodily fluids if I recall correctly!

    Women uh... women sense my power and they seek the life essence. I, uh... I do not avoid women,

    But I... I do deny them my essence.

  326. It's not the method, it's the goal by A440Hz · · Score: 1

    I learned C in a 400-level computer graphics class in college. I knew that I wanted to learn C and that I wanted to learn more about graphics.

    Have the kid pursue a goal that he's interested in and find a tool to solve the problem/reach the goal. It could be in Excel and VB (for learning purposes! Geesh). It could be Python scripting for Corel's Paint Shop Pro. There are all kinds of tools for all kinds of tasks. It could also be programming a STAMP or a PIC microcontroller kit from an electronics hobby shop. Or MindStorm. Have the programming be a TOOL for solving a cool problem.

  327. Re:PHP will ruin your mind by Hannes2000 · · Score: 1

    To be quite honest, I am terribly wrong.

    There, fixed that for you.

    why do people always recommend PHP at just every fscking occasion, admitting that it's "somewhat ok" and "will be better soon"? heck, if there are other languages around that are better than "somewhat ok" and are so right now, why (the hell) should one pick PHP? And why do you consider a language which looks like C a good language to learn programming with? Not that it's particularly bad, but even nowadays babys don't pop out with a preinstalled sense for C-like syntax.

  328. Web Programming by zuggy40 · · Score: 1

    I would suggest starting with web programming, specifically html, css and php. This gives a wide skill set, php is based off C so it makes the skill set easy to transfer, he'll learn some basic server administration and it gives an instant gratification that you don't always get with other programming languages.

  329. Maybe just let him be? by malevolentjelly · · Score: 1

    For some people, programming is picked up like a passion- for others, it is not. Don't get yourself to thinking that someone is somehow invalid or stupid if they want to live their life as say a business or english major. These are people who have just as much place in the world- do not let an engineering superiority complex tarnish your son's teen years. Not every boy needs to be doomed to the family coal mine.

    I personally am an example of someone whose father, older siblings, etc. are all programmers and much of my family is somehow related to IT- but I'm interested in sociology. What this has done for me is given me a very in depth understanding of technology, but a much stronger understanding of the people who use it and why they use it. Is this really invalid? Maybe your son can take advantage of his experience with a father whose so technology-oriented and apply it in his life elsewhere?

    If it's a question merely of which technology your child needs to learn, that's different. You're not going to like this- but I'd recommend starting him off in the well documented and supported world of Apple Cocoa or Microsoft .NET, where a little bit of code can become brilliantly powerful in good time. The unix world of development is much more discrete, so it's best to learn on a more contained environment before diving in- however, that doesn't necessarily discount Java or C#/Mono in linux as good starter languages. I am just not familiar.

  330. Forget everything a geek might tell you by StaticEngine · · Score: 1

    Don't point your child at a language or a system or a technology. You'll just bore them.

    Instead, ask them what they want to accomplish, or what problem they want to solve. Don't even frame this in a technological sense. It's not "Do you want to build a robot that sorts DVDs?", it's "Do you want to have your DVDs automatically organized?"

    Then, once they have something they're really interested in accomplishing, let them ask questions, and point them in the right direction to figure out the answers. Don't answer the questions yourself, even if you know the answers. "Oh, you think you need to control a robot, huh? How do other people control robots? Have you looked that up?" Check in on their progress every day and reward their effort, not their accomplishments.

    Yes, it will be more painful, but they'll learn far more valuable skills and become much more independant and focused. Then it won't matter if they picked C++ or Python or SNOBOL, they'll have picked the best solution for them to accomplish their goals, and they'll have learned a wide variety of valuable skills, not simply "programming".

  331. Re:PHP will ruin your mind by cyberneurology · · Score: 1

    I don't *blame* Perl, because I happen to like it as a language.

    I also agree with you that PHP5's OOP was a mistake (actually, I believe that OOP itself is a mistake, but that's beside the point), that PEAR is crap because PHP makes is way too easy to program like crap (I enforce strict guidelines on how PHP in my projects is to be written), and that it should not be taught as a first language (I learned PHP after I learned C, so I had some structure and good programming practices drilled into me)

    I have several complaints about PHP and especially with the direction the language is taking (which is why I intentionally ignored some of the comments you listed), so much so that I may even consider using Java and JSTL for web programming. (Ow! I still feel pain every time I say that.)

    To directly address the Subject of this particular comment thread, PHP will only ruin your mind if you don't already have a solid grasp of what good programming is (and when you do, it might give you enough reason to NOT use PHP).

  332. Teaching Programming by TheCycoONE · · Score: 1

    How to best teach a person to program depends a great deal on the person. I myself learned on a Commodore 64 by copying BASIC verbatum from books starting when I was 4, and moving on to experiment and teach myself more and more as I grew older until I went to university and got a computer science degree.

    However I have some experience teaching others as the helpful kid in the class who knew more than the teacher in highschool and as a Teaching Assistant at the university. Not everyone is motivated enough to pick up the Java API or C++ STL Reference and learn the language. Different people find different things satisfying, and you can figure that out fairly quickly through trial and error. I would suggest starting with a console hello world! If they think it's cool than stick with the interpreted console environment, (Python is probably a good choice, I've started people on C with mixed results) and move on to something with variables, flow control, and user input like a number guessing game. If they look at you blankly and ask for graphics maybe a scripting language for a game like RPG Maker or Aurora (Neverwinter Nights) may be a better place to start.

    In general I'd say the key is don't push them; be someone they can come to for questions and sit with them on and off to be a guinea pig. If you have any more specific questions, just ask.

  333. Not enough information by muridae · · Score: 1
    You didn't provide one vital piece of information, why is your son interested in computer programming?

    There is a big difference between kernel hacking, ray-traced graphics, video game graphics, sound synthesis, AI, web 2.0 interaction, robotics, and creating his own programming language. Find a project that he thinks is interesting, and then help him create it. Start small.

    When I started with computers, I didn't have anyone to learn from or even a good library of books. I thought computers were useful, but really didn't care that you could create a database of 10 million entries with one, as no one explained the interesting data structures that could make it faster. Then, someone showed me how to create simple graphics with the Apple ][e. It's been fun ever since.

  334. Re:Son? by Deagol · · Score: 2, Interesting

    I have kids around the same age, and got them into the Alice environment for a while. It fell out of favor after a bit, but some of the concepts seemed to help later on when my son got a Lego Mindstorm set. My son is currently digging showing off pics of his lego creations on the lego community kids portal. He keeps bugging me for a "real" digital camera, as he has one of those cheap $15 deals from Wal Mart. I've been toying with getting him a better camera, registering a domain name for him, then teach him the basics of HTML and see what he does with it.

  335. Web pages are actually a good start by FingerSoup · · Score: 1

    Reason being, you can teach the person writing it, how files are parsed, which gives some groundwork in basic I/O down the line.

    Further, if your teenager is into blogging, etc... You can have them feed off that aspect... This webpage is your blog. It is the ultimate in customization. Unfortunately you need to write it yourself. Add CSS when they get bored of plain HTML layout stuff.

    Of course, when he gets sick of editing raw HTML to add posts, you can guide them into PHP/Perl/Ruby/.NET or whatever your fancy is. I'd stick to something more basic, like using PHP, and start off simple, like includes for bringing text files in.

    Once they get bored of that, work your way into databases. get them to make an administration page so they can type in things directly into the browser, and have it appear on the page. Basically, it's a place where you can start REALLY SIMPLE, get immediate gratification with the results, and build off projects to infinite degrees.

    I've never been one to coddle kids, especially teenagers. Let them have a blog. Just make sure you teach them how to be safe about it. Explain your rules for privacy, and why they're important. Don't just shelter them from all things evil... They will have to learn how to deal when you're not around. Think of giving them this blog space as learning how to cross the street. Likewise, give them something interesting to do, that will challenge them, to push their limits. Not too challenging as you don't want to scare them away. Male it challenging enough to make learning worthwhile for them...

    Really, the language they learn isn't that important, if it lets them achieve results. I started sphagetti-coding BASIC on a Tandy CoCo. In High school we used a language called Turing. I made a hangman game and a Connect 4 game in my grade 12 year. Last I heard, people still play that connect 4 game at my high school - almost 10 years later. I spent hours on it, and the more people that tried it out, and enjoyed it, the more I worked on it. That led to College, and learning C/C++... As long as you work up to it, keep challenging them at a reasonable rate, you'll give your teen a good grasp on programming. When your teen comes up to you for help and hands you a pile of unformatted code, tell them that you can't read it, and show them how to format to make it easier to read. Get them working first, however you can, then show them how to do it right.

    1. Re:Web pages are actually a good start by Moraelin · · Score: 1

      Really, the language they learn isn't that important, if it lets them achieve results. I started sphagetti-coding BASIC on a Tandy CoCo. In High school we used a language called Turing. I made a hangman game and a Connect 4 game in my grade 12 year. Last I heard, people still play that connect 4 game at my high school - almost 10 years later. I spent hours on it, and the more people that tried it out, and enjoyed it, the more I worked on it.

      Well, IMHO you seem to illustrate just my point: start with a bloody game, not with PHP and databases. (It was years until _I_ had any interest more serious than games, and that was because Prolog seemed like a fascinating insight into logic and thought at the time.) And more importantly: you had instant bragging rights there. Even more importantly: bragging rights for _programming_, not for something entirely orthogonal like having some cute text on a blog. That's what motivates people to keep programming.

      Blogs are the entirely wrong approach IMHO:

      1. Most normal people get tired of blogging fast. It's a minority who thinks that blogging is the alpha and omega, and OMG it makes them more important than all kinds of press combined. Normal people post a few posts, get bored, and give up. So chances are that that teenager will get bored and unmotivated there long before you get to guide him into PHP.

      2. There's no rational reason to go that route. Blogs have been done before and done better. If I want a more customizable blog, I don't edit HTML and CSS myself, much less get into PHP and databases just for it. I just pick one of the sites which already offer what I need. And that's from someone who's already into programming. If I were just starting? Why on Earth would I want to learn programming just for _that_?

      3. There are no bragging rights to be had for the _programming_ part of it. As I was saying, it's been done before and done better. You'd have to work really hard to end up with a site that's even up to par, and a hell of a lot more where someone would even notice that yours is better in any way. The short and easy way to fame and glory there is just to post something interesting, not the programming part. It channels the motivation in an entirely orthogonal direction.

      --
      A polar bear is a cartesian bear after a coordinate transform.
    2. Re:Web pages are actually a good start by FingerSoup · · Score: 1

      Speaking as someone who works with teenagers, Instant gratification is the driving force. If your kid likes building web pages - let him build web pages. It has a low entry level of knowledge, and can be expanded to infinite levels.

      Making simple games is also a good option (as I mentioned that quote). Modding a game without understanding fundamentals of programming logic is an education in futility.

      Basically, take whatever your kid is interested in, start at an easy point, with a way to give instant gratification (C would not be a good choice for most beginners), then have them build their skills at their own pace, offering them challenges along the way to get them to the point of doing it right. If web pages are it, then web pages are it. Flash is a good choice for teaching game programming, because it writes the code itself for simple stuff, but you have to understand the code to do more complex tasks...

      Whoever mentioned that OpenGL would be a good start, obviously was either a very smart kid when they did it themselves, or they don't remember what it was like to learn programming as a teenager.

  336. teen help by d4ktu · · Score: 1

    I'm a 19 year old comp sci major going into my sophomore year in college. I took 3 years of computer courses at my high school that really helped me develop programming skills. I learned C++ first, then Java; I thought Java was easier to program on, but you might want to expose C++ to him first. Here is the syllabus for my C++ high school class: http://teacher.uscsd.k12.pa.us/ollendyke//ProgLang1.html [k12.pa.us] And my Java: http://teacher.uscsd.k12.pa.us/ollendyke//ProgLang2.html [k12.pa.us] Each section explains the topic pretty well, then gives 3-5 medium difficulty programs to write. This taught me up to OOP and got me very well prepared for college. As far as sparking his interest and getting him to want to program, I did it for the career choice. Everyone needs programmers and I want to see the dollar signs. You can also spark his hacker interest by hacking a cell phone, ipod, or xbox if he has one. Install linux on it, mod it, etc. Hope this helped.

  337. Irrelevant by SuperKendall · · Score: 1

    And do you think the loose typing and automatic typecasting is a plus or a negative, in terms of first languages to learn?

    I don't think that matters at all. I think what matters most in a fist language is immediacy of results and power of expression, which Javascript in a browser has in spades over a "real" language or writing a desktop app. Plus he can put it up on the web to show off to friends.

    Given the whole Power thing I'd also start him off with one of the better Javascript UI frameworks so he can have cooler looking stuff quicker. probably any would do.

    If he takes to Javascript desktop development could follow.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  338. Being a teenager who like programming myself... by Mouldy · · Score: 1

    I'd suggest web programming. That's what got me into it, I know that it has all been done before, but what is your kid interested into? For me at the time, I liked GTA, so I made a fan site. Made a news system, expanded it so that people could post comments, expanded it so it had a simple user system, user privileges, admin panel etc. It just grew as my knowledge did. While it had been done before, there were other bigger GTA fan sites, there were news systems and downloads systems I could have used, I found it more fun to make my own. Why are you asking us what your kid is interested in? Ask him :p

  339. iPhone or Touch - for real by SuperKendall · · Score: 1

    You know what I currently consider to be the best starting development area for a kid? The iPhone (or Touch). Seriously, nothing else will get you such impressive looking stuff you can show off so quickly, with things that kids like such as easy access to animation and a good GUI builder. The language is easy to learn to start, and the frameworks for the phone/Touch are paired down a bit from the Mac frmaeworks and really well thought out but not so daunting is scope. It's even a great way to ease into 3D development with a lightweight OpenGL.

    Being a developer is only $99 and that's a cheap price to pay to get someone hooked on programming.

    My second choice would be Javascript along with some kind of GUI framework, for similar reasons - really easy to get into, and write powerful cool looking stuff that he/she could show off to friends. The iPhone/Touch would be more portable though.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  340. Just Don't... by cruachan · · Score: 1

    Don't, really, just don't.

    You yourself should know that coding is an aptitude - if your kid wants to learn how to code then they will despite you, if they don't then no amount 'encouragement' will produce anything other than resentment.

    Make sure your motive isn't 'I want to encourage my kid to code so they can appreciate what a clever and cool guy I am'. Your keenness to show off your kernal hacking skillz suggest there might be just a whisper of this in there. Be honest with yourself and your motives first.

    Right, that said there's no reason why if your kid does have aptitude then you shouldn't facilitate things. Myself I have two kids of mid to late teen years. Both are completely computer user literate and virtually live on the net with IM, Social Networking, Gaming etc. Both have unrestricted access to their own PCs (in the home office tho - don't believe in PCs in kids bedrooms). For both of them I've dangled the interesting stuff where they can see it so they can pick it if they want too - interesting stuff is access to coding software, graphics software, game moding software, their own domain with complete access, pointers to interesting sites - slashdot and others, pointers to articles good articles and videos about tech, gadgets and coding etc. Nothing heavyhanded, I just dangle it for the picking.

    The result is that my son just isn't interested. Sure he knows it's there but he's heading off to uni to study Earth Sciences and tech to him is a tool. My daughter otoh has the apptitude - she likes seeing how things work, likes taking stuff apart and tweaking it, and when I dangle stuff picks it up and runs with the bits she likes. It's unclear at the moment where her actual interests really lie - she does graphics to skin her social networking sites, writes bits of code to tweak toys and widgets, and likes modelling 3D objects a lot, but I figure what she does is up to her. If she wants to write more serious code then I'll help her and make the best tools for what she wants to do available, or more serious graphics then I'll make sure she has the software and knows where to go, but she's in the driving seat.

    Oh and interesting bonus is my daughter has decided being a Geekgirl is cool and a great way to be an individual at school. Oestregen earrings for christmas from Fractalspin were an absolute hit!

  341. keep it high-level by TacoTaster · · Score: 1

    Yeah, let him tinker with a high-level language. I would think a younger person would get bored with something low-level because they couldn't do anything "useful" with it. I know it became interesting for me when I reached the point where I realized I could write something that I found useful. That was VB6 then, I'd guess some sort of web technology would be the better counterpart these days.

  342. Processing by Squiggle · · Score: 1

    If I was going to encourage someone to start programming today I'd probably show them Processing:
    http://processing.org/
    From their site: "Processing is an open source programming language and environment for people who want to program images, animation, and interactions. It is used by students, artists, designers, researchers, and hobbyists for learning, prototyping, and production. It is created to teach fundamentals of computer programming within a visual context and to serve as a software sketchbook and professional production tool. Processing is an alternative to proprietary software tools in the same domain."

    The other nice thing is that Processing is basically just a Java library so it is simple to move beyond simple visualizations, etc and do more serious Java programming.

    I've been having great fun with it, I'm able to do professional work with it (using Eclipse as an IDE, etc) and there is a growing and quite vibrant community of artists and coders developing around it.

    Some other possibilities:

    - Python-based text adventure as a first (big) program.

    - Python and PyGame based game/app for the OLPC

    --
    Complexity Happens
  343. let him get motivated by kkc01 · · Score: 1

    There are so many programming languages used for so many purposes that choosing a particular language and forcing it down the throat of the guy may not be a good idea. Nobody would want them to be forced onto doing something they are not interested in. The best way to make him learn programming would be maybe ask him to take few computer courses in schools, get him interested/motivated in computer programs, help him identify what he would like to do with his computer and hope that whatever language he programs in it would be for open source.

  344. Followup plan to really get him moving by SuperKendall · · Score: 1

    As a followup to my last post, I thought of an ever better way to get the ball rolling - have him develop for the simulator first. It's free to download the dev kit with simulator. Then say, if he can make something that impresses you enough you'll buy a Touch (or iPhone) and a license to develop. Then he has some motivation to really explore programming in depth enough to really learn something.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  345. Re:Son? by TheoMurpse · · Score: 2, Funny

    I started programming in BASIC when I was after my dad taught me
    1 CLS
    10 PRINT "My brother smells",
    20 GOTO 10

    I later improved after getting AOL in elementary school and picking apart Pong Kombat, a Pong-Mortal Kombat hybrid. I learned the fatalities by reading the source.

  346. Same boat.. by mobsmf · · Score: 1

    I am actually in the same boat, however, my son is only 10! He want's to program because it's a big part of what I do.. but, while building stored procedure to traverse billions of records in a database is fun and challenging for me, it's going to bore him to tears.

    I've thought about C, but, I think that's a bit to complex for a 10 year old. I'm really excited about Vala, but again, maybe thats a bit much for him still? (again, I want to KEEP him interested) Perl, eh.. easier, but I still fear it wont be interesting enough.

    Soo.. my thought. Unreal Tournament. Once you understand program flow, most other languages will become easier to understand. Maybe he gets good at building new weapons, new game types, whatever.. and later says to himself, man, I really wish I had a tool that did this or that. Someone without any background, might not even go there.. but with even a little background he may say, how tough can it be?

    anyway.. just my $.02

  347. Re:Son? by Turing+Machine · · Score: 1

    +1 on both Scratch and Alice.

    They're both a lot of fun for adults to play with, too, even those of us who already know how to program.

  348. The same way you get a teenager to do anything... by smithmc · · Score: 1

    Tell him that he'd better not ever do it, and that if you catch him doing it, he's grounded for a year.

    --
    Downmodding is the refuge of the weak. Don't downmod, make a better argument!
  349. I disagree! by Xtifr · · Score: 1

    I disagree! I learned $crusty_old_language back when computers had six bits and were lucky to get 'em, and I see no reason why anyone else should benefit from the research and development that's taken place in the last forty years. A pox on all these $trendy_new_language advocates who want to replace my ancient $crusty_old_language-based systems with something that's actually readable and maintainable! I say, force the kids to start with $crusty_old_language like I did, and hopefully most of them will be discouraged from entering the field and competing with my out-of-date skills, and the few that actually manage to persevere will be so traumatized by the pain of learning $crusty_old_language that they'll be completely insane and will want to help me maintain my stale, fragile, unreadable pride-and-joy. Now, where'd I put that deck of punch cards?...

  350. From a teen... by Codex_of_Wisdom · · Score: 1

    I'm going into 12th grade, so I'll inject my opinion and help:
    First off, to everyone else- the zillions of comments are helpful to me as well.
    Now, I started with a 5th grade teacher who taught us HTML, so I got lucky in that sense, and all the adults around me are computer nerds (my godfather works for LSI). I got into computers early, and now I'm trying to learn to program.
    I started with the "Teach Yourself in 24 Hours" books (I tried both Visual Basic and C). No. They are dull and cannot capture attention. Few books are useful for me, the "C++ for Dummies" I'm trying now isn't too bad, but it is hard to get motivated learning from a dull book for teens (even those of us who like to read).
    Long have I wished for SOMEONE to teach me, not someTHING. Now, if you find a good book, that's one thing, but it's also very rare. So I recomend teaching him one-on-one. Even if you teach out of a book, you can make it more interesting, and you can change the book's teaching to fit his likes and styles.
    The point is, the best way for today's teens to learn something abstract like languages is from another person. Everybody learns differently, and a book cannot compensate. Nor can it answer specific questions ("so, what does this '#include' thing actually do?").

    I just thought you'd like an opinion from somebody who understands the situation.

  351. How I started program by Doug52392 · · Score: 1

    I got my first computer when I was about 5 years old (a Dell XPS D333, I actually still have it somewhere). I loved it, I would play those educational games on it, then I started using the Internet. As I got older (around 9-10 years old), I wanted to know how this fascinating machine worked. So I started reading about computers, how they worked, the operating system manuals, etc.

    Around this time, when I was about 12, my grandmother, being a huge packrat who can't throw anything out, had been given 2 very old IBM PS/2 PCs that her office was about to throw out. These computers ran Windows for Workgroups 3.11. We would go to my grandmother's house every weekend, so I spent a lot of time on this old computer. Then I found a very interesting program, qbasic.exe, QuickBASIC, as I would later learn. I had no idea what it did, so I pressed the HELP button and read the entire help menu. So I started playing with it, entering commands and codes that I learned in the HELP Menu.

    Soon I had made dozens of programs, including a program that played music, a program that had a paint-like drawing board, and dozens of separate misc programs. Then I thought "how can I do this on my home PC?". So I talked my mom into buying me some programming books, which included a few BASIC-based programming environments, and learned even more.

    Now I'm 16, I know how to program in BASIC, Visual Basic, C++, PHP, LUA, and some C, and use Linux.

  352. Re:PHP will ruin your mind by CrazyTalk · · Score: 1

    Could be worse - my first programming language was APL (yes, THAT APL). Believe it or not, that was the programming language that my high school tought back in 1979.

  353. Start him out on an Atari 800/C64 8-bit by AxMstrLP · · Score: 1

    Maybe it sounds cheesy to us, but between my own kids and my nieces and nephews, I find they're totally infatuated with my Atari 130XE. BASIC obviously has its flaws, but BASIC serves its purpose well: BEGINNERS all purpose.... IMHO, your teenager could learn the fundamentals of programming and logic. Learn a little history, gain an appreciation for the difference between 128K and 4GB, etc. And if you can structure code well in BASIC, you're set for life! :) As a side benefit, you could also have fun playing some vintage games when you're not hacking away...

  354. How I got started... by Cr4wford · · Score: 1

    Well, I'm not a programmer, or a *nix kernel hacker, just a front-end web developer and designer. I got into computers from an early age because my dad showed me video games on them... then, when I was 11, I wanted to create a website for a StarCraft gaming clan (lollums). It was really cool creating something like that, and I enjoyed the challenge.

    I messed around with that for a while, but I really started to get into it when I was 16 and couldn't find a job. I thought that maybe I should try doing freelance web design.

    Now at 19 I'm pretty much financially self sufficient, I work at an ad agency and freelance on the side, and am also in school. Tell your son that he could be making $50/hr freelancing during college. It's rewarding and challenging, and it will sure beat his friends' restaurant jobs.

    --
    Freelance Web Designer - Portfolio
  355. Re:This was designed by a professor for this purpo by Shemmie · · Score: 1

    Someone please mod parent up - Robocode was designed specifically to get younger people into coding.

    I work at a University, and we often get classes of 14-16 yo's in to "sample the University experience". We sit them down to do a little coding, using Robocode. A quick tutorial on the basics of coding in Java (Robocode's set up to provide the basic commands of Logo, but with the ability to do much more complex coding as well - some of the Robot AI out there is very impressive.

    It's graphical, it's robots killing each other, and it's teaching the fundamentals of programming and OO.

    The Robocode class always gets high marks from the youngsters for the fun value.

  356. only on /. by j01123 · · Score: 1

    "I'm in a bit of a bind. My young teenage son is starting to get curious about ____, and in particular, ____.

    Only on /. would those blanks be filled in with the words "computers" and "programming".

  357. Don't focus too close by marcus · · Score: 1

    It's not just about readability. Take a look at this.

    It is quite readable, logical, easy to follow. It is still an abominable example of really bad/broken code. Especially since it is presented as an example of good code.

    --
    Good judgement comes from experience, and experience comes from bad judgement.
    - W. Wriston, former Citibank CEO
  358. Language & OS not so important for beginners by xtrafe · · Score: 1

    I have no idea how your son is, but for me, the jump was when I figured that I might be able to make something I was interested in by coding. Actually, I think this happened to me several times, first with logo when I was about 6, then text games in basic, hacking bbs'es, and later on OO, higher level languages to produce games, lower level languages to write drivers, etc.

    Agewise, I'm a little in-between with regards to your post: I'm in university, but old enough to have used a bbs. Sometimes I wonder how I would have gotten interested in many aspects of development, seeing as there's a lot more layers of abstraction to dig down through than there used to be. Its not like you can just drop some inline assembly into your c program and start writing graphics drivers anymore. In many coding applications, learning curve to producing something 'professional' looking is considerably longer than it used to be, and I'd imagine that this would be the biggest challenge to motivation.

    One immediate upside I can think of, though, is that a lot of games now come with development toolkits, and working with these can involve playing with fairly advanced scripting languages. Try Neverwinter Nights, perhaps. This might be a place to start if your son is into games.

    Or maybe he's into websites, or maybe he's into business concepts, or maybe he's into visual effects, or math, or whatever. The point is that he'll start teaching himself if he thinks coding can help him accomplish something he's interested in.

    We fetishize coding & languages because we want to solve problems & work efficiently, but coding will probably always be a means to an ends... So far as I know there are no art galleries hanging up beautiful segments of code on the walls. So if you start geeking out on the advantages of linux, shell scripts, OO, GOF patterns, pointers, automatic garbage collection, this language vs. that, etc., there's a good shot you'll lose him.

    If he thinks coding will help him create something cool, he'll learn to code. Once he starts this process, then he'll come to you for information when he needs it, and you'll have a lot to offer. At that point you should give him only enough information so that he doesn't get stuck, and generally figures things out by himself.

  359. OLPC by mrboyd · · Score: 1
    I am surprised no one managed to mention OLPC.

    It's purpose is that. Teach a kid how to use a computer and eventually do some programming, it's there right on the website:

    We will support five programming environments on the laptop: (1) Python, from which we have built our user interface and our activity model; (2) Javascript for browser-based scripting; (3) Csound, a programmable music and audio environment; (4) Squeak, a version of Smalltalk embedded into a media-rich authoring environment; and (5) Logo. We will also provide some support for Java and Flash.

    You may have to relocate in a bario outside of Rio to get one though. :)

  360. Re:Son? by Rei · · Score: 1

    I like the idea of giving the child the incentive that if they learn well enough, they can work for you instead of at fast food ;)

    As for programming languages, I can see two potential routes for the OP's son to start out.

    1) Javascript. I assume he has a website of some kind or another, no? Basic Javascript could be a neat way to impress his friends -- buttons that run away from the cursor, interactive animation, etc. The payback period would be pretty quick. You could then help transition him to other languages via CGI.

    2) C/C++, but fast track it to OpenGL. Graphics is where a lot of the "fun" is for young programmers, and where they can impress their peers the easiest. Depending on his interests, you could help him out from there -- if he's more interested in how the engines work, help him learn to write his own 3d engine. If he just wants to write games, point him to Ogre or something of the sort. Might want to hook him up with Blender if he's going to be spending a lot of time working in 3D.

    Back in the day, I got my start in QBasic in middle school. I was really driven on by friendly competition with my friends. One would write a program that would make it "snow" one pixel snowflake at the time, my version would make it snow many flakes, and by the time the back and forth was done, there was a veritable blizzard of flakes blowing in the wind and accumulating into drifts at the bottom of the screen. Fractals, simple artificial life simulations, wireframe 3d and crude raycasting (the best we could pull off in QBasic ;) ), and so on -- we tried to outdo each other on it all. Also, using hex editors to tweak video games was kinda fun ;) With modern OSS games, you can do a heck of a lot more than just a hex editor!

    The only thing that could have helped accelerate my learning is if either my parents had gotten me more books or if we had had net access back then. For example, for my first couple 3d engines, I didn't know how to rotate a point in 3d. I did, however, know middle school-level geometry ;). So, I figured out that I could determine the angle to each point with arctangents, then I'd rotate that angle, and then I'd use sines and cosines to convert it back to 3d. Very slow, but it worked ;) Also, my parents were hesitant about letting me mess with hardware, which slowed down my learning of that aspect.

    --
    Why must all aquatic villains play the organ?
  361. Ideas by tthomas48 · · Score: 1

    You might try working through an OpenSocial plugin. It would be something that he and his peers would understand. It's fairly simple, broken up into bite-sized pieces, and it teaches the basics of asynchronous/event driven programming, javascript, and the DOM. While it's certainly not hard-core programming, I think it lives somewhat nicely in between useless toy programming and the real world.

    Word of warning. I'd steer clear of the Facebook API. It has a flow that could really frustrate and turn off someone trying to do something simple.

  362. sls1j by sls1j · · Score: 1

    The best way to encourage programming is be excited about it yourself. I'll warn you against trying to push your children into it though. They will resist and hate it. Instead, I assume your already excited about programming. Share your excitement with them. Look for cool stuff to program /*little self promotion -- http://bee-eee.com/ */ Tell them about your successes. Show them the stuff your think is cool. When they show interest I'd set them up with C# Express as I think it's the quickest way for them to do something beyond printing "Hello World" on the screen. Have fun, and don't require them but inspire them. Trust me if your excited about it they will in time show interest.

    1. Re:sls1j by FreeFull · · Score: 1

      C#? On Linux/BSD/Whatever *nix he is running?

      --
      No ascii art.
  363. Modding Games by Slugster · · Score: 1

    Modding games is probably the easiest way to get into programming, and it has a very quick level of gratification which keeps kids interested. It starts out as modeling/skinning, and can extend to AI and complete modding, which can involve quite a bit of typing.

    It's tempting to want to expose kids to "real programming" right off, but quite frankly, anything they could quickly do on their own isn't that interesting--and it's debatable if it's even that wise of a prospective career choice nowadays.

    If they have the desire, then Java is free and a literal layout manager is easy to understand.... -but when I was in school, I remember most people reacting most positively to Visual Basic classes, I think because of the drag & drop environment--it was easiest to turn out a program that did something that they could actually imagine being useful. ASM courses (with their file-copying-program and file-batch renaming-program assignments) did not seem to get the same level of enthusiasm.

    And I dare say,,,, more people got jobs doing something closer to Visual Basic than they did doing ASM.......
    ~

  364. As a teenager with some interest in programming by pxc · · Score: 1

    I would advise you to give him interesting or rewarding problems to solve. If it's programming, once he learns the basic syntax, have him tackle classic logic puzzles like Towers of Hanoi or something similar.

    There was a problem I remember from my computer science class a couple of years ago (I took all of the CS courses my high school had to offer my freshman and sophomore years) where you started in one corner of a grid and had to reach the opposite corner. In between were obstacles and bonus squares of different numeric values called "cookies". The assignment was to write the code to create the grid and then navigate it (the GUI code was taken care of, thankfully). That was one of my favorite assignments.

    For general technical knowledge, you could always do what my dad did to me: he offered me a broken laptop. I didn't have a laptop at the time (and I don't have one anymore since that one really broke recently), and he offered me an old ThinkPad T22 (Pentium III class, this was in 2005). What was wrong with it? The BIOS had something wrong with it that messed with the power management features. The result is that Windows locked up whenever you unplugged it from the AC adapter. So he threw Xandros at me and let me have it. After that, it wasn't long before I started downloading every distribution I could get my hands on.

  365. Re:python (not) by DrVomact · · Score: 1

    I think you're on the right track teaching him C (absolutely not C++, because it's so anally retentive that he will decide programming is the most boring thing in the world). You know C, and it has all the features a programming language needs—and no more. C also resembles many newer programming languages enough so that once he learns C, he shouldn't have any trouble picking up languages like Python, Perl, Java or C++. I would say that guidance is absolutely necessary—teach him to write unobfuscated code (e.g., do not be impressed when he tries to show you how much he can do in a single line of code), and encourage him to comment abundantly. I'd stay away from pointers—stick to the high level aspects of C; low-level programming is for a few specialists nowadays, and chances are he will never have any practical need to use such techniques. (If he does, he will learn.)

    Another possibility is to teach him HTML and Javascript. I'd do this after laying down the fundamentals with some C programming—but the gratification of seeing the effects of his code immediately on the screen might be a powerful motivator—especially if he's visually oriented.

    --
    Great men are almost always bad men--Lord Acton's Corollary
  366. Re:Basic Lives again - FreeBasic by qubezz · · Score: 1

    FreeBasic is a project that started just a few years ago and it is now more than mature. You can compile win32 programs from the command line (not interpreted or bytecode), use c dll's and the windows api and just about anything you can imagine (you can even program OO techniques if you want). The freebasic compiler is written in freebasic.

    Of course its still BASIC, so the program above (minus the line numbers and with the comma gone from the end of the print statement) will compile and run just as well as it did 30 years ago.

    In addition, there is not only a lot of example code with the distribution, but a community that is available to share with and learn from.
    http://www.freebasic.net/forum/

  367. This Thread Is Pathetic... by RobDude · · Score: 1

    I'd expect this crap from a former high school football star or something...but seriously, this is pathetic.

    If your kid LIKES computers, he'll be interested in them. Your attempt to poke, prod, force him into liking your particular brand of fun is...well...pathetic.

    Don't do anything. He'll either learn it or he won't. If he's interested, he knows he can ask you for help.

    1. Re:This Thread Is Pathetic... by gujo-odori · · Score: 1

      Thank you, I was going to write that myself. When I was in my early teens and getting interested in computers, no one had to *encourage* me or any of the other guys (and yes, I mean guys - there were no girls in my middle school computer club) to learn programming or anything else about computers. The hard part was getting us away from the computer to do anything else. This was in the mid-seventies, and we would ride our bikes a few miles to the nearest computer store - a few miles - to ogle things like IMSAI machines. We were using an HP 2000 Access system on dial-up through terminals, and more than a few of us saved up our allowance money to buy the BASIC manual for those systems. Accomplished by riding our bikes a couple of miles to the San Diego HP office (which is no longer an HP office) that was on Aero Drive.

  368. Agree with P and GP by Krishnoid · · Score: 1

    C++ primer plus by stephen prata.

    I don't usually write flaming posts, but C++ as a teaching language ?!?

    I agree with both of these points. C++ is not that great as a teaching language, but I've found C Primer Plus and C++ Primer Plus to be excellently written, beautifully expositional books. The way I describe it to people is

    • the book is thick because it's not dense
    • you can skip over stuff you do understand
    • for stuff that's more difficult for you, the friendly, thorough explanation is available -- in my case, pointers was where C Primer Plus really shined
    • the distance between where you are right now and complete mastery of the foundation of the language is about 2 inches of paper.

    With so many books out there, picking one good book that will reliably educate a variety of novices is a minefield. You could commit to a book, really sacrifice your time and attention to the material, and find out only a week later that it wasn't worth the effort. These two books are the only two I've come across that properly reward that sacrifice for the novice, with mastery of what it sets out to teach. Learning C or even C++ from these books provide a strong foundation in expressing concepts in a programming language, and with the complete command of those concepts in that language, it becomes possible to make the bridge over to new languages -- where you'll invariably have to rely on less well-written books.

    And when you do, you can take the poorly-conveyed concepts in those, whack them against your solid foundation in C and C++, and watch what parts of them fall apart as poor or wrong description of the new language's features; and which hold together as something to learn and internalize. Without that solid foundation, whacking both bodies of knowledge against each other will make them both fall apart in your head.

    The only thing these books are not good for is preparing the novice for the general quality of instructional books out there. But then I'll recommend the poster gently break Sturgeon's Law to his son.

    1. Re:Agree with P and GP by blahplusplus · · Score: 1

      "I agree with both of these points. C++ is not that great as a teaching language, but I've found C Primer Plus and C++ Primer Plus to be excellently written, beautifully expositional books."

      But if you combine the books with C++ then you can get a teaching language, check out the reviews of the primer on amazon.com, I wish people would actually read the book, and the reviews before they post. I speak from experience myself, the biggest point in Mr Prata's favor is he knows how to conceptualize his thoughts clearly and express them in words that are clear, simple and precise. He goes into the detail necessary for an absolute no nothing about programming. Despite what professional programmers might have against such a book, they never had to or tried to teach themselves from ground zero.

      There's a reason why Prata's book is in a 5th edition, is because it's a darn good place for auto-didacts, anyone interested in a gateway to understanding programming could easily start there as anywhere else.

      I think Mr Prat's book would be even better if he put the whole thing up on a website for free, and into a wiki and let people edit it. Mr Prata has a gift for communicating, and I wish most other book writers had his gift for clarity.

  369. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  370. scratch.mit.edu by namespan · · Score: 1

    I don't think typing in BASIC games (or pages and pages of hex dumps) from a magazine works for kids today

    Well, there's no reason it couldn't, but there's also better stuff out there.

    In particular, Scratch (http://scratch.mit.edu ) shows a lot of thought and promise.

    And if that's too simple, a kid may as well be doing work in Flash or something nice a media friendly....

    --
    Libertarianism is rich wolves and poor sheep playing gambler's ruin for dinner.
  371. Keep it fun & competitive... by TemporalBeing · · Score: 1

    Several ground rules:
    1) Keep the class fun.
    2) Keep it competitive - let the students challenge each other.
    3) Keep it challenging.
    4) Allow the students to reuse code from each other - as long as it is not central to that particular assignment.

    Note on #4: I.e. if the program is suppose to accomplish a specific task, so what if the students re-use each other's code for generating a mouse cursor, button, etc? What really matters is that they wrote the code/logic that achieves that particular task, can demonstrate it, and explain it. Let the periphery be just that.

    Honestly, a lot of the above is what got me into programming. I had a great teacher who let us go at the assignments. As long as we got the assignments done, and wrote the core code ourselves it didn't matter. We shared code for buttons, mouse/keyboard drivers, video drivers, etc; but we still wrote the central functionality ourselves. It ended up becoming a challenge to see who could outdo who, at least among the top of the class (and everyone else got to enjoy the show too!).

    Let them write games, and other things as well; and challenge them to come up with new solutions. Teach the real heart of education - how to learn - as well as the core material - the actual programming language.

    The kids will enjoy it; and their own sociological structures will keep feeding it as well. And best of all - you won't get bored teaching it since the kids will always come up with something new. ;-)

    --
    Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
  372. Two words: Game Mods by Weasel+Boy · · Score: 1

    Suggest he learn Lua and make a World of Warcraft plugin.

  373. Please mod parent up by Krishnoid · · Score: 1

    Again this isn't to say I don't love my dad, or appreciate time spent with him, but I would much rather go sailing, skiing, talk about investing, or just about anything else besides work on math problems with him. It seems this could be a similar situation, a veteran kernel hacker with poor teaching skills could really turn off someone to programming because their insights, ability to see through problems and solve them without needing to express what their brain is actually doing can be extremely detrimental to the learning process and therefore ongoing interest in a subject.

    I wish I had modpoints -- argh. This paragraph really beautifully states what a dad's relationship is with his son, and what a teacher's relationship is with a pupil. Being able to teach has something to do with being able to externalize and communicate the thought process between both parties, and for the teacher to be able to temporarily (if not a professional instructor) unlearn enough to be at the student's level.

    I think it's both a rare talent and a valuable gift to provide a child. My dad either had the talent or stretched himself to do it -- and I recognize that as an incredibly precious thing both to give and receive.

  374. Re:Son? by sgbett · · Score: 1

    I won't need to, the machines will do it for me!

    --
    Invaders must die
  375. Re:Begin with analyzing a little bit by TemporalBeing · · Score: 1

    what functionality that could solve a real/virtual world problem.

    I wouldn't necessarily say it would have to be reflective of real-world problems. Of the classes I had in high school, the books for the 3 different languages overlapped in the problem sets quite a bit, and they were nearly never real-world associated - a lot of things were like:

    1) For Loop based Fibonacci generator
    2) While Loop based Fibonacci generator
    3) Do Loop based Fibonacci generator
    4) Recursive Fibonacci generator

    Or other similar kinds of things (factorials, lowest common denominators, etc.). A lot of math related stuff, some in other areas - like draw a snowman (Qbasic), draw a series of cars driving across the screen (C++), or do something else.

    Ultimately there was a lot of different tasks, but each built on something; the primary thing was that we could achieve the task our own way - for example, when I had to do a calendar I used a button class I had created to build a quick interface; I reused that class again later when creating my own version of the game MasterMind. Creative is key.

    --
    Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
  376. Have you considered second life? by Francis · · Score: 1

    If you're not familiar, Second Life is a virtual world you can log into and play around with, for free. In this world, you can create things, such as virtual houses, cars, spaceships, whatever you can imagine. The key thing is that it has its own embedded toy programming language called LSL.

    I recently taught an undergrad course, targetted at non-comp sci students, to teach them programming.

    http://www.francischang.com/professional/games/

    Our thinking was that a lot of us got interested in computers, and then programming, is because we liked video games. We're trying to motivate learning by having people go through the basics of Second Life content creation. I think it's a bit more rewarding when you can say "Hey mom, look I made this game" as opposed to learning the formalities of typing and writing maintainable code. These things can come later.

    It scales out a little bit too - you can make a few dollars in Second Life in various ways, one is by selling and creating new content. Possibly your teen can earn a bit of a summer income from what they learn in SL - a great way to develop their entrepreneurship skills.

    And hey, if you're not familiar with Second Life, maybe you and your son can explore and learn it together. Of course, there are drawbacks to letting them explore - For instance you will no doubt encounter objectionable/pornographic content eventually.

    On a completely different note, another fun way to learn the basics might be to play around with Flash or Phrogram.

    --

    --
    #include <malloc.h>
    free(your.mind);
  377. How programmers are borned by diegocn · · Score: 1

    Give him a Windows machine and let him experience all the painful experience with spyware, drivers, and the friendly BSoD. Then show him Linux and how easily things can be done from a powerful shell. In no time he will love to write shell scripts to get things done quickly. The next thing you know is he picking up python by himself. Eventually he realized the performance issue with scripting language and move on to something like C++.

    At least that's how I ended up getting into programming.

  378. Python 3.0 in months, bad time for teaching Python by leftie · · Score: 1, Informative

    This is the wrong time to pick Python for teaching. Python 3.0 is coming out in months. It's going to be incompatible with all the 2.x versions. There's going to be major changes that effect everything all the way down to "Hello World."

    That sounds like a big confusing mess to deal with explaining to a student.

    Link to python 3.0 info...
    http://www.python.org/download/releases/3.0/

  379. focusing on the coding is the wrong approach by buddyglass · · Score: 1

    Coding should be taught as a means to an end, not as an end unto itself. That end being the expression of abstract ideas. Get the kid excited about an idea that requires coding in order to express, or test out.

    When I was in high school, there were two side projects I worked on that really piqued my interest. One was a "contest" of sorts I got into with another kid, where we tried to see who could develop the fastest sorting algorithm. At the time, neither of us realized that this wasn't a particularly fruitful area of investigation. I extended my coding ability not for its own sake, but because it was necessary to express (and optimize) the algorithms I was coming up with.

    The other project was a tool for designing autos in Steve Jackson's "Car Wars" table-top game. So there was a problem, and I was attempting to leverage the computer to create a solution. I didn't learn to code because coding is inherently satisfying; I learned to code because creating elegant solutions to interesting problems is inherently satisfying.

  380. My experience by againjj · · Score: 1

    I was in fifth grade (twenty years ago, wow!), and I was given a book about computers, which had in it an example BASIC program which was something like this (pseudocode, I never properly learned BASIC):

    print "What is my name?"
    read name
    print "What color am I?"
    read color
    print "How tall am I?"
    read height
    print "Hello, I am " name "."
    print "I am a " color " color."
    print "I am " height " feet tall."

    I brought this to my Dad and asked if I could get our computer to do this. He said that we could, but we would do it in a different language (we did not have BASIC on our Mac). He coded it up in a Pascal interpreter. One great feature that it had was auto pretty printing and error highlighting, so proper formatting was indeligably imprinted on my mind, and errors were easily found.

    After playing with the program for a while and enjoying it thoroughly, I was told that I could do programming instead of math for school (I was home schooled at the time). I jumped at the chance. My Dad would simply give me new tools to play with (loops, arrays) and puzzles to solve (add n numbers where n is specified at runtime, print ASCII graphics, play shoot the wumpus).

    Eventually, I got to the point where I had learned the basics, and he introduced me to the Mac drawing primitives. I then drew faces and such, with ears, ears, hair, etc. Then I switched to a real compiler and went on to create a whole application, with menus and options dialogs to choose how you wanted your face drawn, and all the basic stuff for an application. I remember one of the final things to do was to have an option for glasses, and an option for curly hair (a series of circles; my Dad told me about sine and cosine to do that nicely) -- this was to mimic my Dad, who had glasses and curly hair.

    At this point, it was the end of the year, and I was then allowed to run loose and do whatever I wanted, and I learned to use the documentation to find out what I needed. I never looked back.

  381. Math or hardware? by Logic+and+Reason · · Score: 1

    There are basically two ways to approach things: from the hardware side, or from the math side. The spectrum of languages is something like: machine code -> assembly -> C/Fortran -> C++/Java -> Python/Ruby -> Lisp/Smalltalk -> lambda calculus.

    If your son is interested in abstract math, you'd be hard-pressed to find a better teaching language than Scheme (with SICP, of course).

    If he's more into concrete, hands-on stuff, why not assembly? It isn't all that hard, and will teach him a lot about how computers work.

    Of course, you could pick a language somewhere in between those extremes; but I think sticking to one end of the spectrum or the other is better for teaching and learning, since there are fewer distractions.

  382. Easy by onkelonkel · · Score: 1

    Tell him he's not allowed to program.

    --
    None of them can see the clouds; The polished wings don't care.
  383. How about Ruby Widgets? by cabazorro · · Score: 1

    I created a small project that uses Ruby Tk. Is not Quake Arena, but you get the point.

    http://winlearnseries.sourceforge.net/

    I don't agree with the idea of dumb-down development.

    Programming is about rules, lots of rules.

    Programming is like comedy, either you dig it or you don't.

    My litmus test is the rubik cube. Give a teenager a rubik cube.

    If she/he toys w/ it for a while and then tosses it. Don't waste your time.

    If she/he tries for a while and then asks for directions. Good news, she/he is ready to learn programming.

    If she/he tries, fails and then returns tomorrow with the cube solved, you have in your hands a kernel developer.

    If she/he already knows how to solve it and you have not bought her/him a laptop yet you are wasting precious time.

    If you don't know how to solve the Rubik cube, you clicked the wrong link, this is Slashdot, not Digg.

    --
    - these are not the droids you are looking for -
  384. Re:Son? by Thirdsin · · Score: 1

    when she's ready for her first job, we will give her part time work instead of her having to get a job in some fast food joint or convenience store

    "Back in the day" I started working for a fast food restaurant when i was old enough... If that wasn't sufficient motivation to obtain a quality education, I don't know what else in my life could have been.

    Give the kid the chance to find out what she "doesn't" want to do and programming might appear as a more attractive option ;-) As Oscar Wilde put it, "Experience is simply the name we give our mistakes."

    --
    No words of wisedom here.
  385. This is what did it for me by Anonymous Coward · · Score: 1, Insightful

    When I was a wee lad, I came across and read "Peter Norton Programmer's Guide to the IBM-PC". That book hooked me on all things PC.

    It detailed the intricate workings of the PC and the "revolutionary" concept of BIOS interrupts.

    Years later, when interviewing candidates for programming positions, I would ask them "When you press the letter 'A' on the keyboard, what happens ?". Their answer would usually be along the lines of "An 'A' shows up on the screen". I would then ask "Why?". If they were able to articulate anything better than "because", they would usually get the job.

    I'm now an old person, and I know my views of what programmers should and shouldn't be are probably dated, but I think the worst part about his latest crop of programmers is the total disregard for what actually happens at the machine level. This is what contributes to the crappy, inefficient and unintelligible code that we see being produced today.

    Imbue in your son the basics about what a computer is and how it does what it does, and you will be doing him a great favor if this is the profession he chooses to pursue.

    I am not advocating that every programmer needs to know how to write a BIOS and put it on an EPROM and replace the one they have in their computer, but at least know what the BIOS is and why it is so important in the grand scheme of things. Nowadays, people learn VB.NET and think they are gurus because they can make a form pop up on the screen. I'd like to see them dive into Microsoft DOS technical documentation and make heads or tails out of Microsoft's "List of Lists" to be able to recover data from an accidentally formatted hard drive.

    I'm ranting... just my two cents...

  386. iPhone for the win? by bledwhite · · Score: 1

    If i was ever going to learn to program besides a rough understanding of BASIC etc.. although thats where most people would start initially, then i would definitely go for the Apple SDK. Everything is there provided you have a mac which seems to be the trend amongst teenagers these days anyway. For free you get the SDK, a simulator to test it on and all the hardcore optimization programs. It is in objective C, which is harder to program but the market seems to be coming up pretty big these days for that because of Apple so if you are a newstarter with a fresh mind would it be that much more difficult? I mean for even a (relatively)simple project you could perhaps make some money or at least get a free app on the iTunes Apps page, now how cool would that be for a teen amongst his/her pals. I reckon this would be a winner. Some apps so far are extremely simple but popular. The hold button was in the top twenty at least which is basically hold the button for as long as you can without letting go, ala get a high score. Simply put a start stop timer button recording the highest variable. Now thats an easy program but on the iPhone/iPod Touch very very cool and fun!! p.s. i haven't found a way to cheat on it yet either gggrrrr.......

  387. Re:Son? by Who235 · · Score: 2, Funny

    My dad always told me, "Women are like martinis for lunch. One is never enough, but two is just too goddamned many."

  388. Java is a good start by Erus · · Score: 1

    Java was my first computer language therefore I recommend it; "A First Book of Java" by Gary J. Bronson, contains great info to get you started with Java. The two languages they teach at my school are C++ & Java...

  389. Do it my way by jrdemasi · · Score: 1

    Well I'm 14, and I never got into programming, but I've always wanted a website. My brother is a programmer and he told me to pick a language to use and learn it, he said I had to learn on my own. I picked up on PHP very quickly and I'm on my way to obtaining my own blog. Progress is slow, and it takes time, but the urge to want the final completed project is what keeps me going. www.smuckingfart.com is the product of how far I've gotten.

  390. My first program by greatslack · · Score: 1

    I first learned to program on a TI-83 calculator. Start with simple programs like "Press 2 to win" and move on to creating moving objects. Or, if your kid likes Legos, then get him a Lego Mindstorms kit.

  391. If he is visually oriented by kosan · · Score: 1

    teach him Processing; it is a programming environment build upon Java; specially developped for visual artists. I use this environment for my students of an art school (16-18 years old) and they love it ! They are not specially "programming minded" but they like the simpleness of it and the beautiful images you can create with simple code !

  392. The visual cortex is huge! by TerranFury · · Score: 1

    What to teach? Video games and graphics.

    In a nutshell: Point him to,

    Gamedev.net (The forums are the best I've found anywhere.)

    cprogramming.com (Going through the C tutorials is a great, grea way to get started with the language.

    Also give him one (or both) of these:

    1 - A pointer to the framebuffer.

    2 - Nice OpenGL initialization code.

    In fact, I'd say that there is almost nothing as rewarding as starting with just a "putpixel(x, y, color)" function and finishing with a 3d cube spinning around. Programming graphics teaches so much: Math [motivation to learn linear algebra! A concrete way to understand parametric functions... and calculus (If you start coding before you take Calc I, you will reinvent Euler integration yourself)... and functions... and recursion/induction... and... well, everything...], abstraction (putpixel is inside drawscanline which is inside drawtriangle which is inside drawmodel which is inside drawbadguys which is inside...), etc, etc, etc. And since it requires speed (you want to run at interactive framerates), it'll motivate efficient algorithms, too.

    And -- I should really emphasize this -- people are visual. Nothing taught me math like watching it draw pictures. Concepts that confused my classmates came intuitively to me (me! The kid who couldn't memorize his times tables in third grade! The kid who kept making sign errors! The kid who everyone thought was bad at math! The kid who's now a PhD student in Control Theory!) -- because I'd seen them draw pictures. The visual cortex is a huge part of our brains, and harnessing it does incredible things. So teaching graphics programming is bigger than just teaching graphics programming: It's making connections so that your son can visualize math. And that is huge.

    Graphics and games. Give your son a pointer to the framebuffer. The rest will follow.

  393. Not a programming language, but still useful by ksd1337 · · Score: 1

    I know, I know, it's not a programming language. But he could learn HTML/CSS, preferably the standards-compliant kind, not the IE, tagsoupy FrontPage-generated garbage. I feel it could help a programmer(-to-be) in various ways.

  394. How I got into programming by Vanyali · · Score: 1

    In my middle school years I started dabbling with web design and learned HTML and CSS. However, I soon wanted to be able to create dynamic sites, so I picked up PHP. This was the first real (albeit a bad) programming language that I learned. I don't think it caused me brain damage or whatever, but it prevented me from transitioning to other languages for a bit. When I got into high school I picked up a few books on Lisp, decided it was much better than PHP, and did some stuff with it. However, I hadn't learned much actual programming yet. What really got me into programming was the USA Computing Olypmiad (http://usaco.org). This is a programming contest for high school students that forces you to write efficient programs to solve some very difficult problems (just about all programs have to run in under one second). The contest makers have also created an excellent training site that has plenty of problems and lectures to learn from. When I started the training pages, I could barely program in C, but after about 40 problems or so I can program almost anything in it or in C++. Since then I've also learned Ruby and Python, the two being a breath of fresh air after C/C++ and PHP. Because of this, I was able to take the AP Computer Science AB (which should be called AP Java :/) exam and got a 5 in freshman year, without ever having taken a computer science course in my life. You just need to challenge your son with problems like those in the USACO, and if he's ever be interested in programming, he'll learn on his own in order to solve them.

  395. Programming, or how to ownz0r teh sp0t cr3am set.. by VoidCrow · · Score: 1

    I managed to get my closest friend's kid into computing because I started when he was 3 years old by introducing him to games, and teaching him to type his name. Subsequently, I supplied him with new computers as he grew, bought him a Logo package and book, and showed him how to draw simple geometrical shapes and/or pretty patterns. He's now a geek, and he wants to do Computing with Physics at Uni. He's better at maths than I am.

    I interested my nephew and nieces in computing by showing them how to world build for Quake 3 and Unreal Tournament in 3D editing packages, and wound some programming into the mix via UnrealScript, a Java-like language included with all of the Unreal engines. This was cool for them because they could build the world, and then *play* it. Obviously I pWned them most cruelly (they are teh suX0rs - they can get their revenge when my teeth are in a jar). My nephew's the only one who showed any ongoing interest, but they all enjoyed the activities.

    I think the key thing is to find something that they can *play* with. This is how I got into programming.

    I can see the point of didactic learning under some circumstances, but IMHO (speaking as a consumer) too many teachers (particularly maths teachers) heavily overuse this style of teaching. IANAT, btw.

  396. Bribe/pay him by syousef · · Score: 1

    Offer to pay him for programming work he does.

    Find something not too difficult but that will actually require some effort and learning to accomplish. Then offer him a modest one off increase to his pocket money or some new toy or gadget he wants, on the condition that he complete a task. The key is to pick a task that a beginner can handle but that will take him time and have him learning. It may sound frivolous, or like bad parenting, but a lot of good programmers only do it because they're paid. The beauty is he'll learn on his own if motivated. Once he's seen how complex it is, he'll either take it up as an interest himself, or decide it ain't worth the money. This is also a good way to teach him not to rely on being spoon fed by teachers etc.

    Btw can I have some help with kernel hacking. Looking at kernels for the first time in about 12 years, and it took me a lot longer to get a kernel compiled than I remember it taking me when I was last looking a Linux seriously. When did it become so damn hard to install the tool chain?

    --
    These posts express my own personal views, not those of my employer
  397. AppJet to introduce him to web app development by simpolman · · Score: 1

    The best way to make programming interesting is to make it relevant. Everyone uses dynamic websites so I suggest teaching him to program for the web. There's no better teaching tool for how web-apps work, than AppJet.com IMO. You don't have to install anything to get started coding, not even a text-editor. Javascript is the only language he'll need to learn to use it. No SQL, no HTML, no Apache configs, just Javascript, a C based language with agile loose typing, and great OO capabilities. The AppJet developers have built a very minimalistic but stil powerful framework that covers all the fundamentals of web development; HTTP request/response handling, persistent storage, and sending emails, among many others. The forum has a friendly community of amateur developers to help him learn. He'll be writing web-apps that he can show his friends in no time! Give it a shot; http://appjet.com/ and check out something I built with it at http://juxtafier.com/

  398. A great book to learn with by Illumine · · Score: 1

    I highly recommend the book Learn to Program. http://pragprog.com/titles/fr_ltp/learn-to-program My teenage brother started with this book and loved it because it was clear and easy to understand and wasn't boring. Even my dad started to get into it.

  399. Some younger advice by triplepoint217 · · Score: 1

    I haven't seen many posts by youngish people, so I thought I would throw my $0.02 in. I am 22, and learned how to program in 10th grade, after a few earlier false starts.

    In my case, I tried basic in elementary school and visual basic in middle school. In both cases I never really connected, I don't know whether it was the simplistic languages or just my lack of maturity.

    When I actually succeeded in getting started I got "Learn to Program using Python" by Alan Gould and worked through a bit of that, and then moved up to "C++ programming for scientists Engineers and Mathematicians" by D. M. Capper (I am science inclined, currently starting a Ph.D. in physics). I learned mostly from these books. If he has the desire to work through a book, it is a good way to learn, they are good teachers even if you are not.

    The other thing that helped me was that I did this as an independent study for school which forced me to spend 10 hours a week on it for a semester. It was a little painful, but being forced to just keep slogging got me to the point where I knew enough to be able to write programs that were complex enough to be interesting to me. I don't know if there is a way to replicate that effect (I wouldn't suggest forcing him to do it unless he wants to, but maybe come to an agreement that if he does x hours a week for n months you get him his own computer or something else he wants).

    I would also second the suggestions of games. If he is programming something he thinks is cool it will be a lot more fun for him.

  400. Show how it can help them by Dylos · · Score: 1

    I remember when I first became interested in programming in early high school/late middle school. It was when someone showed me their IT-83 calculator that had a program on it to compute the quadratic formula by just giving it the variables. Some of you may regard this as encouraging cheating, but besides using it on a test if you were to spend the time to make a program to perform some equation you should have a better than average understanding of the equation itself. The reason this is such a good place to start is that it shows how useful programming can be and it gives someone real problems to work on it that seem easy, but pose their own problems that the programmer will need to figure out. (Dont have to program these on a calculator, you could use your favorite "easier" to learn language)

  401. Game Maker by mdblake · · Score: 1


    If your son is a fan of computer games then Game Maker is a great place to start.

    It combines a gentle introduction to programming logic with a high reward component from creating his own graphic computer games - games that can look and play as good as anything on the casual game market.

    An interested teen with this Game Maker book, The Game Maker's Apprentice, and help from a programming mentor can get a solid introduction to a complete development process, including aspects like weaving sound and graphic assets together to create a complete software package - aspects of development that often aren't covered at an introductory level.

    The Game Maker's Apprentice is structured as a series of projects, starting with the most basic and gradually increasing in complexity to cover rudimentary AI concepts by the end. The projects are fun, with clear direction and plenty of opportunity to play and explore beyond the specified project.

    The "series of projects" structure can also help you out as you teach too. You'll have the insight to see what's new with each project, what ideas to help emphasize, and they'll serve as guideposts to give an idea what level of concepts are being taught at each point along the way.

  402. You want to ENCOURAGE them to program? by CrazyTalk · · Score: 1

    Average salary for programmer - $60k/yr. Avereage salary for city bus driver - $100k/yr. I'm not sure I would encourage anyone to go into programming.

  403. Re:PHP will ruin your mind by eddy+the+lip · · Score: 1

    My bread and butter is also PHP, and I would never recommend it as a teaching language for all the reasons you mentioned. One thing that was implicit in your post, but I think is worth noting, is that the large quantity of class-A screwups rampant in PHP libraries and applications are another strike against it as a first language. The first language I got serious about was perl, and love it or hate it, there is a community there that's very quality oriented. (Yes, you need to dig through the usual chaff.) One thing that was critical to my learning was being able to read large quantities of well written, well documented code.

    The background I gained from other languages made it possible for me to see PHP's flaws and work around them. I shudder to think what would have become of my programming practices if it was where I started.

    (For the record, I also write almost all my own framework code for PHP as a result. Some of the more recent stuff that's come out might very well be decent, but a) the tolerance for terrible APIs that PHP itself engenders leaks into much of it, b) I've been bitten by PEAR one too many times, and c) out of necessity, I've written enough of the basics that I don't have a compelling need for them anymore. I sometimes question the NIHness of this, so it's nice to know I'm not the only one ;)

    --

    This is the voice of World Control. I bring you Peace.

  404. SQL 4TW! by Roman+Coder · · Score: 1

    My 16 year old son just asked me to show him how to program, with an eye towards getting a good paying job when he enters the job market.

    I'm starting him off on SQL, then once he's got that down, on to something like Java (the basics, not J2EE).

    Not sure if that is the best way to go, but I figured he can't go wrong learning SQL first. Plus no matter what programming language he uses in his career, he'll always need SQL, and its a good introduction to a programming "mind set".

    --
    "The future can only affect the present if there is room to write its influence off as a mistake." - Yakir Aharonov
  405. Re:Logo by Metasquares · · Score: 1

    You're all going to hate me for posting this, but this sounds like what VB was made for.

  406. Leave a compiler lying around. by JPEWdev · · Score: 1

    That's how I got started. My dad left his Borland Delphi III disk lying on his desk with a copy of "Teach yourself Delphi III in 28 days", so I took it and installed it on my computer. Eventually I got bored just drawing pretty windows, so I ask my dad how to "do stuff", and he introduced me to pointers, linked lists, stacks, and all sorts of wonderful data structures. The rest, as they say, is history.

  407. Instant Gratification. by NoobixCube · · Score: 2, Informative

    Try teaching something that will instantly set off the endorphin rewards. You certainly know a whole lot more about what makes him tick than anyone on Slashdot, but most teenagers, myself included (though I'm 20 now...) play games. Get him started on Python and PyOpenGL, that way he can easily get some 3D graphics on screen.

    For some reading on education in general, in case you're curious, Dimensions of Learning is a good place to start. It's a relatively current teaching model. I have the textbook on it, but you can find general outlines of it everywhere; though, curiously, it doesn't have it's own Wikipedia page. I might need to do something about that, unless it's in another article.

    --
    Admit it. You post strawman arguments as AC so you get modded Insightful for refuting them, rather than Troll
  408. You don't. by statemachine · · Score: 1

    By that, I mean that I learned on my own because I wanted to learn. He has to want to learn. Maybe he likes something else. Are you afraid that he'll want to be a fire fighter, lawyer, or some other profession you might not like?

    What does he like to do? Try encouraging that. But don't discourage.

  409. Re:PHP will ruin your mind by MisterBlueSky · · Score: 1
    modperl
    • It's faster
    • Loads of modules available
    • Direct access to Apache's API and data
    • Working unicode support
    • Support for tainted data
    • Native regex support
    • Namespaces
    • Not written by idiots (*)
    • You can use the same language to do both web and non-web programming
    • A community with people who know what they are doing

    Of course, there is the readability-issue with Perl, but when you come from PHP it is always an improvement. But if you don't like Perl, there is also mod_python and some other alternatives.

    (*) Just kidding

  410. Problem solving first by EmbeddedJanitor · · Score: 1

    Try Castlemouse:http://www.castlemouse.com/

    --
    Engineering is the art of compromise.
  411. cell phone - or TI calculator by Stradivarius · · Score: 1

    I got my start programming the TI-85 (and later TI-92) calculators we used in our math classes. It's easy to learn, lets you automate some of the calculations in science classes, and if you make games you can share them with your friends. :-)

    Then you can move on to programming more complicated things, like cell phones or computers.

  412. Criticism on C++ Primer Plus by adah · · Score: 1

    This book is often criticized, and it should not be confused with the C++ Primer by Stanley Lippman, a real C++ expert. I found two reviews on ACCU:

    http://accu.org/index.php/book_reviews?url=view.xqy?review=cp003131
    http://accu.org/index.php/book_reviews?url=view.xqy?review=cp001702

    Neither review recommends this book. Francis Glassborow even said "there is nothing in this book that is appropriate to the needs of someone learning C++ in the twenty-first century". Brian Bramer was kinder, and said "this a very readable book with clear up-to-date explanations ... Suitable for beginner self- teaching who finds the more academic books hard to read", but he also mentioned it was heavily C-based, and did not talk enough about STL. In fact, the author also wrote C Primer Plus, and that may explain something.

  413. well what do teens want more of- money. by auspiv · · Score: 1

    my current motivation for learning programming is to make money. as you may or may not know, the financial markets are dominated by automated trading machines. so i figure, "hmm.. it can't be too hard to write a profitable system." ha. it is very hard, but a great project. i'm currently using ninjatrader to write basic strategies in c# to trade futures. oil, the s&p 500, wheat, corn, hogs.. its all tradable if you notice patterns that occur over and over again. the systems can be as simple or as hard as you make it. of course, the more simple ones aren't as profitable, so as the desire to make money increases, so does the complexity of the program. in short, i'm writing strategies in c# for ninjatrader to make money. give your son a go at this and he'll learn it all himself. and who knows.. maybe he'll come up with some novel concept and make himself more money than he knows what to do with.

  414. Have you considered Python? by jrminter · · Score: 1

    I would start a newbie with Python. Python is Open Source, multi-platform, and object oriented. There are many, many extension packages. Lots of tutorials too...

  415. Re:Son? by vrmlguy · · Score: 1

    Hey! I'm the web designer for the Yearning For Zion ranch, you insensitive clod!

    --
    Nothing for 6-digit uids?
  416. Learning programming... by l3ool · · Score: 1

    My own encouragement came from curiousity about how computers and programs worked, but as far as encouraging someone either they will be interested in learning or they will not. As a programmer for the last 23 years I'd have to say teaching the importance of RTFM'ing is a good place to start. C is an ideal language to start with, it will show them many valuable programming concepts. Also, shell scripting shouldmake them comfortable with the commandline along with those all important 'programming concepts'. Unix/Linux/BSD is the best place to learn the art of coding (in my opinion)...Manpages are there to RTFM. One last thing, make sure their first IDE is VI, GCC and Make. ;-)

  417. Why UNIX? by SpoonStomper · · Score: 1

    Kids want to do something that is cool. IMHO Silverlight is the fastest and best way to do it. Yeah it's not UNIX but who cares. I'm pretty happy that I grew out of my UNIX phase. I make a lot more money with dot net. Mainly because it boosts development performance and efficiency. Why force him into UNIX because of some lingering ideals peddled by your college instructors.

  418. Game Maker. by GMThomas · · Score: 1

    Quite simply: Game Maker. This is how I got into programming at age 12.

    What Game Maker does is

    1) It makes programming fun and gratifying. You see your results instantly. With a few commands you can see exactly what you caused your game to do, and because of the nature of some of the functions (for instance, functions that calculate trigonometry and other more complicated math formulas) you don't need a huge understanding of math.

    In addition, it takes out the "Yay, I spent three days on this, now I can draw images on the screen!" For instance, in three days I had coded movement, some netcode, and made maps for an MMORPG I was making. In another language you would simply not be nearly this far. So basically, you don't get bored by "stupid stuff." If you have a game idea, you can get that into a program in a few hours, instead of worrying about really low-level things.

    2) Perfect for beginners. It's even being taught in schools. You can start with a simple drag-and-drop interface and slowly work into code. It's all object-oriented, and it's very scalable. You can make a simple maze game or have an MMORPG that reads binary files and has super advanced graphic scripts.

    3) Like I said earlier, he'll learn OOP and not even know it, since the entire GUI is based around objects. You can't put anything into your game without it being an object.

    4) It's free. And it's a small program. It has a huge community (I am a huge tutorial contributor and mentor) with tons of tutorials, and plenty of people to get help from.

    5) Its syntactically average and lenient. Code you write in it looks like code you write in Java, for instance. It's lenient: You don't have to declare variable types.

    6) Debugging an error is not as frustrating as other languages. The debugger tells you exactly where the error is. Still can't figure it out? Run the game in debug mode and monitor every variable, object, etc.

    7) Reward. Think up and code a really good game and you can be admired by tons of GM community members! Wouldn't you want to work for that?

    --
    You are now manually breathing.
  419. I haven't turned out that bad by Gutwroth · · Score: 1

    About 2 years ago, I picked up a book on HTML/CSS (HTML, mind you, I would come to hate it for disrespecting XHTML) and read through it one weekend, making an example webpage for each lesson. The natural step after that was JavaScript which I learned with glee. Of course, then I needed some server side-scripting, so I grabbed PHP. I have come to dislike now and wouldn't touch it with a 20 meter pole, but at that time it was a great gateway to other parts of computing.

    Since then, I've learned Python and I love it. In fact, I'm a Python core developer (yes, with commit privs), and Google is paying me to work on it over the summer. I hope this is evidence that 15 year olds can make a difference!

  420. Re:Son? by kabz · · Score: 1

    I'll take your point on books and run with it.

    I remember when I was first interested in computers, I was happy just to have old BASIC programming manuals and such. Magazines, articles in New Scientist. Kids have a lot of energy. Let him harness some of that energy reading.

    If I could have seeded myself with some books, I would have left copies of SICP, K&R, a Turbo Pascal or Turbo C manual... What I did have was a copy of the DEC 2020 BASIC manual, Personal Computer World magazine, and Byte when I could afford it.

    Anyway, don't underestimate books as a vehicle for getting kids going down the right path with computers. I guess this extends to programming blogs too, but that's another post.

    --
    -- "It's not stalking if you're married!" My Wife.
  421. Scratch or Alice by HighPerformanceCoder · · Score: 1

    To keep a youngster interested and motivated, try Scratch or Alice. These make it really easy to generate some flashy graphics, and do teach real programming concepts. My 10 yo son has done quite a bit of Scratch programming, mostly self-taught.

    Alternatively, get him doing Lego robotics. This is a bit more expensive, but loads of fun.

    Once they're hooked on programming and computers, that's when they'll have the patience to do "real" programming languages like C++ etc, like we cut our teeth on (actually mine was Pascal, but that just shows how long my teeth are). But not everyone will get to that stage. In the meantime, the experience with Scratch (or Alice) will always be useful, provided they don't develop unrealistic expectations on how easy programming is.

  422. Go with Quartz by chord.wav · · Score: 1
    I'm going to answer your question:
    What's the best way to encourage his curiosity and enable him to learn?

    If you really want to reach him, buy a Mac (I know you prefered Unix or Linux, please keep reading), download the developer tools and start Quartz Composer. Man I wish I had this when I was a kid. I'm dead serious and I'm not a Mac fanatic. I was raised between computers and I've used PCs most part of my life. I'm about 30 years old now.

    If you haven't heard from it: http://en.wikipedia.org/wiki/Quartz_composer
    Here you can see just the tip of the iceberg of what you can do with it: http://vimeo.com/videos/search:quartz
    And you don't want to miss these: http://www.zugakousaku.com/index.php?ref=study-quartz-jp

    Now, it's way more than a cutie program to make visuals.
    You start by dragging patches and connecting points with instant ultra cool results. That's good, you don't want your kid to get frustrated by pointers and such (yet)
    Back to QC, once you've tried every possible patch, you'll want to apply some kind of logic to the compositions so you need to know what operators are, structures, etc (Learning has already begun).

    The most basic example of a Quartz composition I can think of: Drag a video input patch and a billboard patch, connect the output image from the video to the billboard and you can make the composition take the input from the webcam and display it onscreen. That was 2 drag-n-drops and connecting 2 dots. Try beating that. After that you can apply tons of filters to the image. This would be the hello world in Quartz Composer. Much simpler than a C hello world and way much more rewarding.

    Other things you can easily do:
    • Make a composition react to sound, video movement, any USB interface, keyboard, wiimotes, Mac's motion sensors, etc.
    • Use particle systems, make screensavers, animations and games
    • Mix videos, apply effects to videos and images
    • Make the composition read XMLs provided by a website and do stuff with the data.

    So, to answer your question, IMHO, this would be the BEST way to encourage his couriosity and enable him to learn a programming language. Think of it as today's logo (My apologies to anyone involved in Quartz or QC development, I'm trying to make a point)

    Hope you and your kid find this as interesting as I did.
    Cheers

  423. Re:Son? by sjs132 · · Score: 1

    Hmm... First, Easy to say as AC...

    Second, No she's not like that. Little bit of a partier and a happy soul, but still a geek. She had a few long term relationships, and things didn't work out. Decided that the long term goal was a family and decided she didn't need a reason to put it off anymore. So not really f*'d up, just realistic about age, etc... You've gotta realize that after a certain age, things are higher % for defects, etc...

    Anyways, this is more or less a post note so that I feel I've defended her in some sense.

    --
    --- Relax, that mass muderer is just trying to reduce our carbon footprint, one fetus at a time...
  424. You craven Liars! by sean4u · · Score: 1

    As if those were your first programs!
    I still remember my ZX81 code that hooked me on programming, burnt onto my retinas:

    10 DATA "Anne", "Barbara", "Caroline"...
    20 DATA "lingerie", "a nurse outfit", "nothing but perspiration"...
    30 DATA "touches", "licks", "kisses"...
    40 DATA ...
    100 PRINT G$(RND * G); " in "; C$(RND * C); " "; A$(RND * A); " my "; P$(RND * P)
    120 GOTO 120 - 20 * (INKEY$ = "Y") + 10 * (INKEY$ = "N")
    130 CLS

    He'll be able to edit that into shape in no time - but may prefer to work on it alone.

  425. Depends... by Bones3D_mac · · Score: 1

    Are you doing this because he wants to learn how to program, or are you imposing your own interests on top of his? The worst thing you could do when attempting to encourage someone to do something is to force it on them. I can't begin to tell you how many activities I truly hate now simply because someone thought it would be "good for me to try them" using scare tactics and coercion as a means of getting the desired result.

    (Needless to say, I'm not a fan of religion either...)

    --


    8==8 Bones 8==8
  426. To Get Interested, Provide Interesting Goals by crazybilly · · Score: 1
    I think programming is fun when you're creating something you'd like to see available, when you're accomplishing something either worthwhile or fun.

    I can spend enjoyable time on projects that seem like they'll be good tools when they're done. I have a lot harder time staying interested when the end goal is something else somebody else made up and told me to put together.

    so I'd say the answer is: what's your son interested in? web technology? kernel development? game? help him find the starting point for whatever, and encourage him to think up achievable first projects. From there, it sucks 'em in.

  427. Make him courious about concepts by malbrech · · Score: 1

    One of the things that sucked me into programming was realizing that I could play with concepts. I got my eyes opened when I first learnt about finite state machines. This simple concept is so beautiful and yet so powerful. That was 25 years ago, but it sure hasn't chaged a bit.

    I would take hands off from games -- it takes too much, too long until you have something that makes you proud. You want to make sure the road to satisfaction is right: short at the beginning, building up later.

  428. Re:Python 3.0 in months, bad time for teaching Pyt by idlemachine · · Score: 1

    This is the wrong time to pick Python for teaching. Python 3.0 is coming out in months. It's going to be incompatible with all the 2.x versions. There's going to be major changes that effect everything all the way down to "Hello World."

    That sounds like a big confusing mess to deal with explaining to a student.

    Link to python 3.0 info... http://www.python.org/download/releases/3.0/

    Python 3.0 will change far less than most libraries' APIs do between major version releases. If this is really such a deal breaker for you, trust me, noone in the Python community will miss you.

    Hell, noone in the wider programming community will etc.

    This isn't pointless change just to give the Python-detractors something to crow about. (God knows there are times I'd wish Python 3.0 had kept print as a keyword just so people like you would STFU about it.) When did improvement become so damn anathematic to people in the IT industry?

    It's change or die.

  429. Use a language designed for learning by Meriahven · · Score: 1
    To learn to program, a person needs the programmer mindset. At the bottom of that is the ability to run the program in one's head, thinking "If I were the computer, what would I be doing at this point of the program." This skill is not something that people are born with, it must be learned.

    This means that the beginner's language must be very simple, have a very clearly defined instruction set, and it must be able to keep the would-be programmer's interest for a long enough time for the lessons to sink in. It is entirely OK if the language isn't the current fad, useful in real life, general-purpose, or even Turing complete, as long as it is simple enough, and the output is something else than just boring plain text.

    I haven't tried programming Lego Mindstorms myself, so I'll have to stick to recommending Logo. (which, for a young teen, is not at all too childish.)

    The programmer will tell you when it is time to get to more "useful" languages.

  430. Let him exploit a Webgame by Silizium · · Score: 1

    I suggest to let him exploit one of those stupid and inhumane webgames that are out there in dozens. There is much fun in doing it and he will learn really a bunch of useful things about his system and programming also.

    For example:

    Take a look at a game like space4k.(com|de)

    Show him a bit of java programming, show him how to use a library to web-datamining/testing like httpunit and how to do some simple things with that. Also do some funny stuff with java and sql based on mysql or the like.

    Then go and try to build a working bot on that sort of game. Grinding-games like this one do not deserve that humans spoil their time on stupid clicking. But there is a great use for this sort of game: learning. And he will also will find out, that being smart is not always without problems, cause people really *hate* scripters in those kind of games.

    He will have fun, he will have a live response to what he is doing (very life, I promise!) and he will have all up and downs that come with such a job.

    By the way: programming in java and mining data, responding to web-forms is a really great sort of knowledge for the near and far future. Data is something like gold in our information society and to mine it with a bot is something like mining '49. It's just a game so nothing can happen, nobody is hurt (who counts).

    java, sql, httpunit

    Basetechnology with fun. And I promise if he even manages the captacha in the game he will be a smartass in programming and will lick blood.

    with best regards -
    most hated "player" of space4k.de

    -by the way- i just see a captcha down here in slashdot. It would be fun to crack that one, too...

  431. Re:Flashy GUIs by blankslate · · Score: 1

    I got into programming through (then Macromedia) Flash. The nice thing about Flash is that you can get immediate, visible results with very little programming; there are various ways to perform many common activities, with varying degrees of programming knowledge required.

    For example, you can 'tween' motion by setting keyframes and controlling the easing in the IDE, or you can script the motion using event callbacks and 2D transformations. Once you become comfortable with the IDE approach, you begin to find its limitations, and to understand the utility of a programmatic approach.

    ActionScript also has the advantage of having a lot in common with JavaScript, which offers easy entry into another domain where you can achieve a the satisfaction of getting visible, substantial results with just a little effort.

    My ActionScript started out crude but grew increasingly ambitious, until I left it in search of greener pastures - and found a range of more powerful languages. These days most of my code is server-side, and a substantial amount of it runs without any visible result (or user interaction) at all - but it was valuable (and encouraging) to me at that early stage to encounter such an expressive, sensory environment to learn in.

    --
    ---- death to all fanatics
  432. Teaching Programming by lsatenstein · · Score: 1

    I don't look at programming as a primary skill. What I think we should be doing is teaching algorithms. Then, in the teaching of algorithms, we ask the student to use a specific language or method to program the algorithm. In my view, the algorithm's implementation in the target language will drive the student to excel. The student will be learning something useful. Just to teach programming and doing a simple read/write to a file, or simple task will not develop the proper skills and in the latter case the student will not receive the challenge to master the language. A "for loop" in any language is still a "for loop", the student needs more challenges.

    --
    Leslie Satenstein Montreal Quebec Canada
  433. Kids and programming by cdobson · · Score: 1

    Drop *nix and get a computer with Windows. Its what they will get in school and most other environments. Get a book on programming games for teens. Something that has a good framework so it is easy to get things started. It should be all about having fun. The techinical stuff will come later - if he has an interest.

  434. How I found the love and passed it on by carrioki · · Score: 1

    I'm 21, and no one in my family is a programmer or anything similar, so I discovered programming through school. I'm not by any means qualified, although I do plan to be, so I'm coming from a totally 'lay' perspective. So, firstly, I learnt in Java, and despite the complete stupidity of the syllabus I was taught I absolutely fell in love with programming and have subsequently read more, improved, fixed the mistakes I was given and dabbled in Python and peeked at some others. My point here (though it isn't readily apparent) is that I think Java is a great language to start with, because it's relatively intuitive and predictable once you understand the basic structures, and there aren't tricky little words and symbols that make sense if you're advanced but not if you're 16, and it's clear, and especially because it has great documentation, that makes it easy to explore on your own. However, far more important then the language, is the love of the process. In my limited experience, when it comes to programming, it seems that love and aptitude go together - those who love problem solving and tinkering are good at it. And for me, there's not much that compares to the joy of creating a problem and solving it elegantly (by my own standards). So, (long story short) when I had the opportunity to tell a couple 16 year olds 'what programming is', I started by giving a problem: how would you draw a square using very simple commands? (one of them had played with Logo many years ago, as had I). When one came up with the simple answer, he was in ecstasy and rapture! And since then, I've corresponded with him, giving him little tidbits and hints that I've gleaned in my self-teaching and practice since school, to supplement his silly syllabus, and he's loving it and doing well. I've also realised that my simple example problem is easily extenable. Seeing as there are only two commands repeated four times, you could introduce the concept of looping - but guide him to the idea before you teach him the implementation in any language. Then what if you want to be able to draw any shape? That leads to variables, and so on. But essentially what I'm saying is guide him to the principles first, then show him how to implement them, and let him make his own problems (I mean bugs, not a project he can do) along the way. Start him off with text applications, using command line and text editor, because that's actually more fun! (I started with a horrible little IDE and unnecessary boilerplates). Such problems as a half-pyramid of asterisks is wildly invigorating the first time you do it. And file IO and interactivity, and pretty GUIs are the kinds of things that keep it fun and interesting. (And if he can make a simple game - hangman, for example - that's perfect). Game modding and kernel hacking and writing in machine code may be fun for experts and geniuses, but for an average boy of 16 (or even 21) that is daunting and something just to be skimmed and envied - the prospect excites me, but I wouldn't want to start there. Also, as I said, I picked it up at about 16 in school, almost by accident (I wasn't very good at accounting, and that was pretty much the only other option my little school was able to offer), and that served me fine. There are things I had to relearn and unlearn, but that's just made me better at it. So encourage him to take it up at school, and let the professionals do most of the work, while you can help him and guide him from the side. No shame in that! That said, if he doesn't have the natural love of it that you and I do, there's not really any point in encouraging him (same way there's no point encouraging me to take up professional golf). It's something that people either fall in love with at first sight, or just don't really care for, and if he isn't in love with it, he won't get the pleasure you do from it. Just my long and meandering 2 cents worth. I hope it helps, and I think it will.

    1. Re:How I found the love and passed it on by carrioki · · Score: 1

      Whoa! Sorry about that folks! It was my first slashdot message and apparently I haven't yet figured out how to format it properly (in terms of line breaks).

  435. Real world projects by MrBlic · · Score: 1

    I remember that my favorite TRS-80 Color Computer projects were the ones that had some sensor or link to the real world. I would use CDS cells to tell if anyone was walking up to the front door, and then have it play some spooky sound...

    Today, I'd try to work a Wii remote and a webcam into a project, and have it do something that your son will have to show all his friends... PyGame lets me do things like play sounds when my son jumps on a DDR mat... (He's three, and I use his voice for the sounds.) Projects like this hopefully contrast nicely with that impersonal plastic feeling that you get in a toy store these days.

    Python would be my choice of language... although Flex would be fun too. At some point, expose him to some assembler and C just so that he starts to develop a model of what is really happening inside the box when he programs it.

    --
    Celebrate Excellence!
  436. Then give him the tools to succeed by visiondancer · · Score: 1

    Programming is something I dabbled in since I was 11, copying BASIC programs out of the back of Boy's Life magazine, I think. But I didn't really understand it, and I didn't really think I could succeed at it, until I learned how to use a debugger.

    I think one thing that really prevented me from understanding programming was that I couldn't see what was going on underneath. I would code a program, run it, it would die with the message "Segmentation Fault," and I would have to go over the program again with only a small idea of where it had failed. Using a debugger to go through it line-by-line, and look at all of the current values for the variables, was a tremendous boost for me, not only in ability, but also in confidence.

    Unfortunately, no one really showed me how to use a debugger, especially early on. It was something I had to find accidentally at age 22 or so; I think it is taken for granted sometimes. The closest I came to seeing a debugger in a class was a 10-minute overview of Eclipse in a 300-level Software Engineering class, and that was after I'd taken at least six programming classes.

    The best thing you can do after you have a good project picked out is help set up the environment and show him the tools a programmer has at their disposal.

  437. Encourage your son THIS WAY!!! by brothertruffle880 · · Score: 1

    If you love your son, encourage him to NOT study programming.

    Even if he gets straight "A's, his competition for a job in technology won't come from around the neighborhood, it'll come from around the world. Why hire a Bachelor's degree graduate for 60K when you can get a PHD for 30K in India, China or the Phillipines?

    Tell your son to study air conditioner repair, auto repair, plumbing or carpentry. These jobs, although similarly subject to salary deflation due to cheaper offshore workers coming into this country, can still be viable income sources for enterprising and competent young adults.

    Longer term, the salary deflation present in technology isn't likely to improve. R&D spending by the big tech companies isn't likely to improve anytime soon and start ups are hard to get one's foot into. You must encourage your son to pursue economically viable professions.

    Best,
    BT

  438. Hacking 101 by gbickford · · Score: 1

    Boys like to break stuff. Show him how to crash a machine remotely on your home network. Explain how to analyze a system to compromise it. Show him the movies Sneakers and Hackers.

    As a parent you are also in a good position to teach him the ethics of white hat hacking.

    This should give him motivation to learn how to program and develop a deep understanding of how systems work.

    It worked for me.

  439. TI-BASIC by ReptilianSamurai · · Score: 1

    Oh man, brings back memories. My first programming exposure was QBASIC with help from my dad and a book called QBASIC for kids (or something like that, it was actually targeted for children programmers! How many books like that are there today?) But I didn't return to programming until middle school with... yes... the TI-83. (Not +, which came out the very next year to my chagrin).

    I started with simple number counting programs, progressed to moving things around the screen with getkey and output, eventually made a little racer-type program.

    I continued to improve, however, and you'd be amazed what you can do with the very limited BASIC language. By high school graduation I had made small rpgs (never finished them sadly, but it was fun to battle and level up), a minesweeper clone, and my personal favorite Gravitation, a connect-four style game for two players of my own creation. I long since abandoned GOTOs, even to the point of coming up with my own graph-screen based menu system to replace the built in one that is hard-coded to GOTOs.

    There are a lot of handy little tricks you can do in TI-BASIC, for instance, if you start a line with " you can make it a comment (it is a string, but it is ignored if it isn't assigned to a var). The most recent piece of data is always automatically stored in the ANS temporary variable, so you can use it to pass arguments between subprograms. While variables are global and limited to the alphabet (and theta), you could define your own lists and use those instead (or use them as arrays). I even mimicked recursion in my minesweeper clone by using a list as a stack. (I had to use two programs, however, since I don't think you can have a program call itself). For graphics, it helped to set the window size to values between (0,0) and (64,-92) [I think those were the pixel counts, but correct me if I am wrong] so that to match up pixel position with other graph functions (such as line) all you had to do was reverse the order of the X and Y coordinates, and make the Y value negative. Once I figured out that trick, graphical programs were a breeze.

    The constraints in TI-BASIC also really force you to think outside the box as a programmer. Space is incredibly limited, so you learn to make every byte count, and optimize code as much as possible. Additionally, the processor is slow, so you learn ways to improve your algorithms for speed.

    Sure, you could program ASM programs. But for me, the weaknesses of BASIC were all part of the challenge. (Plus there was the advantage of being able to code it directly on the calculator, especially when bored in class). Others liked wasting time playing games on their calculators. I always had more fun making them myself, and it was around that time that I realized I wanted to make programming into a career.

    I'm still tempted to pick up a TI-84+ silver to replace my crummy TI-83 with-no-archive-memory. I miss programming the thing.

    --
    I installed Linux on a car, but it crashed due to bad drivers...
    1. Re:TI-BASIC by ottothecow · · Score: 1
      Just beware, the old style TI graphing calculators feel bombproof. I have seen countless ancient 83's as well as my well used 83+ and my newer 89 (the old style) and they just keep chugging along.

      The new style ones (84, 89ti) all feel cheap andthe buttons are not as nice to use.

      --
      Bottles.
  440. The best way.... by Skitt+1 · · Score: 1

    This is my first post here. To get your son interested in programming is not the question; he already is. The task is to get him to actually program! I feel that the best way is to pick a language (I like C++), get him SIMPLE books (I like the "For Dummies" books myself), and then set him tasks that you applaud when accomplished. The applauding is VERY important! I suggest graphics oriented tasks such as: Make a word move on the screen. Make a ball move up and down. Draw a square with corrected aspect ratio. Make a ball that bounces around the screen. I suggest Text oriented tasks such as: Make a quiz using Data statements. Make a math quiz with random questions. Make a "Mad-Libs" game with user inputs. Make a scrolling "Times Square" sign. Limit his access to libraries of functions for now. Show and encourage him to to create his own library. Remember: Your son may not actually "take" to programming. He may not be as fascinated with the feeling of power we get from controlling a machine as the rest of us are.

  441. Java by nitroamos · · Score: 1

    I would recommend a class. For myself, and probably others, it really helped to have a teacher who know which bad habits to discourage, and who be able to set up the details (compiler, header files, etc) so that all you need to worry about is writing your program. I tried to learn things by "reading a book", but that never worked.

    I felt like Java was a good place to start. I was a TA for some summer school Java at the U of Minnesota, and we had several middle school age kids. Java is nice because you can do all the regular learning-to-program stuff, but it also has a lot of simple graphics capabilities, which was the only thing the kids were really interested in. The goal was not to teach the language, but to provide a constructive play environment. Like Legos.

    Anyway, I would investigate your local universities and community colleges to see what kinds of summer programs they have.

  442. Same Situation: What is working for my son by ToInfinityAndBeyond · · Score: 1

    I have the same situation; a 14 year old son and he wants to learn to program. I am teaching him to program using Python and Pygame to create a simple 2D game. It is working great; he is excited to learn new concepts so that he can add new features to his game. I am glad I didn't start him on PERL or C; I can see now that Python is a quick way to learn to program. He can learn other more specialized languages when he needs them. Pygame provides libraries that allow him easy access to what he wants to do.

  443. The problem with open source by acheron12 · · Score: 1

    The simple programs that everyone thinks of writing ... have already been written. Most of them are on SourceForge.

    Googling an idea and seeing ten free programs that already do that is a great way to drain the excitement, I can tell you.

    --
    there is no god but truth, and reality is its prophet
  444. anyone remember the power cartridge ? by KingBenny · · Score: 1

    Do things like the old power cartridge for the commodore 64 still exist ? I remember watching all those demo's with their funky interrupt calls who were like able to use more than one colour at once in the outer border of the screen ... the plasmascreens (omg!!!) and much more ... i wanted to know HOW they did that, an the power cartridge, with its ability to freeze the computer at the exact moment where it put something on the screen was like the best tool i ever had, it got me onto assembler cos basic was (and in fact still is) way too slow to get anything useful done (and isnt all that good in helping you understand how the machine itself works, which is, imo , basic to decent coding)... no ? i must have been 10 or 11 at the time so if i can do it ... i'm sure anyone can :=)

    --
    Free speech was meant to be free for all... how can anyone grow up in a nanny state ?
  445. How I learned by rlhawk1 · · Score: 1

    My Dad was/is a programmer, and I always wanted to make games. I started trying when I was 11, trying to use engines and toolkits like rpgtoolkit , 'Custom' and a few others. There's a big list here: http://www.ambrosine.com/resource.html

    The problem was, they couldn't do exactly what I wanted, so I was always trying to use their little scripting languages for things they were never intended for. I always thought programming would be too hard though, and maybe it would have been at that time. I don't know. But when I was 13 or 14, I did learn C++, my first language. Basically, I just learned it from a big book my dad has. First I went part of the way through 'Instant C++ Programming' by Ian Wilks, and then I sopped learning for a while, and came back using 'The Waite Group's C++ Primer Plus' by Paul Snaith. C++ Primer Plus is a much better book, because it's newer, and teaches OOP better and stuff, but Instant C++ Programming might have been better for starting. For example, the C++ Primer Plus didn't even teach about if statements until the 5th chapter! So I was using 'while' loops, not to loop through stuff, but in place of if statements, because I wanted to use conditional stuff. But anyway, that's how I learned - just using the book, and trying to make games. I wanted (want) to make a big RPG. So, I started off with a VERY simple text based game, where if you pressed 'm' then 'Enter', it attacked in melee, 'M' and 'Enter' attacked with magic, and 'b' and 'Enter' attacked with a bow. You got experience for using each of those, and different stats went up or down depending on which you used most. I was /very/ ready for graphics by this time, even though I didn't even know about C++ classes yet, so I started using allegro. I began by simply using it to output text in a full screen environment, and enjoying being able to do stuff with single key presses. I then drew my own font to use for tiles, and then dropped that and began work on a space shooter game with my older brother. He still does most of the graphics and planning for our games, while I do all of the programming. We actually almost completed the engine for that game, but before we did, we moved back to what we /really/ wanted to make - a role playing game. I was able to start it knowing much more about both C++ and allegro because of the previous things. And that's where I am now. So far I've written about 13,000 lines of code on it. Unfortunately, now all my time is spent doing web development with my other older brother. All the C++ definitely helps me to learn anything new. I think it's definitely still my favorite though. ...and I'm only eighteen...

    I guess in short, I was inspired to program because I wanted to make games, and I didn't want to be limited by using toolkits.

  446. Programming Contests perhaps? by shalinmangar · · Score: 1

    Introduce him to competitive programming contests like TopCoder and other programming contest archives such as UVa and spoj.pl

  447. some books are good by The+Hurt · · Score: 1

    there are some books like c# for sharp kids. it is little but encouraging. it shows the programming concepts like simple everyday things. worth a try

  448. The J language by DavidHumus · · Score: 1

    OK - here's where I recommend J (jsoftware.com) as a first language, you all flame me, I call you all a bunch of clueless boobies, and it goes downhill from there.

    Ready to get started?

    Anyway, since we've already had a number of posts like this, it would be interesting to have some follow-up: what did people end up doing and how were the results?

    Personally, I've had no luck getting my daughter interested in programming but she is very much into music composition, so I guess that's something. She did show some interest in an "Eggbert" game when she was little - it lets you design Eggbert video game landscapes/obstacles/rewards that were pretty cool. She was also interested a little bit in some of the J to do some math that could be represented graphically, like pictures of Pascal's triangle modulus some constant - see http://www.jsoftware.com/jwiki/NYCJUG/Projects/Pascal .

  449. Re:PHP will ruin your mind, but Smarty is worse by SimHacker · · Score: 1

    You are absolutely wrong about Smarty, which is a horribly conceived and implemented disaster. Don't be such a yapping apologist, just because you managed to throw together your home page in PHP without knowing any other languages.

    I am speaking from experience, having had to use PHP and Smarty, and having read the source code to Smarty in an vain attempt to figure out how it worked and why it was so difficult to get it to do even the simplest things correctly. I've been much happier using other better designed templating systems, which I will describe below.

    You should read Wolf's Rants about PHP: Truth about short open tags and Smarty.

    After this point, the discussion about the tags comes from shopt open tags to "then what should I use for templating?!? and people would go "Wooo! Smarty! Go with Smarty!", and would make me slap people senseless just for saying that. Just as hating PHP for number of damn good reasons, I have a number of hating Smarty to go along with it. Brace yourself, because here it goes:

    1. Smarty is programming language
    2. Smarty is overkill in majority of cases
    3. Speed: Smarty isn't a solution. it's the major problem.

    and here go the details about stated points above:

    1. Most people would argue, that Smarty is a good solution for templating. I really can't see any valid reasons, that that is so. Specially since "Templating" and "Language" should never be in the same statement. Let alone one word after another. People are telling me, that Smarty is "better for designers, since they don't need to learn PHP!". Wait. What? You're not learning one programming language, but you're learning some other? What's the point in that, anyway? Do us all a favour, and just *think* the next time you issue that statement, okay?
    2. I think, that "overkill" is an understatement. You're trying to disguise simple outputting in a complex set of classes,which implements a programming language inside of it -- Definitively overkill". "But it does caching". No, not really. "Caching", in the terms of Smarty is nothing else than converting that template code into PHP. See? I told you there is no point in using Smarty. It doesn't make your life easier. It doesn't make developer's life easier, and it doesn't make server's life easier.
    3. The previous paragraph says it all about the speed slugs in Smarty, but I feel the urge to recap that:
    1. "caching" mechanism sucks. It's not a proper caching. It's just a conversion of one interpreted language to another one. and in very unoptimized way. If you want to do the proper cachin, go with APC, Zend optimiser or EAcellerator.
    2. The implementation of one interpreted language in another interpreted language does nothing but slow everything down

    I use Drupal for my home page, so I know first hand that it sucks, and why. My dislike for PHP comes from hands on experience, writing and reading PHP code, not just reading web pages about it. PHP is not my only programming language, so I don't lack the perspective to compare it to other alternatives.

    Python has a wide range of templating systems, some of which are much better than Smarty, and a few of which are almost as bad (but none are worse).

    Zope uses DTML, which is unstructured and messy but gets the job done. It also has TAL and METAL, which are cleaner and more powerful, but an incredible pain in the ass to use, and extremely verbose and clumsy. I've written a lot of DTML, TAL and METAL, and I don't want to ever use them again, because I've found much better Python based templating systems since then.

    TurboGears uses Kid, which is a very nicely designed an implemented templating system that provides a thin XML veneer on top of Python, and doesn't try to reinvent its own p

    --
    Take a look and feel free: http://www.PieMenu.com
  450. Get him Revolution Media or PythonCard by Budenny · · Score: 1

    Get him Revolution Media or PythonCard. He'll move on in his own time from either.

  451. SVG + javascript by JucaBlues · · Score: 1

    I have been experimenting with javascript and SVG to make animations for the browser.

    Look at this game: http://bighead.poli.usp.br/~juca/code/svg/minigame/minigame.svg

    I am now considering to use this to help my teenager cousin. He wants to lear programming and my parents asked me to provide some help.

    I agree that it would be great to provide immediate visual gratification. Then, that is why I suggest SVG+javascript instead of the usual HTML+javascript. Because it is much more interesting to draw an SVG in Inkscape, open it in a text editor and attach a script tag than it would be to explain to the boy all those crazy, non-intuitive CSS stuff.

    Also, it is a field that provides good oportunities for teaching various concepts, such as XML, (let the boy see the SVG both in an editor such as Inkscape and also in a text editor), DOM handling (getElementById, setAttribute), and even AJAX (when the kid wants something more advanced)!

    The benefits:

    1) the kid will be learning reusable concepts. All he/she learns can be used also in html. Learning these in an intuitive and friendly environment first makes the html/css stuff less frightening I guess.

    2) it will be based on web standards

    3) after a quick class about hosting files on a server, the kid will be glad to show his work instantaneously to his friends online. Before that he/she can perfectly work offline editing local files.

  452. DOT DOT DOT by J172 · · Score: 1

    Alright, well you asked for the input of a high schooler... Okay so I'm a Senior in high school. I started programming with BASIC and HTML.. Python might be a good start but depending upon the age might be a little complex.. I'm also wondering why your steering him towards *NIX. Thats a mistake right there, I've been forced to use a single OS since I was little, playing games on the lap of my grandfather (an original IBM geek), back on DOS, then on Windows until recently when I bought my own iMac. *NIX is great but forcing him in one direction will limit him. A true programmer should be able to compile code an any OS hes thrown at. Which means if the code is a different dialect, he should be able to convert it, now I know that no one can ever hope to know all the dialects and all the programming languages, for there are far too many. But don't just sit him in front of lenny and have him code exclusivly on one OS. What I think you should do is just see if he shows enough interest in programming to actually sit down and learn the stuff. If you throw it at him, he might loose interest, or it could flourish, who knows. If you really want to peak his interest, just *tell* him about AJAX and go to Facebook or another popular site that heavily utilizes it, show him what AJAX does compared to HTML alone, or simple PHP. That would have caught my interest a long time ago, should it have existed. Leave a editor or IDE window open and blank, and a programming book next to it (go out and buy one even). Tell him your leaving to go do errands (and actually do it) if hes interested you might come home to a new program being created, or a second Hello World, the point is if he decided to do it when he was alone, he'll be interested enough to pursue it as a hobby. Thats my two cents.

    1. Re:DOT DOT DOT by J172 · · Score: 1

      P.S. I agree. With dvice_null, dont teach multiple languages at once, I tried that when I was 16... uhh yeah...Just dont =p. P.P.S. You should be happy, this is the post that finally made me join Slashdot =p

  453. Parent is awesome; AS3, Flex, and Flash by arete · · Score: 1

    Late to the discussion, I would've modded the parent up, but it's already at +5.

    Actionscript 3 is strongly typed and OOP, so it won't teach the bad habits of some introductory languages.

    For the artistically/animationly inclined, Flash gives you tons of power there. For the more programmatically inclined, Flex is an awesome programming environment that gives you all the application power of Flash Player using MXML, an XML layout language. Both are Actionscript 3. And I agree that there's tons of community. Being web based, it's trivial to share with lots of people.

    But most importantly, the investment to build an interactive GUI application in, say, Flex is, in my opinion, as low as it can be and still be a full featured programming language. I'm sure you can build a non-interactive application just as easily in a lot of languages, but applications now, even trivial ones, should be able to let you show things on a screen and click on buttons. I think this is really key. You can DO something, something modest but still cool, and grow what you know by learning to do one more thing at a time. So without teaching you tons of bad practice, you can learn fairly incrementally. (Obviously you should grow up and learn more structure at some point... but that's later.)

    If it wasn't clear I think whoever else in the chain said that it's better to start a kid by making them bash their brains against some really initially unrewarding stuff for the big payoff later - where the payoff is big BECAUSE it was hard - is basically crazy. I mean, if the kid WANTS to, they can go ahead. But if the goal is to encourage the programming itself, that's pretty crazy. The goal of that unrewarding stuff would be to make them set and work for long term goals... an admirable skill to learn, but one that's learned by extending what the kid WANTS to work on... you can't both move them into something they don't care about AND set the goals far ahead. It's fun to remember that I wrote stuff in assembly, but only a few people would've kept with programming if that's where they started.

    --
    Looking for freelance Actionscript (Flash/Flex) or ColdFusion work and/or freelance developers. Email me, put Slashdot
  454. Actionscript vs Javascript by arete · · Score: 1

    I'm late, but someone else posted and I replied about Actionscript elsewhere in the thread. I basically think you're completely on target about the goalset of being able to quickly leverage GUI power. But I believe Actionscript (Flex, Flash) is a much better first-choice.

    Actionscript is much more consistent than browser JS, which makes it less frustrating to develop in. (I'm not trying to say this is a philosophical problem in JS, and indeed Actionscript is also an ECMAScript language, so they're very close. This is basically just browser divergence, and the political causes of that are beyond the scope of this post.)

    In Flex (compared to a browser) the layout language is MXML instead of HTML. MXML has powerful features that expect to interact with Actionscript. And HTML is less consistent, and CSS is browsers is less consistent, for the same reasons listed above.

    MXML makes it trivial to add considerably more complex GUI elements, like a tiled list of images or a pretty chart. (Trivial as long as your data is in a convenient format, XML setup the way it expects. If your schema is different it's still easy, but it's more than 3 lines of code.)

    --
    Looking for freelance Actionscript (Flash/Flex) or ColdFusion work and/or freelance developers. Email me, put Slashdot
  455. careful... by ingenious+nor · · Score: 1

    I'm 20 right now and I study computer science at a n university. About ten years ago I started being interested in programming. My dad thought it was great(he's and engenieer and no programmer, but still) so he asked some folks for advice and I ended with a huge book about visual basic 6.0. It was new, it was easy, it was trendy... and I hated it. So I returned to playing starcraft/diablo/whatever. A couple of years later it just happened to pass that I got my hands on a book about C by H.Schildt and it was love from first sight if you know what I mean.. Now I'm pretty much aware that I've inherited some pretty bad habbits from his books, but I don't care that much about it, I'm trying to improve every day as it is :) So my advice is - don't make any choices for your kid. Show him as much as you can and let him decide. He might love Python, and he might not. He might love graphics, and yet again - he might not.

  456. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  457. Screaming at questioners is good for learning how? by leftie · · Score: 1

    The above over-reaction is a perfect example of why right now is a bad time to use Python to teach a new young programmer. Wait at least a year until all the Pythonistas aren't as oversensitive to questions about Python 3.0.

    Imagine some poor kids who dared to asked about why the print statement is different than it was last month on a python message board or mailing list getting this kinda crap?

    "If you don't understand the new print staement, LEAVE. Trust me, noone in the Python community will miss you! Hell, noone in the wider programming community will etc."

    "Shut up. Just learn to like that new print statement. It's CHANGE OR DIE."

    And God have mercy on the poor kid who asks the Pythonistas about why they are going to the trouble of breaking python, but not addressing the it's huge concurrency problems while it's being broken.

  458. Re:Screaming at questioners is good for learning h by idlemachine · · Score: 1

    You really are a dopey little fucker, aren't you? I'm not entirely sure how your uppercasing my words makes me the one screaming...

    Wait at least a year until all the Pythonistas aren't as oversensitive to questions about Python 3.0.

    You didn't ask any questions, you made unsubstantiated claims that weren't supported by anything, not even the link you posted to. What the Python community is 'oversensitive' to is lies and bigoted rhetoric. What I did was highlight your bias and inaccuracy, the audacity of which has clearly shaken you.

    Did Python murder your parents before your eyes at a young age or something?

    not addressing the it's huge concurrency problems while it's being broken

    And out comes another tired old trope. You clearly don't know about the multiprocessing module that's being released with 3.0. But again, don't let the facts get in the way of your bullshit posturing.

    The only "concurrency problems" Python seems to have at the moment is the lack of a 'make this run in parallel without me having to do any thinking' switch. Good luck with waiting for that.

  459. Re:Screaming at questioners is good for learning h by leftie · · Score: 1

    idlemachine" "You really are a dopey little fucker, aren't you? I'm not entirely sure how your uppercasing my words makes me the one screaming"

    Please demonstrate to us all how there is a "calm voiced and rational" manner in which you said...

    "You really are a dopey little fucker, aren't you?"

    "Did Python murder your parents before your eyes at a young age or something?"

    "If this is really such a deal breaker for you, trust me, noone in the Python community will miss you.

    Hell, noone in the wider programming community will"

    "God knows there are times I'd wish Python 3.0 had kept print as a keyword just so people like you would shut the fuck up about it."

    "When did improvement become so damn anathematic to people in the IT industry? It's change or die."

    Someone posts batshit crazy statements like those... it's a given they're screaming rants.

    And as I've said in two posts and you have proven for me, idlemachine... the reason one should not teach Python to a young programmer isn't the language, it the changes that are a couple of months away that are going to make all the current tutorials and learning resources wrong, as well as the furor and instability surrounding the Python community] right now. True believer Pythonistas, as idlemachine demonstrated, are very, very oversentitive about the topic of Python 3.0 changes and detonate at slightest suggestion that everything now and in the future perfect in Pythonland. It's just not the place for a young learner to be right now.

  460. Re:Screaming at questioners is good for learning h by idlemachine · · Score: 1
    Nice removal of the context, there. I particularly admire how you don't address any of the points I raised (how the 3.0 migration path docs don't agree with what you're claiming & the existence of the multiprocessing module especially) and are instead continuing trying to paint anyone who disagrees with your "opinion" as some kind of jihadi.

    Good luck with that.

    Here's a little hint before I go: try actually backing up your claims with some external evidence, you might come off less as a whiny little cuntsmear that way.

    Might.

  461. What's the topic?"How To Encourage a Young Teen To by leftie · · Score: 1

    Look at the title of the thread, dumbass.

    "How To Encourage a Young Teen To Learn Programming?"

    I am the one who's been on point and in proper context the whole discussion... what is or isn't a good language for young programmers to learn right now. The subject these various aspect of the Python language you keep on trying to change the subject to, and it never was. It's whether or not the upheaval surrounding a language (Python) that has chosen to make itself obsolete in a couple of months is an appropriate choice to learn right now.

    You, on the other hand, are exactly the type of hypersensitive Pythonista fanbois who prove part of my argument that Python is not a good language for young learners. Nobody is going to learn anything from hypersensitive argumentative assholes like idlemachine. The only thing a pythonista fanboi like idlemachine is going to do to a young programming student is make them quit programming before they even get started.

    Anyone that dares try to raise a question about the one true faith of the Pythonista gets treated just like I have here... with a level of outrage normal human beings only display when they find out one of their siblings have been murdered or their mother was gang-raped.

  462. Re:What's the topic?"How To Encourage a Young Teen by idlemachine · · Score: 1

    I'm sorry, I meant to say hyperbolic little cuntsmear.

    My mistake :)

  463. Re:What's the topic?"How To Encourage a Young Teen by leftie · · Score: 1

    idlemachine, who a few posts before this said...

    "Did Python murder your parents before your eyes at a young age or something?" ...dares to call someone else "hyperbolic?"

    LMAO!

  464. And you claim you aren't idlemachine, huh? by leftie · · Score: 1

    So you claim in the middle of the night, you claim you are some other anonymous individual who just happened to find and start reading a 2 week old 1000 post thread and further you read this many posts into idlemachines ranting, too, huh?

    Damn idlemachine, that's sinks to a new low around here. Someone has to be just sick with desperation to try to create fake agreement posts.

    Really fucking desperate. Hillariosly so! ROFLMAO!