Computer Science, what exactly is it?

SLAM: debunk creationism, pseudoscience, and superstitions. Discuss logic and morality.

Moderator: Alyrium Denryle

User avatar
Durandal
Bile-Driven Hate Machine
Posts: 17927
Joined: 2002-07-03 06:26pm
Location: Silicon Valley, CA
Contact:

Computer Science, what exactly is it?

Post by Durandal »

Ever since I switched from physics to computer science as a field of study, and now that I've graduated, I've been wondering just where computer science falls in the grand scheme of hard science vs. soft sciences. A lot of the field seems to be far more based in engineering and applied science than pure theory. And a lot of people with computer science degrees go on to become programmers, or software engineers.

With a field like physics, there is a pretty good distinction between engineers and physicists. In computer science, you get a healthy dose of both disciplines. A pure computer scientist, for example, would be someone who just sits around modeling algorithms on Turing machines all the time without actually worrying about their implementation. But even pure researchers are very concerned with algorithmic performance and complexity, which has traditionally been more of an engineering-type concern.

So what is it more of? A science or engineering discipline? Should educators make a greater effort to divide the scientific and engineering parts into separate fields? Or should computer science stay as its own little deal, where science, engineering and mathematical principles are all crammed into one field? I've always thought the question was worth considering. I didn't feel sleighted by my education or anything, but I'm wondering if, educationally, computer science should be treated more like the classical physical science are, where the applied science / engineering parts are actually separate curricula.

Thoughts?
Damien Sorresso

"Ever see what them computa bitchez do to numbas? It ain't natural. Numbas ain't supposed to be code, they supposed to quantify shit."
- The Onion
anybody_mcc
Padawan Learner
Posts: 209
Joined: 2005-08-08 12:14am
Location: Prague , Czech Republic
Contact:

Post by anybody_mcc »

I think that complexity theory is certainly not engineering-type field of study. I would say that complexity , computability , data structures and some other ( parts of logical and functional programming ) are the pure computer science fields. On the other hand operating systems , databases , graphics are more engineering-type oriented fields ( although even there are many theoretical aspects ).

And i think the analogy you used is not so good. It is not like physics - engineering relationship , but rather mathematics - applied mathematics.
"In the beginning, the universe was created. This has made a lot of people very angry, and is generally considered to have been a bad move." Douglas Adams

"When smashing momuments, save the pedestals - they always come in handy." Stanislaw Lem
skotos
Padawan Learner
Posts: 346
Joined: 2006-01-04 07:39pm
Location: Brooklyn, NY

Post by skotos »

Durandal wrote:So what is it more of? A science or engineering discipline? Should educators make a greater effort to divide the scientific and engineering parts into separate fields? Or should computer science stay as its own little deal, where science, engineering and mathematical principles are all crammed into one field? I've always thought the question was worth considering. I didn't feel sleighted by my education or anything, but I'm wondering if, educationally, computer science should be treated more like the classical physical science are, where the applied science / engineering parts are actually separate curricula.
My alma mater encourged us to think of computer science as both a science and an engineering discipline. This was true at all levels, from post-doc researchers to undergrads: we had (or have) both an excellent robotics program (where CS is more or less all engineering) and an excellent game theory (chess, etc.) group. Likewise, ECE majors and math majors alike were encouraged to take CS classes, to the point where they became unofficial double majors.

As for the discipline as a whole, CS is most assuredly not a branch of engineering. An engineer can make very precise calculations about a project and can be very sure that they are reasonably correct, look at any builiding, road, or airplane for evidence. The same thing is not true of a computer program, proving or even demonstrating the correctness of a program is very difficult given our current level of knowledge.

CS can truly be considered a science, on the other hand. I view CS as being mainly a particular branch of mathematics, one which is not terribly well understood. I actually think that our understanding of CS is analagous to the Roman Republic's understanding of arithmetic and algebra. Like the Romans, we can use CS to build great projects, but we don't yet have the understanding or tools to truly understand our creations.

As to the original question:
Durandal wrote:I didn't feel sleighted by my education or anything, but I'm wondering if, educationally, computer science should be treated more like the classical physical science are, where the applied science / engineering parts are actually separate curricula.

