It seems like a very long time ago since my days as a computer science student. I came to the game late and was fortunate to have found some great teachers and mentors at a small institution in the Minnesota.
During my studies there was a very pervasive thread of gaining understanding. I took machine architecture classes, which forced me to understand how the data is shuffled around in its most basic form. I studied algorithms and data structures and gained much insight in how to do and not do things.
I’m a big fan of not redoing everything over and over. I like high level languages that allow me to code fast and loose (read: without type checking and casting). The key though for me is that I’m able to make this decision and know that there are draw backs because I had to work with them and examine them.
The following article is a great read about how some feel (and have industry evidence to the same) that current computer science curricula have gone perhaps a little far in just teaching at the highest level and in effect been creating very easily outsourced programmers.
It’s worth a read …