Sriram Krishnan posted a reply to the "Advice for Computer Science College Students" article - Why Joel is wrong (or) Advice for *Indian* Computer Science Students. His reply is interesting for two reasons - 1) He's a 21 yr old dude doing CS. 2) He's studying in India.
I'll just comment on one thing. He's mentioned Python and given it a glowing reference (sarcastic or not). I've noticed Python getting a great reputation of late and picking up steam on the web. A lot of smart guys are recommending it (Bruce Eckel being one of them). I have to say, I don't get it. I did a bit of Python last semester. Very little, so I can't say anything about it with a great deal of authority. But from what I saw, I didn't get why it was such a big deal. If anything I thought it was super super easy to make a ton of mistakes.
Python is a dynamic language. It is strongly typed, but all the checking is done at runtime. Nothing is done at compile time. My biggest beef with Python is that you don't declare variables. You just use them as and when needed. A type is automatically inferred when it is assigned something. So if you've made a mistake, like use a variable in a way it wasn't supposed to be used, you will only become aware of it at runtime, if at all. I say if at all because only if your execution path leads to that piece of code will it throw an exception. And I won't even get started on the potential for nightmarish logic errors. If you misspell a variable, it's not a compile time error. It'll work fine.
What Python has going for it is rapid development. Since there is no real compile step, development is faster. But is this a valid tradeoff? As I've mentioned, I've not had enough experience with Python so everything I've said can't be taken too seriously. But so far, I'm not convinced. In time, maybe I will "see the light" and learn to appreciate it.