Based on my own experience, and my views of computer science, I think that it should be treated as both. On one hand, CS is applied as though it were an engineering discipline, even if it isn't truly yet. On the other hand, its foundations are those of a pure science. My experience profesionally has been that treating it as an applied field is generally of more benefit, but I've also been able to excel in the field because I was given the tools to treat it as a science, something not all of my colleagues have been able to do.
Just as the map is not the territory, the headline is not the article
User avatar
Kuroneko
Jedi Council Member
Posts: 2469
Joined: 2003-03-13 03:10am
Location: Fréchet space
Contact:

Post by Kuroneko »

Computer science is not a science in the strict meaning of the term. One of the subfields you're looking at is the development of code, either to efficiently analyze data or human-computer interfaces (including broadly operating systems or more narrowly GUIs, etc.), which would be more analogous to engineering. The other would be the theoretical analysis of alorithms and related structures, which would fall under mathematics. Either way, its underlying process of uncovering underlying principles is not experimental, so it is not a proper science.
User avatar
Dennis Toy
BANNED
Posts: 2072
Joined: 2002-07-20 01:55am
Location: Deep Space Nine

Post by Dennis Toy »

Computer Science is in fact a true science. The problem is that it is not ahighly defined science. It incorporates mathematics, engineering, applied sciences and research. I think it can be applied to many carrer fields including System Analysis ( which is what i am getting into ), Software Design and Engineering, Computer Design and System Design.
You wanna set an example Garak....Use him, Let him Die!!
User avatar
Dennis Toy
BANNED
Posts: 2072
Joined: 2002-07-20 01:55am
Location: Deep Space Nine

Post by Dennis Toy »

Either way, its underlying process of uncovering underlying principles is not experimental, so it is not a proper science.
computer science is in fact an experimental science. Where do you think that new software designs or systems designs come from?
You wanna set an example Garak....Use him, Let him Die!!
User avatar
Arrow
Jedi Council Member
Posts: 2283
Joined: 2003-01-12 09:14pm

Post by Arrow »

Computer science is a misnomer. Never once in my studies nor in my work have I done anything could be considered real science. I've done things that can be considered mathematics or engineering (software engineer is my job title, for what its worth). The term is really just a catch-all to (poorly) describe the blending between applied physics, mathematics, electrical engineer, and the software that results from the blend of the three. It really should be called computer engineering (and I've seen CS called that sometimes, but usually only in the context of hardware engineering), since we aren't expanding our knowledge, but rather making the tools to expand our knowledge.
Artillery. Its what's for dinner.
User avatar
Arrow
Jedi Council Member
Posts: 2283
Joined: 2003-01-12 09:14pm

Post by Arrow »

Dennis Toy wrote:
Either way, its underlying process of uncovering underlying principles is not experimental, so it is not a proper science.
computer science is in fact an experimental science. Where do you think that new software designs or systems designs come from?
From software and hardware engineers. Did they uncover an unknown principle of the universe? No. They took the knowledge discovered by someone else and applied it; this is the very definition of engineering.
Artillery. Its what's for dinner.
User avatar
Kuroneko
Jedi Council Member
Posts: 2469
Joined: 2003-03-13 03:10am
Location: Fréchet space
Contact:

Post by Kuroneko »

Dennis Toy wrote:
Either way, its underlying process of uncovering underlying principles is not experimental, so it is not a proper science.
computer science is in fact an experimental science. Where do you think that new software designs or systems designs come from?
In what way is a software or systems design a principle of theoretical study of algorithms and data structures, i.e., the theoretical part of CS? At best, it suggests a new toy to play with, in a manner similar to a mathematician being led to an interesting patterns using a computer.
User avatar
Dennis Toy
BANNED
Posts: 2072
Joined: 2002-07-20 01:55am
Location: Deep Space Nine

Post by Dennis Toy »

Well, computer scientist can actually think up new algorithims and then use software to create them. Can someone back me up because i am thinking that CS uses ther same principles as other sciences.
You wanna set an example Garak....Use him, Let him Die!!
User avatar
Kuroneko
Jedi Council Member
Posts: 2469
Joined: 2003-03-13 03:10am
Location: Fréchet space
Contact:

