Everything2
Near Matches
Ignore Exact
Full Text
Everything2

computer science

created by hahnfeld

(thing) by quantumet (3.1 y) (print)   ?   I like it! Thu Mar 09 2000 at 0:27:39

A common misconception is that computer science is equivalent to programming. This has led to several complaints by fellow students that they're not learning anything useful in their cs class. Computer science deals with algorithms, their implementation, speed, and feasibility, as well as with any other theoretical aspect of computer operation. Programming itself is more of an afterthought. Not that it's not important, but it is not the focus.

(thing) by neil (8.4 mon) (print)   ?   I like it! Sat Jun 17 2000 at 8:28:07

Interesting subfields of computer science: Well-known and highly-regarded computer science schools (in no particular order): If I left out your favourite field of study or your alma mater, please /msg me. I am especially looking for non-US CS schools.

Until now, this writeup has never included the word metanode in its text or title :)


(idea) by jliszka (2 y) (print)   ?   1 C! I like it! Wed Mar 07 2001 at 1:27:14

Most people think computer science is something to the effect of the study of computers. But it's not. It's really the study of computation: what can be computed. Of course everything that can be computed can be computed via a Turing Machine (a DFA and a tape).

So zooming in a little, we have have to figure out how exactly to go about computing things (the DFA), and how to represent information (the tape). Incidentally, this is why computer geeks go around making CS metaphors about every real-life thing (i.e., the conversation stack, binary search) -- because the majority of real life is dealing with information and solving problems.

How we actually go about implementing our Turing Machines (or close approximations thereof) -- and making them easy to use -- is left as an exercise to the reader. I see it as purely incidental to the science. The fact that we have these things called "transistors" and "keyboards" and "operating systems" that work in whatever way they do might be completely different if we rewound time and started the whole computer-invention process over again. But one thing wouldn't change, which is the essence and true nature of computer science: the computable.


(idea) by ariels (12.6 hr) (print)   ?   2 C!s I like it! Tue May 22 2001 at 12:58:54

Computer Science is no more about computers than astronomy is about telescopes.

Edsger W. Dijkstra

The purpose of computation is insight, not numbers.

Richard Hamming

"What is Computer Science?" Do not expect a single answer to this question (or to similar ones; "What is Mathematics?", "What is Applied Mathematics?", "What is Physics?", "What is Theatre?", "What is Literature?" have all been answered many times, and differently each time).

