http://qs321.pair.com?node_id=134314


in reply to (OT?) Usefulness of CS

A few things

Computer science is about more than programming. It's about algorithms and theory and a great many things.

Here are some examples:
-Can you write a Turing machine?
-Can you solve anything meaningful with one?
-Can you calculate big-O and little-O
-Do you know what they are?
-Have you ever written a device driver?
-Have you ever written an operating system?
-Have you ever implemented a network socket by hand?
-Can you name more than one AI/ANN algorithm?
-If asked to, could you convert between numerical bases?
-How many languages can you program in?
-Can you name at least 3 different types of automata?
-Did you understand that last question?
-How many different TYPES of languages do you know?
-Have you ever written a compiler of any sort for any language that resolves to machine code?
-Can you calculate a natural cubic spline?

You'll touch on almost all of that in a bachelors program in CS, and you'll cover a lot of things that I didn't discuss that you might not even see the interest in, but are quite important. Most of that is pretty important for really SERIOUS programming. It doesn't stop there either. Every office, lab, and cube at the company that I work for has multiple bookshelves.

This isn't to slam on your point of view, but I know that the content of a computer science degree is more than people seem to think it is.

Not only that, but it is also about a HARD SCIENCE, it isn't just about programming.

This isn't to crack on your abilities or anything like that, but you don't go read a book on psychology and become a psychologist. You don't pick up a book on first aid and start a private practice. You don't read an o'reilly book and become a computer scientist. There's plenty of good coders out there who do what they do well without the benefit of a degree, but EVERYONE has something to gain from one.

To add to this. I would like for you to consider what a person with a degree in computer science might be asked to do.

1) Control hardware. This is a new device, designed in house. There is no library for it. You can't go to CPAN to get some code. You can't post for help since nobody knows this hardware exists yet (unless you break your NDA). You can't find a snippet somewhere, or an O'Reilly book (though they do rule).

2) Implement a communication protocol. Come up with what messages will look like in the protocol. Parse them from binary.

3) Create a data structure to hold meaningful data in. No preimplemented hashes. No stack snippets. It's a tree that there is no library for to be sorted into a file type that nobody has heard of before.

I hope I haven't offended anyone, but one could see where someone who has taken a lifetime of studying and reaped the benefits of it could take offense. I am not that easily offended, but I know a lot of people who prefer not to open their mouths rather than speak their mind.

Just Another Perl Backpacker