Twice, I have had discussions of "Computer Science isn't a science" thing, and twice I've come up with/been given different answers to why it is, in fact, a science.
This is not to say that one can't be quite a competant computer engineer without a CS degree, but I came out of Wellesley with a CS degree and it very much was a Computer Science degree.
We discussed the theory of programming languages - the difference between Object-Oriented vs. Function-Oriented vs. Imperitive. We discussed the mathematical fundamentals behind programming - why one function is Order of N vs. Order of N^2 or Order of N(log N) - which was lots of math. We also discussed why the logical gates in a computer chip are set up the way they are and the math involved there - that part felt like chemistry. We did, in fact, do science when learning about what a Deterministic vs. a Non-Deterministic function was - more math. Or how a computer operating system interacted with programs and hardware - that part was a lot like studying an ecosystem in biology.
And none of this prepared me for the actuality of being a Computer Engineer. My programming skills were -woefully- inadequate compared to what I needed them to be - and I'm a System Administrator, not even a fulltime programmer! But I knew the theory behind -why- all these things worked, so once I did start taking courses that taught me the syntax of a programming language, I took off like gangbusters and started writing code left and right.
So I think a CS degree can very much be a science, or an engineering degree, but you can do computer engineering easily without a degree. People won't always do it well - some will, but there's always folks like a coworker of a friend friend of mine who had a CS degree. Said coworker was working on a program of iterating through a list, and he did it the brute force method and ended up with O(n^2) instead of O(n log n). But on the other hand, it's possible to learn how to build bridges without ever taking a physics course. :)
I also agree that to be a good programmer, you need a lot of Art and Craft thrown in with your science, or you're going to be bored and frustrated, in order.
I will also offer this other proof in case it is needed: Any science will have jokes made about practitioners of it.
A physicist, a mathematitian, an engineer, and a computer scientist all check into a hotel for the night. During the night, a fire breaks out in their rooms. The physicist wakes up in his room, scribbles some hasty calculations on an envelope, empties a bucket of water on the fire, then seeing it's not quite out, does some additional math, empties a glass of water on the fire, and goes back to sleep. The mathematitian wakes up, does some hasty calculations on an envelope, says, "The fire exists," and goes back to sleep. The engineer wakes up, scribbles some hasty calculations on an envelope, then empties ten buckets of water on the fire, and goes back to sleep. The computer scientist wakes up, looks at the fire, scribbles some notes on the back of an envelope, glares at the fire and says, "It's not supposed to be doing that!"
This proof satisfied a physicist that CS degrees were in fact science degrees. :)
no subject
Twice, I have had discussions of "Computer Science isn't a science" thing, and twice I've come up with/been given different answers to why it is, in fact, a science.
This is not to say that one can't be quite a competant computer engineer without a CS degree, but I came out of Wellesley with a CS degree and it very much was a Computer Science degree.
We discussed the theory of programming languages - the difference between Object-Oriented vs. Function-Oriented vs. Imperitive. We discussed the mathematical fundamentals behind programming - why one function is Order of N vs. Order of N^2 or Order of N(log N) - which was lots of math. We also discussed why the logical gates in a computer chip are set up the way they are and the math involved there - that part felt like chemistry. We did, in fact, do science when learning about what a Deterministic vs. a Non-Deterministic function was - more math. Or how a computer operating system interacted with programs and hardware - that part was a lot like studying an ecosystem in biology.
And none of this prepared me for the actuality of being a Computer Engineer. My programming skills were -woefully- inadequate compared to what I needed them to be - and I'm a System Administrator, not even a fulltime programmer! But I knew the theory behind -why- all these things worked, so once I did start taking courses that taught me the syntax of a programming language, I took off like gangbusters and started writing code left and right.
So I think a CS degree can very much be a science, or an engineering degree, but you can do computer engineering easily without a degree. People won't always do it well - some will, but there's always folks like a coworker of a friend friend of mine who had a CS degree. Said coworker was working on a program of iterating through a list, and he did it the brute force method and ended up with O(n^2) instead of O(n log n). But on the other hand, it's possible to learn how to build bridges without ever taking a physics course. :)
I also agree that to be a good programmer, you need a lot of Art and Craft thrown in with your science, or you're going to be bored and frustrated, in order.
I will also offer this other proof in case it is needed: Any science will have jokes made about practitioners of it.
A physicist, a mathematitian, an engineer, and a computer scientist all check into a hotel for the night. During the night, a fire breaks out in their rooms. The physicist wakes up in his room, scribbles some hasty calculations on an envelope, empties a bucket of water on the fire, then seeing it's not quite out, does some additional math, empties a glass of water on the fire, and goes back to sleep. The mathematitian wakes up, does some hasty calculations on an envelope, says, "The fire exists," and goes back to sleep. The engineer wakes up, scribbles some hasty calculations on an envelope, then empties ten buckets of water on the fire, and goes back to sleep. The computer scientist wakes up, looks at the fire, scribbles some notes on the back of an envelope, glares at the fire and says, "It's not supposed to be doing that!"
This proof satisfied a physicist that CS degrees were in fact science degrees. :)