It is tempting to view CS "merely" as the theoretical basis of computing: some formal language theory, some logic and mathematical logic, lots of computational complexity, some algorithms, a little discrete mathematics (the author's bias clearly shows in this list!). They're all important parts of what has come to be known as "Theory of Computer Science" (TCS). Computers and their programs, if you will, are merely a few bits taken from Mathematics and (depending on your point of view) either "frozen" or "given life".

But is that "all"?

Probably not; computers are more interesting than that. The choice of these particular fields isn't arbitrary; the fields "in" CS are chosen because of their applicability to real problems, as implemented with real software on real hardware. Of course, not every problem (or solution!) is directly applicable to a current problem. But the same is true in Physics: Physics is not Engineering.

CS is the academic backing to computing. Computing raises many questions: How can I optimize the flow of goods between several centres through given delivery channels? How can I best pack different-sized pallets onto airplanes? How can I build a cheap circuit to add integers quickly? How can I automatically debug programs? The choice of solution "in the field" needn't be the optimal choice; the optimal choice might not be known (or might be known but too expensive to implement). CS tries to answer the theoretical questions, but also to provide tools to choose and implement the practical solution.

So is CS the "techniques of molecular biology" of Mathematics, a servant whose sole task is to free mathematicians by providing the services required by certain branches of engineering? Of course not. The questions of CS stem from real problems, but are of independent interest!

Questions of distributed computing were studied well before modern "P2P" systems were a glimmer in anyone's eye. The practical motivation was always clear, even if one particular application (deployment on a worldwide Internet) was not. And distributed computing is not relegated to serving P2P systems; it is "universal": similar questions arise (and are solved) when distributing databases (across a closed, controlled network), or on a Beowulf cluster running certain tasks. And they will arise in yet other systems.

That's what a theory is: a recognition that certain different problems are similar in some ways, and (hopefully) some techniques for solving them.

And that's what CS does. It starts from interesting problems related to particular engineering disciplines, and provides theories to help attack them. But the source of interest in the problems is not the monetary worth of the solution, or the engineering importance of the solution (that is why there is much more theory of databases than there is of word processors, for instance). Unlike other sciences, the problems of CS stem from human creations, not from Nature. But like other sciences, CS is a "good bits version".

The scope of most CS departments is certainly wide enough to reflect this point of view. Nonetheless, many academic CS departments insist on also being engineering departments. This is probably a mistake. The considerations of engineering are very different from those of science. There is much common ground between the two, of course, but there are many more differences. Software engineering is a related but separate discipline (just like different people build dams and create techniques to solve partial differential equations, even though both are about holding water).

It is instructive to consider some of the field's founders.

Computation is not computer science. Neither is the servant of the other. Both co-exist, and each provides ideas for the other.


(idea) by jprockwell (4.2 mon) (print)   ?   2 C!s I like it! Wed May 23 2001 at 7:38:52

I too used to think that computer science was just about theory. When I was an undergrad, I was subjected to insults from 'real' scientists who thought that computer science was just about programming. I countered, "No it's not! Look at all this theory we have! See, our field is just as rigorous as theoretical physics!" And eventually I convinced myself that computer science was in fact, just theory, and all that programming and computer systems (i.e. hardware and software) crap was just 'implementation detail.'

I then went to graduate school, and took a heck of a lot of CS courses. I realized that limiting computer science to just theory would be doing a disservice to the field. What make computer science alive and relevant are the applications, the computers, and the programs. Furthermore, it's very hard to separate the study of applications from the study of systems from the study of theories. Think about artificial intelligence or computer graphics. Do those subfields have applications? You bet. Software and hardware? Tons. Theories? Oh yes. You can only separate the subfields into theories, systems, and applications after all those things are developed. The development process itself deeply intermingles the three.

To set the record straight:



Computer science is a field of study with the following objectives:
  1. Development of mathematical theories of computation.
  2. Construction of physical systems that perform computations.
  3. Applications of computational theory and systems to real-world problems.
All three objectives are equally important. In fact, the three objectives are deeply interdependent.

The first objective gives structure to the field -- a road map if you will. Without a formal foundation to guide us, computer science will be nothing more than the application of trial and error, heuristics, folklore, and voodoo. These theories help us understand why certain approaches work, gives us guarantees they will, and helps us predict new approaches. Fields like algorithm design, numerical analysis, computability theory, and logic are examples of these theories.

The second objective gives the means for computer science to be useful. Computer hardware and software, in their physically realized form, make the theory useful and the applications possible. Abstractions and simplifying assumptions inherent in theory give way to concrete detail and complexity of reality. 'Implementation details,' often brushed over by theorists, are carefully considered and fleshed out. Studies of computer architecture, programming language design, operating system design, and software engineering concentrate on this objective.

The third objective gives purpose to computer science. This is the why of computer science. This is what allows computer science to have an impact in the real world. Additionally, applications often drive the development of systems and theories. Computer animation, electronic commerce, and computational physics are examples of these applications.

Remember: computer science = { computation } × { theories, systems, applications }


printable version
chaos

The Art of Computer Programming CS Alan Turing Hello World
Hardcore sleeping Carnegie Mellon University Turing Machine Software Engineering
^H Gödel, Escher, Bach: An Eternal Golden Braid Donald Knuth CIS
Natalie Portman Considered Harmful expert system MIT
Edsger W. Dijkstra conversation stack Brown University Artificial Intelligence
Computer Engineering God is Dead Cornell Morality without God
Y'know, if you log in, you can write something here, or contact authors directly on the site. Create a New User if you don't already have an account.
  Epicenter
Login
Password

password reminder
register

Everything2 Help

Cool Staff Picks
Just another sprinkling of indeterminacy
Bottom
Sudoku
Filesystem performance tweaking with XFS on Linux
Microsoft HTML de-bastardization
Thoughts on The Joy Luck Club
The Flying Lizards
Lexical Analyzer
It's a Wonderful Life
John Foster Dulles
((Cover))
Phaethon
And so, we made sweet love with the weather
Perry Mason
New Writeups
aneurin
Hilary Armstrong(person)
giantcactus
The Power of Electricity(personal)
TheLady
Eggs and tomatoes(recipe)
TheLady
Don't get me wrong - I'm a feminist(essay)
Scaevola
Scissors murder(person)
Yakushin
Green Chile Pecan, Red Chile Apple Pies(recipe)
TenMinJoe
BookMooch(idea)
Yakushin
Merlin(review)
Apatrix
Editor Log: May 2008(log)
Apatrix
Eggs and tomatoes(recipe)
locke baron
Sverdlov class cruiser(thing)
arcanamundi
IN THE GRIM FUTURE OF HELLO KITTY, THERE IS ONLY WAR.(fiction)
Glowing Fish
Northern Effect(idea)
Jet-Poop
Why I love Everything2(essay)
Rancid_Pickle
Old Scrotch Xmas(fiction)
This page courtesy of The Everything Development Company