I work in IT in schools and this is a big bugbear for me. The stuff they teach is atrocious. In some secondary schools, they barely approach LOGO. Some of them do HTML, thinking that's "advanced computing" but the HTML they use is about 10 years out of date... I've seen 18-year-old's using BLINK tags in their A-level submissions. By my definition, there is no programming language taught, anywhere, to kids under about 16. They might do an Excel formula - even from as young as 8 - but even when they are 18 they struggle (and things like
are considered acceptable in an A-level project!), or run a turtle or LEGO model around the floor but we're talking the essence being IF and GOTO. That's *fine*... for a 6-year-old.
I was 8 when my dad bought me a ZX Spectrum with the little orange BASIC book. My brother had little interest in programming at that time, my parents knew nothing about computers. I sat and read the book and despite skipping the whole UDG sections, I was able to make games by myself, self-taught, as I'm sure most kids who tried at the time were. By 11, I was using the computer to do my maths homework. By 16, I was writing software to post on the Internet, teaching my own A-level computer studies class, teaching the staff how to program, and writing games on my calculator during lessons. I haven't met anyone who can program effectively who *wasn't* from that era. I'm sure they exist but they are probably only enthusiastic about it if their parents were, or they join a community that is. The default of just going through school with modern hardware does not inspire any coding skills whatsoever, and what skills it does give are horrendous or just plain lazy.
I had a work-experience student under me last year. He was 15, top-grade student, privately-educated, wanting to become an engineer (but he couldn't get work experience doing that, so he ended up following me around the prep-school I work in instead). He had never touched a programming language in his entire life. In the space of ONE afternoon, I talked him through a simple dice game and I taught him BASIC (using QBASIC from the DOS-program downloads that MS still offers hidden away on its website). He came in the next day with an "old-school" game (i.e. not pretty, but obviously representative of the game he wanted) that he'd written overnight. I spent the entire next day with him because he had so many questions. These were quite simple and obvious to me, but to him they were a mystery that slowly unfolded. (Basically, I demonstrated that everything was basically putting a number somewhere in memory and manipulating it - he asked about RGB colours, 2D graphics, about joypad control, about printing, about 3D graphics, about textures, about collision-detection, about physics engines, about online multiplayer, about AI - when he saw that it was all done by manipulating numbers in certain ways, his understanding of what was possible increased enormously).
So, the kids are no worse than they used to be in our days, they just lack any sort of insight or enthusiastic mentor to show them what they can do. The teachers are the problem really - they can't program, they can barely operate a computer, they think that baby click-and-drag "flowchart"-style programming is advanced for 18 year-olds and they have no idea how to make any non-trivial program where the kids could say "Oh, that's just like the game I play on Facebook" or similar. I've also noticed that IT teachers tend to be the WORST at this. Even in primary schools, I can find someone that programmed in their youth (usually mathematics teachers who used Pascal or FORTRAN) and they aren't allowed to teach what they know because the IT-teacher "knows better" (i.e. they have a tiny little freeware LOGO program installed by the system admin for them - because they have no idea how to use the computers themselves - and if it differs in ANY way from the LOGO they know, they die mid-lesson). Most British primary schools use this: http://www.softronix.com/logo.html because it comes loaded for free with RM networks (who basically try to take credit for it and think that justifies several hundred pounds of "software pack" for every networked machine). What's embarrassing about that is that my work-experience student could write a better LOGO interpreter than that after one afternoon of learning BASIC.
Kids aren't taught programming languages EVER. That's no big deal, I was never taught a programming language either, really, until I was in University (but that was Java and I'd been programming in that for years before I ever got to uni). The problem is that, as that article points out, there are no simple tools with which to program any more. The free BASIC interpreters are, on the whole, naff or overly complicated (Gambas, FreeBASIC, etc.) and extremely niche. It's embarassing that QBASIC is still actually quicker to program in and easier to use, and you KNOW that it will work. I've seen some that even try to emulate GCC in its command-line nightmare. Visual Basic 3 / 4 was actually fun, usable, quick, simple and fast enough to do everything you wanted. I can remember paying £70 for VB 3.0 when I was about 15 because by then I knew that I could make some use of it - damn that was a lot of money back then. VB 5 / 6 and beyond RUINED the whole thing by trying to make it object-oriented. I have kept hold of my original VB 3 & 4 disks because of this. Knocking up a simple systray app in about 10 lines of code that works on every Windows from 3.1 to XP is no mean feat, though I haven't yet tried it on Vista or 7.
Kids these days, even on this forum, are pushed towards Python and similar languages. I can't even begin to get on with them because I know they are far more complicated than necessary. But you can still teach a "spoiled" private-school kid with iPhones, laptops and PS3s how to program in BASIC (QBASIC as well! He'd never even SEEN a DOS window before) within a few hours and make them enthusiastic and curious. I think kids need some hand-holding these days to get on the right programming track, but they often get side-tracked by programming-nazis who ONLY ever want them exposed to C and Haskell (I blame Djikstra for this - GIT - although I have to give him credit for vast portions of the maths that I love - graph theory). The opportunity for kids to just pick up and learn a programming language is gone - there are too many, too many people telling them what to learn, and yet so few of them ever actually get on to learning anything because of that. BASIC might have created a million "bad" programmers, but it created a million programmers - and a handful of those went on to much bigger and better things. Hell, most of the games industry is filled with people who started on BASIC on an 8-bit computer and by selling tapes of programs from their basement before they were even 16.
It's a sad situation, made worse by people who push towards "the one true language". When your child starts writing, you don't give them a fountain pen and expect calligraphic handwriting and an essay on Shakespeare in iambic pentameter followed by Latin declension. You get a HUGE crayon in a bright colour, and so long as the resulting squiggle is mostly on the paper, that's fine - not eating the crayon afterwards would be considered advanced. BASIC gets too bad a rap now from people who claim to know how to teach kids. In education, like in learning to walk, the first thing that matters is some kind of vague outcome - the child moving towards you in some fashion. The method - crawling, stumbling, jumping, walking backwards, rolling over on their side etc. - can be refined later. Some kids are extra bright and can be taught C++ from the outset, but if you start with BASIC and then later move on to something more structured, they will learn as they go and learn the reasons why certain things are done. Usually when they hit the first infinite-GOTO loop.
Kids today do not get any sort of education in programming. It's also almost impossible to discover one through the noise of the Internet. When I tell my teenage cousins that I "write games" they are so amazingly in awe, it's ridiculous. Do your kids a favour. Spend a week in total over the first ten years of their life getting them to program in any language at all, writing any program at all, in any operating system at all, on any device at all. It doesn't matter what. If they aren't interested, fair enough, but there is no way for them to just pick this stuff up any more - and do NOT rely on their school doing a good job. More maths teachers know how to program in any language at all than IT teachers.