• Quick note - the problem with Youtube videos not embedding on the forum appears to have been fixed, thanks to ZiprHead. If you do still see problems let me know.

Computer Science an craft not a science?

On the surface, it is merely a mechanism to control an engineering contraption - the computer. It is, in effect, a complicated version of the accelerator and brake pedals in a car. This is what commercial programmers learn - their craft, if you will.

That's a very good point.

Let's take a common task, building a user interface:

Engineering: The APIs
Mathematics: State machines, event-driven systems
Programming: Putting the UI layer together with the business layer
Art: Screen layout
Science: Testing, debugging, ergonomics, color blindness
Craft: Putting it all together
 
True, epepke, and I didn't mean to belittle that process either. In fact, it serves to show that "computers" and "computing" is not just "a bit of quick hackwork on an overblown calculator". It's a huge field, and no one person does it all these days.

I often see the production of of usable software is a science actually akin to designing new automobiles. Let's transpose your examples:

Engineering: The motor, electrics and bodywork, etc.
Mathematics: Technical design - air-resistance, shapes, efficiencies, etc.
Programming: Ergonomics of controls to the "machine".
Art: Making the car "beautiful", inside and out - Ferrari, Jaguar, etc.
Science: Crash-test dummies!
Craft: A new car is born...

Perhaps that gives an idea of the scale of work involved in software development (or, at least, what SHOULD be involved ;)).
 
It isn't until the doctoral level of education in the computing sciences that you have a significant fraction of students who are inclined towards science and, even then, the fraction is disappointingly small.

Why 'disappointingly' - the non-strictly-scientific roles can be just as (or more) complex, valuable and interesting as the truly scientific ones.
 
Just having a discussion then - should computer science not be considered a science but a 'craft' or 'art'?

Having just finished an undergraduate double major in Mathematics and Computer Science, and having spent 3 of my 5 years getting a degree working part time in computational biology, participating in a summer biostats program and doing an internship at a national laboratory, I think I can say, with no reservation, computer science most assuredly is NOT a science.

The problem is they don't know what to call it to be taken seriously. It's closest cousin is most definitely mathematics, and math is usually considered an art. But math is pretty much the only thing that can be called an "art" and still command a lot of respect among the technical crowds. There isn't enough science in it to be a science. There isn't enough process in it to be considered engineering.

Most CS curriculums are set by the Computing Accreditation Commission of ABET, but the accreditation is lax on requirements on the "hard" portions of CS (discrete mathematics, computing theory, algorithms, compiler theory) such that a 4 year CS degree is little more than an expensive substitution for a vocational school.

This is why places like DeVry and ITT Tech can offer people computer degrees in 2 years. Or why someone can learn everything a degreed programmer knows through books they got at Barnes & Noble. You never see a book titled "Learn Quantum Mechanics in 24 Hours!" Computer science is for the most part a technical trade. Of the two sets of coursework I had to take, computer science was rarely more than 1/2 as difficult as upper division mathematics.

There is the emerging field of "Software Engineering" but that is still undergoing an identity crisis as well. Most engineers rely heavily on science and mathematics so that they may say their design is safe. Software Engineers, however, rely on rules of thumb and process. They make essentially no use of science and mathematics, aren't licensed by the state, and aren't personally required to sign off on their designs and stake their reputation that it won't crash unexpectedly. Many engineers take exception to usurpation of the term "engineer" as it relates to building software. The responsibilities and expectations are entirely unequal.
 
True, epepke, and I didn't mean to belittle that process either.

I didn't think you were belittling it.

In fact, it serves to show that "computers" and "computing" is not just "a bit of quick hackwork on an overblown calculator". It's a huge field, and no one person does it all these days.

Except for people like me, of course.

But seriously, I'm going to be flying to interview at a job that involves 1) GUI design, and 2) protocols like SMTP and POP3. On handhelds. It sounds like fun.
 

Back
Top Bottom