I had a discussion shortly before the end of the year with one of our exchange students regarding a programming class I wanted to teach. My goal was simply to introduce programming concepts and algorithmic thinking. Heck, I'd be happy if the kids could walk out of the class writing passable pseudocode.
This was all as an undergrad, though. The same standards or expectations obviously can't be placed on the average high school student, who should, I believe, still be exposed to some degree of programming. The exchange student was actually a pretty solid Python programmer and was convinced that, because Python was such a high-level language that it was actually a much better choice.
Of course, there's Java, but I've heard complaints out of computer science departments that an overemphasis on Java is making for some poorly-rounded students.
So here's the question: What language (or languages) should we be teaching at the high school level to introduce kids to computer science and programmatic thinking? I'm not talking about turning out programmers; I want kids to think algorithmically and know what I mean when I say high-level programming language. I want them to be comfortable when they see Matlab or Maple in college and be ready to hit any number of languages later on.
So weigh in below...your input would be much appreciated.