Post by Kuroneko »

Dennis Toy wrote:Well, computer scientist can actually think up new algorithims and then use software to create them.
Of course. And an engineer may think up a new design for something as well. Computer science experimentation may be used to decide which design is more efficient in accomplishing some predetermined task (this is also frequently done mathematically, and may have different criteria in terms of which resources are more important, including human factors), but that task itself is typically to solve some human problem. It's analogous to the case of an engineer implementing several designs and seeing which works better. While that may not be the completely ideal engineering situation, the fit to engineering is much better than to science.
User avatar
Durandal
Bile-Driven Hate Machine
Posts: 17927
Joined: 2002-07-03 06:26pm
Location: Silicon Valley, CA
Contact:

Post by Durandal »

Kuroneko wrote:Either way, its underlying process of uncovering underlying principles is not experimental, so it is not a proper science.
The method to develop and test algorithms is experimental, but the actual classification and study of them is heavily based in math. (For example, you will prove that a certain language is in a certain classification, whereas science will describe and approximate.)

But with a certain set of proven assumptions (i.e. the halting problem is not solvable), the part of computer science that involves approximating these languages mimics what a physicist does when he develops a formula to approximate natural behavior.
Damien Sorresso

"Ever see what them computa bitchez do to numbas? It ain't natural. Numbas ain't supposed to be code, they supposed to quantify shit."
- The Onion
User avatar
Kuroneko
Jedi Council Member
Posts: 2469
Joined: 2003-03-13 03:10am
Location: Fréchet space
Contact:

Post by Kuroneko »

Durandal wrote:The method to develop and test algorithms is experimental, but the actual classification and study of them is heavily based in math. ... the part of computer science that involves approximating these languages mimics what a physicist does when he develops a formula to approximate natural behavior.
I disagree. For the physicist, the behavior of his object of study is even in principle uncertain, though of course of course there may be strong evidence of it behaving in some specific manner (that being the point of physics). On the other hand, computer algorithms are in principle perfectly predictable, the computing device being assumed to behave in a regular way specified prior to such experiments, and concerns to the contrary are outside the field. If a computer scientist discovers that the system does not perform as prescribed (e.g., the infamous Pentium bug), he or she would simply tell the engineers to get it right or file a bug report to the writers of the compiler, as the case may be. The physicist has no such option--the goal of the physicist's experiments is to discover the behavior of the system in the first place.
User avatar
Durandal
Bile-Driven Hate Machine
Posts: 17927
Joined: 2002-07-03 06:26pm
Location: Silicon Valley, CA
Contact:

Post by Durandal »

I think you misinterpreted what I said. In computer science, some problems, like the halting problem, are simply unsolvable. But we can attempt to approximate solutions within certain constraints. This is a very active area of research. We can't make a Turing machine that decides all Turing machines, but if we can decide some with perfect accuracy or all with fairly good accuracy, that may be enough for certain situations.

That sounds like engineering, and it is, but the process by which someone trying to refine such an algorithm goes through is very much similar to what a physicist does when making a model. If you think of unsolvable problems as naturally occurring things that we try to describe, the models of those unsolvable problems are approximations which are measured based on accuracy to the original.
Damien Sorresso

"Ever see what them computa bitchez do to numbas? It ain't natural. Numbas ain't supposed to be code, they supposed to quantify shit."
- The Onion
User avatar
Ariphaos
Jedi Council Member
Posts: 1739
Joined: 2005-10-21 02:48am
Location: Twin Cities, MN, USA
Contact:

Post by Ariphaos »

Kuroneko wrote:Computer science is not a science in the strict meaning of the term. One of the subfields you're looking at is the development of code, either to efficiently analyze data or human-computer interfaces (including broadly operating systems or more narrowly GUIs, etc.), which would be more analogous to engineering. The other would be the theoretical analysis of alorithms and related structures, which would fall under mathematics. Either way, its underlying process of uncovering underlying principles is not experimental, so it is not a proper science.
Well, in many cases a computer scientist has to have an understanding of electrical physics and properties in order to fully utilize a system, though this is largely relegated to computer engineering degrees. However, it doesn't actively develop this area (not directly, anyway).

