• 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?

Kiless

Unregistered
Joined
Apr 22, 2004
Messages
6,041
Just having a discussion then - should computer science not be considered a science but a 'craft' or 'art'?

I'm considering the notion that it takes an artisan with considerable talent and practice which may not necessarily be gained through a degree. That by getting a degree, they can improve but there has to be an aptitude or incentive/enthusiasm to begin with (and yes, I am keeping in mind this paper - Ericsson & Charness, on accquisition of expert performance [1994]) in order to be able to break down thoughts in such a way that you can teach a computer to do it.

(An example was mentioned of a friend who learned Java on a plane to America and got a job at the other end based on that skill... but then he was a member of the same G&T group that several friends were a part of, so eh.)
 
(An example was mentioned of a friend who learned Java on a plane to America and got a job at the other end based on that skill... but then he was a member of the same G&T group that several friends were a part of, so eh.)

Learning Java does not make one a Computer Scientist any more than hard boiling an egg makes someone a cook. Yes, it's possible to self learn Computer Science, as I'm sure Bill Gates and others have, but I'm not quite sure that you understand everything involved.
 
Just having a discussion then - should computer science not be considered a science but a 'craft' or 'art'?

Yes, or possibly no. Computer Science isn't a science.

It's a branch of mathematics.
 
There is a real science to software development: Experienced programmers will have experimented with different algorithms to developed the most efficient strategies for complex applications, and stuff.

However, I don't think "Computer Science" as a college major is really that kind of science. It's more about learning a trade that is more mathematically-oriented than most.

There is also computer pseudo-science, but I don't think CS is that, either.
 
There is also computer pseudo-science, but I don't think CS is that, either.


What would you consider to be an example of computer pseudo-science? Just curious.

I think most IT work is the equivalent of engineering, more than science or art.

However, there are algorithms and such that I can admire in much the same way as a painting or a song. So there's a touch of art as well. And I think that the best programmers have an artistic sensibility.
 
In Spain we call it something like 'Informatic Engineering'. (I realise 'informatic' is not even a word in English). I prefer the name Computer Science and also think it is mostly a branch of mathematics.
 
Learning Java does not make one a Computer Scientist any more than hard boiling an egg makes someone a cook. Yes, it's possible to self learn Computer Science, as I'm sure Bill Gates and others have, but I'm not quite sure that you understand everything involved.

Well, no, I don't quite understand everything involved, which is why I'm asking. The conversation I had was with someone who has a Computer Science degree though.
 
Perhaps computer programming could more realistically be described as a "craft" than an art or "profession". However, computer "science" is a probably best summed up as a specific set of branches of mathematical principles. The "art" part of it would perhaps be the description of methodology behind the selection of various algorithms to describe various processes that address particular problems.
 
Computer Science is what computer scientists do. Programming is what programmers do.

Math, science, art, craft, engineering, psychology, ...

~~ Paul
 
What would you consider to be an example of computer pseudo-science? Just curious.

Well, I'm glad you asked! In fact, I am considering starting a thread on this topic.

Most clear examples come from when people try to use the computer to "prove" things that we can be sure ain't so. Examples include The Bible Code (actually, computers are disproving this idea, as such messages can be found in almost every book ever written.), the best strategies for winning the lottery, and even the existence of spirits.

The most damaging have probably been from improper usage of spreadsheets. How many ideas "look good" in Excel, but never work out well in the real world?

Other examples include inappropriately designed algorithms and models "sold" to solve various engineering problems. Or, perhaps schools and businesses getting sold software to solve problems they don't even have.

I would hesitate to include adware and other forms of malware, because those are just flat-out scams. But, most of these come in the form of "Trojan Horses", so there is still an element of gullibility required on the part of the end user.

There are lots of other examples I could probably ramble off, but I'll save them for another discussion.
 
Bertrand Meyer certainly sees beauty in programming. In Object-Oriented Software Construction, when discussing the composite design pattern, he says (2nd edition, p529):

I find this scheme admirable and hope its beauty will strike you too. Almost everything is concentrated here: classes, multiple inheritance, polymorphic data structures [...], dynamic binding [...], recursion [...]. To think that some people will live an entire life and never see this!
Steady on there, Bertrand.
 
I prefer the term 'Computing Sciences' rather than 'Computer Science'.

The computing sciences encompass science, engineering, and art.

What is taught in both undergraduate and graduate programs in the computing sciences is mostly proto-engineering with a small exposure to the results of science (e.g. a smattering of complexity theory). Nothing on scientific methods or attitude, nothing pertaining to art.

Students are exposed to achievements without being shown the paths that lead to those achievements; they learn results created or discovered by others rather than learning processes through which they can create or discover something worthy of being learned by others.

