This is borderline HT, but I want to keep this discuccion philosphical. It comes from a question I discussed with a friend.
I remember in my first chem class in HS, my teacher told me "now you all get to work in real science. All that other stuff you did like biology and earth science is not real science. Real science requires math."
Well, that's not a basis for my argument, but it is an interesting statement. I was thinking about how science relates to engineering the other day. It seems to me that math is an engineer's tool for creating something, while math is the corresponding verification method of the existence of science. It seems that existing math, usually calculus, provides an operating framework for the scientist to conduct research in chemistry, and physics, which leads to Mechanical, Electrical, Civil, and Chemical engineering (the classical ones). Computer engineering could be thought of as a sub-class of EE.
However, Software Engineering has it's roots in computer science, and as many of you know, the practice of SoftE is wrought with problems. Products break left and right, in heaps of massive errors, this is mainly due to improper testing. But, the only way to verify software is to test it, there is nothing else you can do, it's hard to measure, and tough to run it through a formula to see if things are working within designed tolerance. Why? Because the science works in the same way, there is no math that allows the CS researcher to verify his claim on his work, he can only test the code.
My suspicion is that CS (in its current state) is really more of a psuedoscience, much like psychology, where there is no formal mathematical methodology, but just a way of testing behavior. If we had something that was maybe psychological engineering, we might see similar problems with what we build.
Now, I know that you can use math in verifying some computational ideas. There is discreet math, and there are ways to write proofs. But it's simply not done, nor is it a main requirement of the scientist to do any such thing. Most CS people are hackers who write code, test it to see that it works, and are done. This translates into software engineers not doing any such thing for sure, for many reasons such as time, cost, and near impossibilty. You take a big piece of software, there is no way you can use math to verify that it is correct.
I know CS is a very different animal than normal science, and it is about how we go about solving a problem. It is kind of an abstract to math, not what to do, but how to do. Many kinds of mathematical approaches are attempting to define new math that applies to CS, but i think they have it backwards, maybe we should try to come up with CS that generalizes math.
But I am no big CS guy, I'm a software engineer, and I'm not trying to offer a solution, I'm just trying to pick a good spot to look at the problem.
Thoughts?
I remember in my first chem class in HS, my teacher told me "now you all get to work in real science. All that other stuff you did like biology and earth science is not real science. Real science requires math."
Well, that's not a basis for my argument, but it is an interesting statement. I was thinking about how science relates to engineering the other day. It seems to me that math is an engineer's tool for creating something, while math is the corresponding verification method of the existence of science. It seems that existing math, usually calculus, provides an operating framework for the scientist to conduct research in chemistry, and physics, which leads to Mechanical, Electrical, Civil, and Chemical engineering (the classical ones). Computer engineering could be thought of as a sub-class of EE.
However, Software Engineering has it's roots in computer science, and as many of you know, the practice of SoftE is wrought with problems. Products break left and right, in heaps of massive errors, this is mainly due to improper testing. But, the only way to verify software is to test it, there is nothing else you can do, it's hard to measure, and tough to run it through a formula to see if things are working within designed tolerance. Why? Because the science works in the same way, there is no math that allows the CS researcher to verify his claim on his work, he can only test the code.
My suspicion is that CS (in its current state) is really more of a psuedoscience, much like psychology, where there is no formal mathematical methodology, but just a way of testing behavior. If we had something that was maybe psychological engineering, we might see similar problems with what we build.
Now, I know that you can use math in verifying some computational ideas. There is discreet math, and there are ways to write proofs. But it's simply not done, nor is it a main requirement of the scientist to do any such thing. Most CS people are hackers who write code, test it to see that it works, and are done. This translates into software engineers not doing any such thing for sure, for many reasons such as time, cost, and near impossibilty. You take a big piece of software, there is no way you can use math to verify that it is correct.
I know CS is a very different animal than normal science, and it is about how we go about solving a problem. It is kind of an abstract to math, not what to do, but how to do. Many kinds of mathematical approaches are attempting to define new math that applies to CS, but i think they have it backwards, maybe we should try to come up with CS that generalizes math.
But I am no big CS guy, I'm a software engineer, and I'm not trying to offer a solution, I'm just trying to pick a good spot to look at the problem.
Thoughts?