Artificial intelligence and some aspects of large-scale networking could be considered a science, if you figure that social sciences are indeed sciences and that the brain is basically such an AI.

I tend to find algorithm tweaking more akin to logic than just normal math, though non-standard computers (analog computing, DNA computing, quantum computing, etc) deviate significantly from the pure math-logic level.
Durandal wrote:I think you misinterpreted what I said. In computer science, some problems, like the halting problem, are simply unsolvable. But we can attempt to approximate solutions within certain constraints. This is a very active area of research. We can't make a Turing machine that decides all Turing machines, but if we can decide some with perfect accuracy or all with fairly good accuracy, that may be enough for certain situations.
The halting problem is a rather poor example here, since it has its roots solely in math - eg, find the largest prime pair. Is there such a thing? It's a simple demonstration of the halting problem, and entirely mathematical.

My main issue with Kuroneko's position is that ultimately, he's creating a division between mathematics and physics, and inside that gulf are other things currently understood to be sciences, such as biology and chemistry, and as more and more of the math behind these ultra-complex operations becomes solvable, the more such a division is just going to consider them to be 'applied math+physics' just as Kuroneko is claiming computer science to be.

Circuits and algorithms are not getting simpler.
User avatar
Kuroneko
Jedi Council Member
Posts: 2469
Joined: 2003-03-13 03:10am
Location: Fréchet space
Contact:

Post by Kuroneko »

Durandal wrote:I think you misinterpreted what I said. In computer science, some problems, like the halting problem, are simply unsolvable. But we can attempt to approximate solutions within certain constraints. This is a very active area of research. We can't make a Turing machine that decides all Turing machines, but if we can decide some with perfect accuracy or all with fairly good accuracy, that may be enough for certain situations.
I did misinterpret what you said somewhat (apologies), but lacking more information, I do not yet see how it affects much of what I said. Turing machines are idealized mathematical constructs, so in as much as the computer scientists studies algorithms from that perspective, he or she is doing mathematics. On the other hand, the halting problem is solveable on any finite-memory machine, so system behavior is still in principle known beforehand.
Durandal wrote:That sounds like engineering, and it is, but the process by which someone trying to refine such an algorithm goes through is very much similar to what a physicist does when making a model. If you think of unsolvable problems as naturally occurring things that we try to describe, the models of those unsolvable problems are approximations which are measured based on accuracy to the original.
Could you clarify what sort of experimentation would be performed in this case?
User avatar
Durandal
Bile-Driven Hate Machine
Posts: 17927
Joined: 2002-07-03 06:26pm
Location: Silicon Valley, CA
Contact:

Post by Durandal »

Kuroneko wrote:I did misinterpret what you said somewhat (apologies), but lacking more information, I do not yet see how it affects much of what I said. Turing machines are idealized mathematical constructs, so in as much as the computer scientists studies algorithms from that perspective, he or she is doing mathematics. On the other hand, the halting problem is solveable on any finite-memory machine, so system behavior is still in principle known beforehand.
Bad example then. Take a problem that can be solved, but it takes exponential time to do it. Researchers might discover a way to solve the problem in polynomial time that only works to a certain extent or in certain limitations. The scientific approach is testing approximate algorithms against the results of the real thing.
Could you clarify what sort of experimentation would be performed in this case?
It's pretty simple. Just compare the hit / miss ratio of the approximation model to what would come out ideally. All problems in computer science can be boiled down to the question "Does this string belong to this language?" An algorithm that decides a certain language will always be able to answer yes or no for any given string to this question.

If you make an algorithm that can decide this for a subset of all strings, then the "better" algorithm or model might be the one that classifies more strings correctly.

I think you might be confusing algorithms with languages. (Probably due to my poor wording previously.) A language in computer science is something like {w | w is a string with at least one occurrence of the sub-string 111}. There is no "behavior" to them. Behavior comes in when you develop a Turing machine (algorithm) to decide a language.

Does that clarify things?
Damien Sorresso

