PDA

View Full Version : Computer Science: Art/Craft, Engineering or Science?



WinterMadness
February 16th, 2012, 03:15 AM
ive been reading a bit about this topic lately, and i feel like i cant come to a concrete answer as to what CS really is. A lot of people have opinions, so I felt like it might make a good thread here.

Some say Comp Sci isnt a science, because theres no empirical observation of the real world as we work with abstractions

some say comp sci isnt engineering, because engineers work with tangible things.

ive read people saying that its more like an art (or craft), because of the brute force approach thats often taken with software development, and how its similar to the attitude of those who built the pyramids.

my opinion? I lean towards "its a mixture of all", its certainly a unique field, and I cant quite put it into any one category. I can definitely see how its art/craft, and i think my definition of engineering may be a bit different than those i encounter. I think it can become science when the abstract concepts interact with the real world.

JDShu
February 16th, 2012, 03:41 AM
Computer Science itself, I consider a subset of Mathematics, which I believe is itself considered to be a subset of Language. A real mathematician can correct me there.

To me, software development is clearly not a science. Certain techniques can be approximated to the scientific method, but the goal of software development is not to create new knowledge - it is to use existing knowledge to create a product.

Software development seems to fit within both the definition of craft and engineering. But I lean more towards it being a craft. The differentiating factor being that in software development, you are forever honing your skills. There is a clear difference between a better software developer and a worse software developer. To me, engineering implies that you are simply creating systems, which a developer does do, but I'm not certain that engineers aim to improve in the same way developers do. If I am wrong about this, then I suppose engineering is a subset of crafts in general, and software development lies within engineering.

WinterMadness
February 17th, 2012, 02:37 AM
thats a good answer, id like to hear more

Bachstelze
February 17th, 2012, 03:12 AM
Mostly agree with JDShu except the "engineers don't improve" part. Of course they do, otherwise there would be no difference between an engineer fresh out of school and the same engineer twenty years later.

Also let's be clear on what exactly we are talking about, because "Computer Science" is so overused nowadays that it basically doesn't mean anything anymore. If we are taling about programming/software development, then it is clearly not a science as JDShu said, so it can be either craft or engineering. My personal feeling is that "engineering" conveys a meaning of seriousness and professionalism, in both the good and the bad senses of the word (basically, it's the cathedral in the famous book), while craft can be both the cathedral and the bazaar.

So in terms of sets, that makes engineering a subset of crafts, and programming is a subset of crafts as well, but not of engineering since it can be done both in cathedral and bazaar fashions.

Pirie.ian
February 17th, 2012, 08:09 AM
I tend to think that Computer science is a school of boolean mathematics. Software Engineering is making the ones and zeros look pretty. Correct me if I am wrong but I always think the C S is more towards Operating system analysis and creating such as the kernel and security creation such as Selinux and apparmor where as Software engineering is more gui oriented using the tools created by the C S people.

They are both subsets of engineering but Software engineering are more the industrial engineers of the software computer industry. C S are more the mechanical. To add to the group. I would say Computer engineers are the Chemical engineers of the industry. All are necessary regardless!

Copper Bezel
February 17th, 2012, 08:36 AM
I tend to think that Computer science is a school of boolean mathematics. Software Engineering is making the ones and zeros look pretty. Correct me if I am wrong but I always think the C S is more towards Operating system analysis and creating such as the kernel and security creation such as Selinux and apparmor where as Software engineering is more gui oriented using the tools created by the C S people.
Well, CS is a little deeper than that - it's the maths behind the coding. "Software design" has an implication of putting its focus on being pretty, but it really just means coding of any stripe. So even working on the kernel, you're more in "design" world than "science", in the same sense that application of scientific principles in electronics engineering or material science becomes "technology." But you'd need more grounding in CS to do work on the kernel than you would to make a fantasy football app, because you're working at very little abstraction.

You wouldn't say that you're "doing science" by writing a novel, but everything that you're doing could be described within the science of linguistics.