quote:Original post by Etnu
That depends completely on the person. You may have a valid point that SOME individuals learn better in a class room environment; I, personally, don't. I find the formulatic way most professors teach to be a mind-numbing exercise in futility.
Fair enough, but that is why most institutions provide many different things in a course that help to address many learning styles: ie. lectures, course notes, textbooks, assignments and exams to name a few.
quote:Original post by Etnu
I've usually found the opposite to be true, actually. It usually takes at least a year before any new concept is integrated into the curriculum - if not longer.
I agree that you certainly aren't learning things right as they are discovered in undergrad, but undergrad is supposed to set the foundation for graduate work, and to understand the more advanced topics (notice how most courses are "Intro to [whatever]"). Judging by how well the PhD's, etc. do with research and generally expanding human knowledge, I'd say that it's a fairly effective system.
quote:Original post by Etnu
Not possible. You have the same 24 hours in your day as the programmer in India. Companies realize this - they don't care how well educated you are, unless you've got a PhD, you don't know anything that they *NEED*. What they *WANT* is people who can do things that the programmers in India CAN'T do - understand the business processes behind the software, develop better intraction with end users, etc.
This is true to an extent, but I'd argue that someone who writes good, well documented, easy-to-read, organized software is easily twice as good as someone who writes even average code. In fact the former type probably saves a company more that twice as much in TCO-type things, let alone productivity. Remember that the cost of fixing a bug rises literally exponentially the further along into the development it is caught.
I'd argue that the run-of-the-mill programmer is gradually getting replaced by more advanced languages and systems. Eventually all that we will need are innovators. The only thing that I disagree with is that a college CS course, or a more specific networking/IT course teaches you these skills any better than a good CS university. I'm arguing that it is the scientific approach to CS that stimulates much of the theoretical thought required to be this type of person: an innovator rather than a code lackey, ie. the difference between a GREAT programmer and an average one.
Even if you consider programming an "art" (which is stretching it a bit IMHO), one still requires some teaching. No matter how musically inclined you are, you still need lessons in chosen instruments or what not. Your natural ability may influence how FAST you are able to learn things, but no one (that I know of) is born knowing formal verification (for example). And no matter how "logically inclined" you are, you could waste the rest of your life re-inventing this particular wheel.
And as you mention, you cannot be "taught" to figure out whole new algorithms or such... but I'm 100% sure that someone with a good knowledge of the types of algorithms that already exists - their advantages and disadvantages (including the rigorous analysis done in many classes) - will be much more able to come up with new algorithms, that may or may not be extensions and modifications of old ones. I don't think anyone would argue that you should end up reproducing the work of hundreds of other brilliant minds simply because you refuse to be educated in what they have done.
I'm also sure that this isn't what you are arguing, but I guess where we end up disgreeing is that a more specialized program would teach you any of these skills better. In fact I'd be a bit hesitant to recommend such a program simply for the fact that skills that are too specialized in CS tend to change too quickly without a fundimental understanding of the subject matter. The Turing machine model is not likely to change, and you're probably safe learning how to work with it - on the other hand someone who knows every in and out of a fixed-function graphics pipeline is probably finding the transition to the new shader model to be hard, if they do not understand the theories and research that graphics hardware is based on.
I guess we may not be discussing on the same plane though - you recommend Mathematics as a major... in my program Math and CS have all of the same required courses for the first year, and many similar after that. Our CS program is HEAVILY math-based (actually I get a BMath(CS) when I'm done), while I'm getting the impression that that might not be true of other universities.
Anyways I think I'm probably beating this point to death now, but I simply do not want someone to be dissuaded from a potentially advantageous education simply because others have had bad experiences at certain institutions. Be sure that there are many out there with excellent programs.
As a last point: do not base your career on where you are going to earn the most money... if that was the case, you shouldn't even be in CS. You'll discover that money is not what will make you happy in life. Money is certainly not a substitute for a job that you dislike.
[edited by - AndyTX on May 10, 2004 1:53:29 PM]