"Ever see what them computa bitchez do to numbas? It ain't natural. Numbas ain't supposed to be code, they supposed to quantify shit."
- The Onion
User avatar
Kuroneko
Jedi Council Member
Posts: 2469
Joined: 2003-03-13 03:10am
Location: Fréchet space
Contact:

Post by Kuroneko »

Durandal wrote:Bad example then. Take a problem that can be solved, but it takes exponential time to do it. Researchers might discover a way to solve the problem in polynomial time that only works to a certain extent or in certain limitations. The scientific approach is testing approximate algorithms against the results of the real thing.
Then perhaps we're not in as much disagreement as might appear (or perhaps it is). I'm not denying that the approach is scientific in some sense, merely that this similarity is insufficient to make it a science. Which, incidently, you did not explicitly claim above, but it is how I interpreted you.
Durandal wrote:It's pretty simple. Just compare the hit / miss ratio of the approximation model to what would come out ideally. ... If you make an algorithm that can decide this for a subset of all strings, then the "better" algorithm or model might be the one that classifies more strings correctly. ...
That's what I thought it would be like. By that determination, designing and improving a pattern-recognizer, for say, submarine sonar, would be a science, based on whether it can tell a whale from an Akula sub. There needs to be much more, which you have not yet provided. Specifically, what would the computer scientist actually do with these results as far as theoretical computer science is concerned?
Durandal wrote:I think you might be confusing algorithms with languages. (Probably due to my poor wording previously.) A language in computer science is something like {w | w is a string with at least one occurrence of the sub-string 111}. There is no "behavior" to them. Behavior comes in when you develop a Turing machine (algorithm) to decide a language.
I was referring to the fact the halting problem does not exist except as a mathematical abstraction--on any physical computer system, the result of a program is in principle determinable.
Last edited by Kuroneko on 2006-05-25 02:16am, edited 1 time in total.
User avatar
Xon
Sith Acolyte
Posts: 6206
Joined: 2002-07-16 06:12am
Location: Western Australia

Post by Xon »

skotos wrote: The same thing is not true of a computer program, proving or even demonstrating the correctness of a program is very difficult given our current level of knowledge.
All but the utter most trivial programs(and even these are iffy) are mathemetically imposible to prove correctness.
"Okay, I'll have the truth with a side order of clarity." ~ Dr. Daniel Jackson.
"Reality has a well-known liberal bias." ~ Stephen Colbert
"One Drive, One Partition, the One True Path" ~ ars technica forums - warrens - on hhd partitioning schemes.
User avatar
Durandal
Bile-Driven Hate Machine
Posts: 17927
Joined: 2002-07-03 06:26pm
Location: Silicon Valley, CA
Contact:

Post by Durandal »

Kuroneko wrote:Then perhaps we're not in as much disagreement as might appear (or perhaps it is). I'm not denying that the approach is scientific in some sense, merely that this similarity is insufficient to make it a science. Which, incidently, you did not explicitly claim above, but it is how I interpreted you.
I'd actually call it a mathematical science. It's a scientific approach to modeling mathematical problems. It may not be a science in the sense you're describing, but I can't really think of any other way to approach the field that would be as scientific.
That's what I thought it would be like. By that determination, designing and improving a pattern-recognizer, for say, submarine sonar, would be a science, based on whether it can tell a whale from an Akula sub. There needs to be much more, which you have not yet provided. Specifically, what would the computer scientist actually do with these results as far as theoretical computer science is concerned?
Theoreticians would probably like to see a pretty good approximation of an algorithm that can decide the halting problem, but they're more interested in idealized algorithms. It's a scientific approach, but as to how basic principles are uncovered, that's a different ball-game.

Theoretically, there are things about languages that we don't know even though we can precisely define a language. For example, can all languages be decided by a Turing machine in polynomial time? The research going on into this question is really a mathematical question, but if you're saying that in a science, aspects of the system are not known beforehand, this would seem to qualify.

Most computer scientists are convinced that P != NP (that is, languages that can be decided in polynomial time on non-deterministic machines cannot necessarily be decided in polynomial time on deterministic ones) because of experimental data. Basically, we've modeled a lot of languages, and we still haven't come across an algorithm to, for example, find if a graph has a k-clique in polynomial time on a deterministic machine.

