Jump to content

Computer science is not a science!


hipmatt

Recommended Posts

I think several of you are confusing "computer science" (which is really about things like Turing machine theory and computational complexity and is a type of mathematics) with "computer architecture" (which is a branch of engineering and studies the architecture, design, fabrication, and operation of real computers and is a branch of engineering).

 

Quite a bit of science is relevant in computer architecture, including EM theory (transmission line effects on circuit boards), semiconductor physics, and so on.

 

But "computer science" as it's generally used in the US is in the math arena.


Your typical CS graduate couldn't tell you very much at all about how computers are built, in terms of things like transistor circuits and so on. Many of them couldn't even design a simple hardware state machine out of gates and flip flops. That's studied in electrical engineering. Of course, some CS majors learn some engineering, and some EEs (like me) learn some computer science. But you can make it through the graduation line in either case without doing so.


 

Can you think of any branch of academic study which is not about understanding things?

 

By that definition history and literature are science as well.


 

 

Science is about understanding things. Computer science teaches you to understand how computers work.

 

You could say computer science degrees aren't really science because at the end of the course you don't understand how a computer works or how to put a computer together yourself.

 

Yes, and I do say that. Computer science teaches you how to use computers (including how to program them). That doesn't mean just knowing a nice variety of languages, it also means understanding which one is fit for various purposes, understanding various algorithms for solving the classic problems that show up over and over again (searching, sorting, etc.), and knowing which algorithm to pick for which application and why, and so forth.

 

But like I touched on above, CS doesn't talk about how computers work in terms of circuitry and so forth. The capabilities of the computer are presented in much the same way the behavior of numbers and algebraic structures are presented in math, and you prove logically how to do various things. Compiler design, for instance, is very much an exercise in the mathematical theory of rigorous language structure.

 

An IRC friend of mine and I often lament the fact that there is not more "crossover training" between the CS of computers and the EE of computers.

Link to comment
Share on other sites

I think several of you are confusing "computer science" (which is really about things like Turing machine theory and computational complexity and is a type of mathematics) with "computer architecture" (which is a branch of engineering and studies the architecture, design, fabrication, and operation of real computers and is a branch of engineering).

 

Quite a bit of science is relevant in computer architecture, including EM theory (transmission line effects on circuit boards), semiconductor physics, and so on.

 

But "computer science" as it's generally used in the US is in the math arena.

Your typical CS graduate couldn't tell you very much at all about how computers are built, in terms of things like transistor circuits and so on. Many of them couldn't even design a simple hardware state machine out of gates and flip flops. That's studied in electrical engineering. Of course, some CS majors learn some engineering, and some EEs (like me) learn some computer science. But you can make it through the graduation line in either case without doing so.

 

 

By that definition history and literature are science as well.

 

Yes, and I do say that. Computer science teaches you how to use computers (including how to program them). That doesn't mean just knowing a nice variety of languages, it also means understanding which one is fit for various purposes, understanding various algorithms for solving the classic problems that show up over and over again (searching, sorting, etc.), and knowing which algorithm to pick for which application and why, and so forth.

 

But like I touched on above, CS doesn't talk about how computers work in terms of circuitry and so forth. The capabilities of the computer are presented in much the same way the behavior of numbers and algebraic structures are presented in math, and you prove logically how to do various things. Compiler design, for instance, is very much an exercise in the mathematical theory of rigorous language structure.

 

An IRC friend of mine and I often lament the fact that there is not more "crossover training" between the CS of computers and the EE of computers.

This is also something that has concerned me coming from the other direction. It puts me in the mind of cars.

 

Electrical Engineering teaches you how to build the car. Computer Science teaches you how to drive it. For most day to day applications, general design principles and rules of thumb will suffice. The person designing the car need never have driven one before, and the person driving doesn't need to understand all the intricacies of how it is actually built.

 

But as you move towards the cutting edge of high performance, the person designing the machine needs to know exactly how it is going to be driven and the person driving it needs to know exactly how it works, or you aren't going to be able to get the optimal results from it.

Link to comment
Share on other sites

But as you move towards the cutting edge of high performance, the person designing the machine needs to know exactly how it is going to be driven and the person driving it needs to know exactly how it works, or you aren't going to be able to get the optimal results from it.

 

The America's cup is an excellent example.

Link to comment
Share on other sites

Well, it is pointless to haggle over it, really. Words aren't always used exactly right, but I guess it really doesn't make any difference.