Frankly, most students of the computing sciences are perfectly happy with this situation - learn just enough engineering to get hired after graduation, keep as far away from the science as possible, and show disdain for the idea that beauty has anything to do with it.

I think this is the main reason why I got out of teaching computer science.

I'm in it for the beauty. It is found occasionally in the engineering and occasionally in the science. I look for it in algorithms and, especially, in the structures that some algorithms manipulate and in the systems that some algorithms explore.

I remember how I felt when I first realized that boolean expressions occupy a far richer, more complex, and more beautiful world that I had ever suspected.

Another view of that world, involving graphs and cliques, is extraordinarily beautiful and worthy of a lifetime of contemplation and exploration.

Richard Wilbur's wonderful poem, 'Junk', conveys how I feel far too many people approach engineering. Excerpts:

"The heart winces - For junk and gimcrack, - for jerrybuilt things - And the men who make them - for a little money, - Bartering pride - like the bought boxer - Who pulls his punches, - or the paid-off jockey - Who in the home stretch - holds in his horse."

"Yet the things themselves - in thoughtless honor"
 
Last edited:
I agree that what is generally called computer science is actually closer to engineering. We are (or at least I am) less in the business of experimentation, theorising and research (science) and more in the business of designing and building engines to perform tasks (engineering). We are (I am) much closer to a steam-engine maker than to a chemist.

I think that if the term 'computer science' were to be used accurately it would be applied (for example) to the activities undertaken in chip research labs but not to programmers and technical architects.
 
I seem to vaguely recall someone mentioning that, way back in the day, when computers were nearly the size of whole rooms, Computer Science was just that: You needed real scientific understanding to operate and maintain them. Then as computers evolved into smaller, more user-friendly systems, CS evolved into the more "craft" oriented thing it is today.

Sorry I don't have any references to back this up, myself. This was something I only vaguely remember from college. But, if anyone else does, I'd be interested to hear of it.
 
Computer Science is what computer scientists do. Programming is what programmers do.

Math, science, art, craft, engineering, psychology, ...

~~ Paul

Yes, but isn't it true that you can't get a Computer Science degree unless a significant part of it is programming?
 
Yes, but isn't it true that you can't get a Computer Science degree unless a significant part of it is programming?
You're right, of course, although I do believe that there are a few programs that really emphasize theory rather than application.

Nearly all of the students who are enrolled in Computer Science programs really should be enrolled in Software Engineering programs, if the departments were honest about what they are offering.

Relatively few people (perhaps one thousand, globally) become computer scientists each year, while a great many become programmers, software engineers, computer architects, computer engineers, etc.

A far smaller fraction of people graduating with a B.S. in computer science are on their way to becoming scientists than those graduating with a B.S. in biology, chemistry, or physics.

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.
 
Yes, but isn't it true that you can't get a Computer Science degree unless a significant part of it is programming?

Yes, but the programming isn't the hard part. It's like saying you can't get a Math degree without writing. Well... maybe not much like it, but you know what I mean.
 
Kiless, programming is a face-value and also underlying value proposition.

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. It is where the money is - these people are the "drivers" of the computer. In the old days, they also had to learn how to punch cards, and to work within the limitations of the technology in order to make it accomplish tasks efficiently.

However underneath this level, there is consideration of what makes the "engine" tick over, and how to present the controls, the programming interface, appropriately. This is the science of computing - going back to basic principles to begin the analysis and design, and build a better machine. To do so requires an understanding of what these basic principles are and how they can be applied. New discoveries in technology can lead to radical changes in the design - in the computing world, the transistor was one such example.

The marriage of these two understandings is what makes the art. This is not given to everyone. The computer scientist can appreciate the new technology inherent in new construction techniques and ways of manipulating it to produce better "machinery", although he may not be able to make best use of it in a practical sense. The programmer appreciates the efficiencies and abilities provided by this new technology, although understanding why is not his top priority.

But should they overlap, the whole spectrum becomes available - the programmer who knows about and appreciates what is happening inside the box as a result of his code is always going to produce better code than one who does not. Nowadays, this is more evident than ever - what we know today as "bloatware" is the result of a failure to make (or perhaps to remember) this connection.
 
Ah yes, bloatware... When you forget that computers aren't an alternate universe and that programming languages aren't magical tomes waiting for the right words.

However, I would venture to say that at least the programming experiments in creating AI would qualify as science. I suppose it just depends on the program. If someone is attempting to create an experiment via programming, I'd say it's science. If someone is attempting to create a game, a word processor, or even a new programming language, I'd call that engineering.
 

Back
Top Bottom