I just finished reading the article Computer Science Education: Where Are The Real Software Engineers of Tomorrow? and I must that I'm pretty impressed with its very compelling argument:
Computer Science (CS) education is neglecting basic skills, in particular in the areas of programming and formal methods.
As some of you know, I attended ISU for my CS degree. During the latter part of my tenure (junior/senior years) there, I started to realize that the "boring" stuff that professors were pushing down our throats, actually had a meaning! In particular, my OS theory, algorithms, advanced databases, programming languages and of course, theory of computation. If you take a look at the ISU CS curriculum, you can see that as the class number (CSXXX) gets bigger the concept becomes more concrete. The lower level classes provide the foundation (the what's and why's) for these more specific concepts (the how's and who's).
Now, by no means am I saying that just by taking these classes it makes you a better application/system/db developer. What I am trying to say is that these classes provide you with a solid foundation that could aide your application/system/db development skills. The reason I stress the word could is due to the fact on how you as a computer scientist are willing to learn that a new domain (application development, system development, db development), etc. If you go into these domains with a closed mindset, there's a very good chance you won't succeed/advance in them as quickly as your peers that embrace it.
What are your thoughts on this topic?