This is also something that has concerned me coming from the other direction. It puts me in the mind of cars.

Electrical Engineering teaches you how to build the car. Computer Science teaches you how to drive it. For most day to day applications, general design principles and rules of thumb will suffice. The person designing the car need never have driven one before, and the person driving doesn't need to understand all the intricacies of how it is actually built.

But as you move towards the cutting edge of high performance, the person designing the machine needs to know exactly how it is going to be driven and the person driving it needs to know exactly how it works, or you aren't going to be able to get the optimal results from it.

 

YES. I could not agree more. The bulk of my career was in "embedded system design," and I would wind up responsible for the hardware architecture, the detailed hardware design, and the layers of software that were most intimately connected to the hardware. I always thought of the whole thing as a fully unified design effort. Deciding exactly how to split functionality between hardware and software, exactly how to break the hardware into subassemblies (keeping in mind not only the economic and performance efficiency of the the product at hand, but also how useful those subassemblies will be for future products, and son on) was all just part of doing the job right.

 

So when you have people that are too specialized in hardware or software keeps them from being able to bridge that chasm. I do think that's a fault of how we approach education in that area in America. You always wind up with some people who self-train in a way that lets them cross over, but it's not as formally structured into the program as it should be.

Link to comment
Share on other sites

According to the dictionary definition of science, computer science is a science, so it's a science. Seems a bit pointless to debate the meaning of well defined words.

Which dictionary, and how does it fit?

 

Studying computer science makes you a scientist in the same way being a custodial engineer makes you an engineer.

Link to comment
Share on other sites

Which dictionary, and how does it fit?

 

Studying computer science makes you a scientist in the same way being a custodial engineer makes you an engineer.

 

:) I don't know if that's entirely fair - studying computer science does require you to think rigorously and logically. I think it does involve an "intellectual mindset" similar to that you bring to bear studying science and mathematics. The key difference, that makes it math in my eyes rather than science, is that you don't apply the scientific method to make new discoveries. You start with axioms and you build a logically correct structure on that foundation. That's more akin to math than science.

Link to comment
Share on other sites

Which dictionary, and how does it fit?

 

Studying computer science makes you a scientist in the same way being a custodial engineer makes you an engineer.

_ Just a Question here,, Is it needed to know how to program ,before one can become a ''Computer engineer''? Edited by Roger Dynamic Motion
Link to comment
Share on other sites

Perhaps we are not differentiating enough between a natural science and a science. I know from bitter experience that computer science is something which the Americans call "knowhow", and which I don't consider actual worthwhile knowledge at all. You can spend ten years studying computer science, and ten years later, computers have changed so much that all the crap you learned ten years earlier is totally useless. It is disposable and expendable information of no lasting value, because computers are an artificial human construct.

 

That is not how I see a natural science, which even if it's ten years out of date, it pertains to the natural world and still of value.

Link to comment
Share on other sites

Perhaps we are not differentiating enough between a natural science and a science. I know from bitter experience that computer science is something which the Americans call "knowhow", and which I don't consider actual worthwhile knowledge at all. You can spend ten years studying computer science, and ten years later, computers have changed so much that all the crap you learned ten years earlier is totally useless. It is disposable and expendable information of no lasting value, because computers are an artificial human construct.

 

That is not how I see a natural science, which even if it's ten years out of date, it pertains to the natural world and still of value.

 

There are components of a (good) computer science education that don't change. Algorithm complexity theory, data structures, standard classic algorithms like searching, sorting, hashing, and so on - those things don't change as technology changes. Proper application of them depends on the underlying technology, and so that changes.

 

You are right up to a point, though - languages come and go, hardware changes, and so on - the usefulness of knowledge of that sort is ephemeral.

Link to comment
Share on other sites

:) I don't know if that's entirely fair - studying computer science does require you to think rigorously and logically. I think it does involve an "intellectual mindset" similar to that you bring to bear studying science and mathematics. The key difference, that makes it math in my eyes rather than science, is that you don't apply the scientific method to make new discoveries. You start with axioms and you build a logically correct structure on that foundation. That's more akin to math than science.

Not trying to knock the profession. A significant part of my major in college was based in computer science.

 

It just isn't science.

Link to comment
Share on other sites

Which dictionary, and how does it fit?

 

Just checked a few more. According to some, computer science is a science, and according to others it isn't, if you purely go by their definitions of science. Nice mess :wacko:

Edited by Thorham
Link to comment
Share on other sites

_ Just a Question here,, Is it needed to know how to program ,before one can become a ''Computer engineer''?

I believe computers are so complex today that some engineer memory systems, some IO systems, etc. It is possible many of them do not need to know how to program. However, whoever designs changes to the instruction processing unit must understand programming. Moreover, adding video processing units requires knowledge of the algorithms used in video processing.

 

Similarly, programmers who write operating systems, compilers and optimizers need to know details about the engineering of a CPU chip to take advantage of the hardware. The majority of CS graduates are hired by corporations to improve their computer systems. Recently, these jobs require AI programming of business systems. Thus, there exists a spectrum of people with various degrees and overlapping knowledge needed to fill the variety of available jobs with skills ranging from craftsman to scientist.

Link to comment
Share on other sites

It is a mess, and the software industry is as well. A large fraction of working programers don't, in fact, have familiarity with what's really going on under the hood of the systems they work on and also don't have familiarity with those "core" things I mentioned, like algorithm theory, basic data structure concepts, and so on. A lot of programming these days involves relying heavily on software libraries that hide all of that, and which have their own bugs and quirks which the programmer is likely unfamiliar with. On top of that, a lot of the day to day work involves either modifying software written by someone else, or working in a very small niche of some large system in collaboration with hundreds or even thousands of other programmers. These hoards of programmers will generally have no idea what one another is doing and wind up creating pieces that, when brought together, lead to more bugs or security vulnerabilities.

 

When evaluating the performance of programmers, management usually rewards speed of execution (which may later turn out to have led to bugs or vulnerabilities) rather than taking the time to develop the deep understanding required to do a better job. Said managers are often in no way technical themselves, and yet they are expected to lead and evaluate technical staff.

 

It's no wonder we wind up with a world full of buggy, sloppy products that make very poor use of the underlying power of the hardware.

Link to comment
Share on other sites

I don’t know that you guys are helping hipmatt, other than giving him the debate he needs to answer.

 

First, which class is this for? Is it a computer science class?

 

Second, he needs to define using academic sources the criteria that define science. And then he needs to explain his position and defend it in an essay.

 

My approach would be to find sources that label histories, such as the stone age, atomic age, and find all you can about if modern computer science defines science. But remember computer science is not new. I’m not sure exactly where it starts, but computer science is probably as old as math.

 

I’m not sure where to find a journal entry that tries to disprove that computer science is not a science. I would start with a search within your school’s library. But is the purpose of the essay to argue a position or is it to do research? Obviously, there really isn’t a correct answer? At least not that anyone can agree.

 

My tip is to search for “Is computer science a science?” in an Education Journal. That is where you might find some peer reviewed “opinions”. I can’t imagine a computer scientist debating that he is not a scientist in a journal. Remember do what the assignment says. Use the criteria of a scientist, you have found by research to support your belief that it is a true science. This is an English and not a science class essay correct?

 

I could be wrong, of course. But I have had to write so many papers for academic writing that I learned they care that your writing is clear, meets the requirements, and is structured academically. If you are like me, you approach this problem thinking good and creative content will get you the grade. I learned the hard way that this is not how academic educators think. I’m just sharing what I learned and don’t like to write.

 

BTW, if your teacher is not a scientist, it is easy to confuse her. Education academics don’t like it when the laymen can’t understand. Write the paper so your “audience” understands it. Also there may be a deference between what a college defines as computer science and what the profession stands for.

Link to comment
Share on other sites

+1 to Trurl for bringing focus back to the thread.

 

I particularly liked the bits about Education academics adn the invocation to define Science (though I would use the word explore).

 

Hands up all those who studied Domestic Science at school.

 

How about Agricultural Science?

 

You can get a Phd in that.

 

Is Science only about discovering new things ?

 

Or does it include cataloguing and classifying existing knowledge and practice and establishing relationships between elements of this knowledge?

Edited by studiot
Link to comment
Share on other sites

 

hipmatt

I am writing an essay on why it is considered a science.

 

I agree with Trurl, arguing that CS is not a science is not helpful to the OP, particularly in a homework thread, and also with his offered outline plan for the essay.

 

@hipmatt

 

You say you have found lots of articles to say why it is a science, but none to say why it is not.

 

Do you have no ideas of your own or are you just going to copy what others have said ?

 

If so are you going to pass these ideas off as your own or are you going to acknowledge the sources?

