re: Should All High School Students Learn Programming?
Okay, I've got to throw this in -
When I was in high school (back in the stone ages) in a small town in Virginia, it was REQUIRED that all 8th graders have one semester of Computer Literacy. Period. We had to learn keyboarding, word processing (with Word Perfect 5.1), spreadsheets (Multiplan) and simple databases (Paradox) as part of the curriculum.
Now, granted, this isn't programming, but for a small, "backwoods" Virginia public school system to be thinking like this during the Reagan administration speaks volumes.
Of course, we also had the option to take Computer Science I (BASIC), CS II (Pascal), CS III (C, although the only person to ever make it to CS III was already versed enough in C that he could have taught the class). I ended up taking CS I when I was a senior, just to have something to do and could have taught the class since I had been programming in BASIC (interpreted and otherwise) since the early 80s.
What I think would be much more important than teaching the syntax of a specific language or package would be to teach basic software engineering skills - being able to look at a problem logically, apply logic to solving that problem, develop a strategy of solving that problem and then implementing the code to solve it.
Teach the entire software development lifecycle, not simply something with a little more depth than being able to put "Hello, World!" in a window on a screen using a specific language on a specific platform. I believe the idea of transferrable skills is going to be much more important when a student goes on to higher education than it will be to know how to write code in a specific language.
Real world example time - how many folks learned COBOL 30+ years ago that kept up with technology and now code in something like Java, Ruby, etc.? Does knowing COBOL syntax really help with modern programming languages? Now, does knowing how to create, organize and analyze code translate better for use with more modern languages? Technology changes, students need skills that can keep up with those changes.
All of that said, should /everyone/ know /something/ about programming? Indeed - especially with the advent of the consumerization of technology upon us. Knowing how to do simple troubleshooting of an app or whatever is going to be critical when everyone is wandering around with a smartphone, tablet, wearable computer (or combination of all three). Does everyone necessarily need to know how to write web code to do SQL queries? Not in my mind.
And finally, the best class that I ever took was actually classified as a Philosophy course, but was a requirement for all engineering, sciences and computer science majors as well. Odd, right? Well, one would think that (Symbolic) Logic and Critical Thinking would be a more popular and more widely required, but at least not at that school. If you teach kids (or people) how to think, you open the entire world up to them.
InformationWeek Contributor (and BASIC, Pascal, C and Fortran programmer)