Quote Originally Posted by Eric View Post
So IMHO, it was kinda inevitable that computers were to become black boxes.

Not knowing algorithms and data-structures is more disturbing, but hardware is fast enough that most of the developers can get away with any crappy algorithms throughout most of their programming life, and fall-back on experts for the few cases where that's enough (just like you'll call the car mechanic, the plumber, etc. from time to time).
Sure, but in now days, many are the ones that learns nothing from experimentation, they just sit and learn a popular language, and then call themself programmers. Programming is an Art and a Science. If you want to become a great programmer, you need to go out of the books and try and fail and try again, in a never ending cycle. Learning the basics of a language, doesn't mean you will know what you realy need to master that language.

If students didn't get the right challenges, they just be one of many. Many students are exposed to so simple exercises, that not get out any brain juice, its just another boring exercise ruining any potencial programmer. What is needed is something that makes them to think, to analize and in the end to enjoy doing it. I remember when I was teaching data structures, I proposed a quiz where students must build a data structure to accomodate a Rubic Cube. It was the only task for a two hour test. The academic supervisor was so pissed about it, that he asks me to change the quiz for something easier. That was my last time in theaching.

I believe in the teaching by example metod, with progressive diffilculty. You want better developers, bring them the rights tools and knowledge and make them to think. I like games like The Incredible Machine or SpaceChem, just because they have more that one valid solution and because they push your creativity and thinking limits.

To think is the key, and being motivated too!