>>3235
I'd just start people on C++, honestly.
If you give them templates (include stuff they need for a problem, set namespace to std, etc) then they can just start running with it. Python abstracts away too many concepts, and Java is just a huge steaming pile that fights you at every turn.
I'd rather have just jumped in at C++ than wasted my time on something like Java just to learn about Objects. But I already had some experience with the concept. Dude in my class next to me didn't understand inheritance. I think he dropped out and changed majors. But are we catering to people like that?
My engineering friend at another school just had to learn MatLab. He hated it, but at least it's a tool for his line of work and not something like Java. I find it unlikely any engineering or other major students are going to crack out a Java program with their basic knowledge down the line. A real engineer might learn Python or C to script microcontrollers, but that's if they want to. They don't need to understand much to handle that.
SICP might be a bit much for people out the gate, though. But I do think C++ is easy enough to learn the concepts for if you have a teacher, supervisor, or templates to work within. Best part is that your errors expand as your knowledge does. A beginner won't have to debug across multiple files, or scopes. They won't have brackets floating a hundred lines down from where they started. They're unlikely to cause memory leaks outside of learning loops. It's not like they're using pointers and dynamic memory yet. Once they learn Objects and Recursion, they're more or less "done". Anything past that is only necessary for C++ programmers and computer scientists.