I have a degree in computer science.
It has been great for opening doors,
getting a job. As far as helping me in
the professional field of C# .NET
programming (the most popular platform
and language in the area I work if not
the entire united states on hands down
the most popular OS in the world) its
70%+ of code is written in C (as there are more embedded devices than high-level applications). According to popular job searches like dice or the TIOBE index, Java is the most popular programming language for the enterprise (as there are more Unix/Linux back-end servers than Windows servers.) There are more smartphones and tablets (the computing platform of the future) running some variant of Linux or Mac OS than Windows, programmed on anything but C# or .NET.
Look at your router at home, look at your cell phone, look at the computer inside your car, look at the freaking microwave at home, at the controllers inside your home A/C system, inside your phone and your work fax and printer/scanner. Look at the number of computerized appliances (which outnumber windows systems.)
Do you think they are programmed in C#?
If you truly believe that .NET or C# are the most popular platforms in the world, you might want to go back to your CS school and ask for a refund.
Why do you think it
helps you as a programmer in your
professional career (outside spouting
off to prims algorithm to impress some
Maybe because there is a lot more about programming than doing basic development dynamic web pages and enterprise applications? For that you don't even need a BS degree, a AA suffices - I know because I started my programming career with an AA degree and slowly but surely worked towards a CS and then worked through grad school while working full-time as a developer.
There is embedded development, there is device driver development, there is operating systems development, there is algorithm development, signals, communications, network protocols, database engine development, filesystem development, distributed computing, compilers. Not research, but actual work in for-profit organizations. Barring the naturally gifted, one typically cannot hack it in any of these industrial fields without a CS degree (sometimes not even with a BS degree.)
A person that gets a CS degree and pays attention to it knows this. How come you do not?
In today's world adaptation, a quick
mind, strong communication, OO and
fundamental design skills enable a
developer to write software that a
customer will accept.
OO came into existence because of CS. And most people who think they do OO cannot even do a good job. Just look outside and look at the crappy state of software (in particular in Java and .NET, not to mention PHP.) A solid CS background (or a graduate degree in some sort of engineering) does not guarantee 100% good understanding of OO and analytical skills, but it typically helps. OTH, not having a basic CS background is typically a red-flag when it comes to OO and analytical skills. We have enough empirical evidence in the industry to back this claim.
These skills are only skimmed over in
the cs program.
Depending on the CS program and depending on the student. At least for me, I saw plenty of good courses on design, OO analysis, commercial tools and practices, we had co-ed courses with local companies and internships, corporate-funded projects and research, technical writing, you name it. Sorry, I cannot relate or understand this statement.
In my mind, reading a 500 page C# book
by Wrox offers far more useable a
skillset than 4 years of the comp sci
math blaster courses.
Again, depending on the work you do. Even on the enterprise, I've used my CS to actually fix things or improve. All that involving modeling, architecture, distributed computing, security and high performance, high availability and fault tolerance. I learned all that stuff in CS.
There is nothing wrong with using a Wrox book to get a context-specific, technology-specific skill set. I do so myself. But my CS background gives me the context to work on. Without my CS background, all I would be able to do would to program, to code (which is all I could do when I only had a AA degree at the start of my career.)
So, why does a computer science degree
Who do you think come up with google, hadoop, cassandra, or high performance database engines? Who do you think write the Windows OS kernel? Who do you think program the beloved tools you use to do your C# development.
One thing I'm sure of is that the tools you use to do C# development, there is a CS guy behind it.
Whether you need a CS degree or not depends on the type of work you do, the type of work you want to do, the type of job you are capable of doing.
There is a lot of work in the enterprise and web development that does not require a CS degree. I grant that. I also know that the world of programming is a lot wider than just those two fields, with many fields (most of them actually) requiring a CS degree or more.
You have a CS degree, how you do not know that is a mystery.