This problem could be an instance where computer scientists have to "settle" for experimental data to say that P != NP, whereas normally they would prefer a mathematical proof.
Damien Sorresso

"Ever see what them computa bitchez do to numbas? It ain't natural. Numbas ain't supposed to be code, they supposed to quantify shit."
- The Onion
User avatar
Edi
Dragonlord
Dragonlord
Posts: 12461
Joined: 2002-07-11 12:27am
Location: Helsinki, Finland

Post by Edi »

Computer science as a generic term is rather vague, because it covers such a huge diversity of fields. Software development and algorithm research is very different from the deep hardware stuff that ventures very much into physics and engineering.

I'd not classify it as a pure science field of its own, but rather a science of applied math and physics. That would cover most of it, and the rest seems to be basically either almost purely mathematical (the algorithm research, if I understoof correctly), or physics but even most of the physics stuff such as you see on the hardware side is more engineering oriented than actual theoretical physics.

I'll qualify that this is my opinion and may very well be flawed, so take with an appropriate amount of salt.

Edi
Warwolf Urban Combat Specialist

Why is it so goddamned hard to get little assholes like you to admit it when you fuck up? Is it pride? What gives you the right to have any pride?
–Darth Wong to vivftp

GOP message? Why don't they just come out of the closet: FASCISTS R' US –Patrick Degan

The GOP has a problem with anyone coming out of the closet. –18-till-I-die
User avatar
Durandal
Bile-Driven Hate Machine
Posts: 17927
Joined: 2002-07-03 06:26pm
Location: Silicon Valley, CA
Contact:

Post by Durandal »

Computer science doesn't really reach all the way down to micro-processor design. That's more the domain of electrical engineering. (Though the EEs who do that stuff undoubtedly have vast wells of in-depth understanding of algorithm design and computer science.) In other words, I would not expect your average computer science major to comprehend the quantum mechanical interactions that go on at the micro-processor level.

As a whole, computer science is a conglomeration of lots of things. Artificial intelligence, as a sub-field, borrows from practically every other field of study in existence. (I dare say that the AI folks do a better job of scientifically modeling intelligence than most psychologists do.)
Damien Sorresso

"Ever see what them computa bitchez do to numbas? It ain't natural. Numbas ain't supposed to be code, they supposed to quantify shit."
- The Onion
User avatar
Ariphaos
Jedi Council Member
Posts: 1739
Joined: 2005-10-21 02:48am
Location: Twin Cities, MN, USA
Contact:

Post by Ariphaos »

Durandal wrote:As a whole, computer science is a conglomeration of lots of things. Artificial intelligence, as a sub-field, borrows from practically every other field of study in existence. (I dare say that the AI folks do a better job of scientifically modeling intelligence than most psychologists do.)
I think in my AI courses we spent about half the time discussing the structure of one brain or another. Often going back to smaller models like a snail or insect's brain.
User avatar
phongn
Rebel Leader
Posts: 18487
Joined: 2002-07-03 11:11pm

Post by phongn »

I've wondered if the "Computer Science" major should be split into two disciplines - one focused on research (aka what Knuth, Morris, Pratt did) and another focused on software engineering. As it is, many universities seem to be caught in a tug-of-war between the two, unsure of the proper mix for their graduates. Some do research, some do software engineering but there really is only one major.
User avatar
Ariphaos
Jedi Council Member
Posts: 1739
Joined: 2005-10-21 02:48am
Location: Twin Cities, MN, USA
Contact:

Post by Ariphaos »

phongn wrote:I've wondered if the "Computer Science" major should be split into two disciplines - one focused on research (aka what Knuth, Morris, Pratt did) and another focused on software engineering. As it is, many universities seem to be caught in a tug-of-war between the two, unsure of the proper mix for their graduates. Some do research, some do software engineering but there really is only one major.
Most CS degrees have a lot of electives, and at least at Tech was a science degree in credit qualifications rather than engineering (128 credits versus 136). I tried to argue for reduction in the former and moving to the latter, but they claimed we needed diversity and more credits would not be viewed highly. Which is true, but you can't have it all ways. Aargh.
Post Reply