Edited by studiot
Link to comment
Share on other sites

He's arguing the opposite of the thread title. Is more than a bit confusing and inviting of debate.

 

According to post#1 CS is defined as a Science, for the purposes of the homework.

 

Users of homework help often seen to write a confusing account of what they might actually mean.

Link to comment
Share on other sites

 

I agree with Trurl, arguing that CS is not a science is not helpful to the OP, particularly in a homework thread, and also with his offered outline plan for the essay.

 

@hipmatt

 

You say you have found lots of articles to say why it is a science, but none to say why it is not.

 

Do you have no ideas of your own or are you just going to copy what others have said ?

 

If so are you going to pass these ideas off as your own or are you going to acknowledge the sources?

 

 

I don’t know that you guys are helping hipmatt, other than giving him the debate he needs to answer.

 

First, which class is this for? Is it a computer science class?

 

 

 

 

Thank you guys so much for all your Wisdom!

First i would like to explain a little more. It is for an English class and i had to pick an article in my field of study. I was going through a program for Network admin, But then realized i need a full on degree to get anywhere so i started school for BS of CS. (wish me luck)

 

I have read through all the posts and would like to thank everyone who replied!

 

So I came across an article by the name of “the science in Computer science” by Peter Denning. I read the whole article and it argues the view point computer science is science.

Some people say that any field of study that calls themselves a science is not a science.

He states this

 

“Computing’s original focal phenomenon was information processes generated by hardware and software. As computing discovered more and more natural information processes, the focus broadened to include “natural computation.” We can now say “computing is the study of information processes, artificial and natural.”

 

That is fine and dandy, but i have not been able to find articles that debate this viewpoint.

I do have my own opinions but i will use what i find in peer reviewed articles.

All my work will be cited.

 

I really appreciate you guys posting! I think I found my home. I look forward to reading your guys topics and posts as well!

For my introduction paragraph I have this. (so far)

 

What is your profession? Computer science. Oh? Is that a science? Sure, it is the science of information processes and their interactions with the world. I’ll accept that what you do is technology; but not science. Science deals with fundamental laws of nature. Computers are manmade…” [1] A misconception brought on by the lack of familiarity of computer science usually can be found to be the encouragement to such conversations as these. If we can take the time to look deeper of the field of computer science we will find more than just a keyboard and a mouse. “Computer science studies information processes both artificial and natural”, [2] best put in the words of Peter Denning. What makes a field of study a science? How did computation started? Computers are, in fact, not just a tool used by other types of fields but also a science within itself because computer science study information both artificial and natural.

 

I am arguing the claim that computer science is a science even though some of you guys made very good points to why it is not.

Science I could not find much about arguing against the claim i did find a letter from Fred Brooks jr. called "The computer scientist as a toolsmith"

Here he states "I submit that by any reasonable criterion the discipline we call “computer science” is in fact not a science but a synthetic, an engineering, discipline."

 

Which then i argue criteria for credibility as science

Link to comment
Share on other sites

I'm glad to hear you have some ideas of your own, particularly when you are making a point I hadn't though of. +1

 

( I must admit I have always cleaved to the notion that CS should really be Computer Engineering or Computer Technology - it is at best an applied science)

 

This is a good topic for you, although posting the actual essay title here would be useful.

It encourages you to read widely and broadens your horizons.

There will be plenty of time for immersion in the gory details of CS within your course. Good fortune.

 

Talking of reading, perhaps I can offer an idea or two.

 

The growth in computer technology has prompted the deveopment of a new branch of Mathematics - Discrete Mathematics (you will study much of this)

and even

 

Concrete Mathematics: A Foundation for Computer Science (note their use of the terminology)

 

Graham, Knuth and Patashnik.

 

Addison Wesley.

 

Another line of enquirey develops what I said about Science being a repository of knowledge.

 

No one would classify that unfortunately famous textbook Physics by REsnick and Halliday as anything other than a Science text.

 

Yet Archimedes theorem is over 2000 years old and only used by engineers today.

 

Hopefully this has planted a seed; it is your job to develop this.

 

Remember that Cs cannot claim patent on information theory so don't rely on that principle alone (although it is a good one).

 

Many Sciences and even other disciplines have an input to information theory.

 

Hope this helps

Link to comment
Share on other sites

Isn't Computer science part of electronics ?

 

 

I still don't have any clue about how programming languages are made , even though there are plenty of programming languages .

Edited by bimbo36
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.