Talk:Computer science/Archive 1

Def. of CS; Relation to engineering
Here is the previous definition:
 * Computer science (informally, CS, CSC or compsci) is, in its most general sense, the study of computation and information processing, both in hardware and in software.

I felt it focused on the study of the knowledge rather than focus on the knowledge that is produced by the science. The previous definition generally worked for the academic domain, but it didn't work for the application of the science. - Jhballard 18:14, 27 Mar 2005 (UTC)

Perhaps the math atlas may be used in some way to group subfields. Other suggestions are welcome -- HJH


 * Computer science is a new science; only in the last 20 years has it begun to develop the benchmarks of the more mature sciences. 

I don't think it is a science since it doesn't employ the scientific method. Also, maybe we should mention the roots in electrical engineering, mathematics and linguistics. The 20 year number seems much to low. How about


 * Computer science is a relatively new field with roots in electrical engineering, mathematics and linguistics. Only in the last third of the twentieth century has it begun to be recognized as a separate discipline and developed its own methods and terminology.

The first computer science department was founded at Purdue University in 1962.

-- I think it's a valuable change. -- HJH


 * But computer science does use the scientific method. A computer scientist:
 * Develops a hypothesis about a particular way of organizing systems, or solving a given computational problem;
 * Devises an experiment (typically involving the construction of a computational artifact) that tests this hypothesis; and
 * Evaluates the results by comparing its behavior with that of other, previously known computational artifacts (controls).
 * The fact that the phenomena that the computer scientist studies are usually human constructions, or that much of the analysis can be done using mathematical instruments rather than physical ones, does not make this less scientific. --k.lee

The first line seems misleading. Computer science seems to me to be much more about the design of programs than computers; the latter is computer engineering. I wouldn't isolate the two entirely, but making "the design ... of computers" the first point in this article seems to lead it off in the wrong direction. --FOo

The distinction between science and engineering is not made clear in the topic page. The delicate interplay between hardware and software is not given enough emphasis. There is no mention of artificial intelligence as the foundation for the enthusiasm that we have for computers. And I find it difficult to view things like "operating systems" under the "Algorithms" heading.

How do we fix all this? Do we make one small change after the other? Or do I rewrite the entire page?

Randal Leavitt 02:18 Oct 6, 2002 (UTC)


 * Randall, the page is basically a list of subdisciplines. I think that part of the page is OK, myself (though there's always room to argue about subclassifications).  Where I agree the page is lacking is in providing an overview, and you can certainly add/rewrite without upsetting too many people there.  Overviews are extremely hard to write, and be prepared for some discussion before the article settles down into an acceptable form. --Robert Merkel

Computer Science is the science of computing. What can computation do? What problems can be solved by computation and in fac[t require computation rather than one evaluation of a single mathematical formula? How can unsolvable problems be proved unsolvable? For solvable problems, how can they be solved (algorithms), and what is the minimum in resources (time and space) needed? The answers to these questions form the basis of the field of Computer Science.

Certainly, Computer Science is a very new field with much interaction with mathematics and electrical engineering where it started, but it arose as a discipline because the problems of computation were not properly in the scope of the other two fields, and became separate as this fact became apparent. An example of this is the Fast Fourier Transform. Fourier Transforms have been known in mathematics since the 19th century, but the idea of performing them in a systematic fashion so that they could be done Fast is a very 20th century Computer Science idea. There is a certain feedback, too-- iterative computational methods such as Jacobi or Gauss-Seidel for solving matrix problems have in turn allowed mathematicians to probe their discipline more deeply, which then leads back to computational notions about matrices such as "ill-conditioned" or "tridiagonal", such that it can become hard to draw a line between the two disciplines. At this time, Software Engineering is part of Computer Science, but may split off, and Management Information Systems, which is more concerned with exactly what it is called, "management of information", is closely related, databases being of concern to both disciplines. A good write up on Computer Science, I feel, should make distinctions between these closely related subjects.

Brenton Chapin


 * Interesting points. Why don't you have a go at writing it up? --Robert Merkel

Computer science is the study of both computers and software. Today, the main emphasis is on software, however, computer hardware implements algorithms, and it has correctness issues, just like software. All computer engineers must learn some computer science.

Computer science is much more than programming languages and algorithms. It is the study of what is possible with computers and software.

The von Neumann machine is the most common architecture available to buy, today. However, CS explores the possiblities of all kinds of architectures, including random and parallel machines.

And just what is a "random" machine anyway? Presumably someone knows; searching for this on google isn't helping, so *please*, someone, at least add an external link. I'll do the writeup myself, but I need some material.

IS/IT/MIS are all about operations. MIS is particularly about financial and business operations, however IS/IT are much broader.

The lists at the bottom of this page are much more like a list of basic concepts, than an artidle. Real content would be nice.

Removed this line. See Software engineering for a discussion of the relationship between software engineering and traditional engineering.


 * As the name suggests, many of its principles are adapted from other areas of engineering.

List of &#8220;Leading Computer Scientists&#8221;
This remarkably short list needs some serious updating for its glaring omission of contributors of historical stature. If you want to cite Gene Golub and Edsger Dijkstra, the following additions would be in order:


 * Konrad Zuse, builder of the first binary computer in the 1930s, for which he devised a programming language well ahead of its times.


 * Alston Householder, for his contributions to the field of matrix computations. [see more on Householder in the MacTutor Biographies]


 * John Backus, for the invention of FORTRAN, the first practical high-level programming language.


 * James Wilkinson, for the technique of &#8220;backward error analysis&#8221; and advances in the field of matrix computations. Wilkinson was also a principal mover in the development of the Pilot ACE, the first British computer, in the late 1940s. [see more on Wilkinson in the MacTutor Biographies]


 * Kenneth Iverson, inventor of APL, for his contribution to interactive computing.


 * James Cooley and John Tuckey, for the Fast Fourier Transform and its impact on scientific research..


 * William Kahan, for the IEEE floating-point standard.


 * Who else would you add?


 * I took a liberty to rename the section into "Prominent Names in Computer Science" and I suggest the following criteria for putting names into the list, namely, the Pioneering criteria.


 * (1) The person is famous for the contribution that dramatically changed the scope and essence of the Computer Science as a whole.
 * Examples:
 * Backus passes this test, Ivrson doesn't (based on the listed reasons)
 * Alan Housholder must be moved into the page of "Prominent Namies in Matrix Computations" or similar.
 * (2) However insignificant, the person was world's first in something fundamental to Computer Science.
 * Based on this criterion, I added Ada Lovelace to the list.
 * ;mikkalai 14 Nov 2003

If we are going to include language developers, then surely people like Conway (Algol 60), Niklaus Wirth (Pascal, Modula 2, Oberon, Euclid etc.), Brian Kernighan and Dennis Ritchie (C, Unix), Bjarne Stroustrup (C++) Adele Goldmann (Smalltalk), Bertrand Meyer (Eiffel) should be included. There were some excellent people who worked on Algol and Algol 68 designs - the latter based on a 2 level grammar. Then of course there was work done on syntax directed analysis, and compiler-compiler systems.

Rather than Goldmann, Goldberg, will be probably better, and more precisely Alan Kay with his 2004 Turing Award has now a merited recognition.... See HP site and ACM.

BP

Work on operating systems is a bit of a disaster, since we've now evolved to have the wretched Windows OS everywhere - it's good enough for its general purpose, but it is not good enough for real-time, or highly secure systems. There was a lot of work on these areas in the 1970s and 1980s, but most of it seems to have been discarded. Even Unix was not necessarily an advance in all respects over Multics (Corbato) on which it was based.

What about databases? Ted Codd?

Communications - going over to hardware etc. - perhaps Larry Roberts.

From a theoretical POV, surely Church and Post should also feature alongside Alan Turing. David Martland 09:51, 27 Sep 2003 (UTC)


 * There's a lot who could be added. I think the main article should limit itself to 20 or so that are most famous, then link to a List of computer scientists for the larger crowd of notables. Stan 13:17, 27 Sep 2003 (UTC)


 * If you want some candidates for your "20 most famous", you could try Turing Award. I added, at a minimum, stubs for all the winners.--Robert Merkel 00:45, 30 Sep 2003 (UTC)
 * I agree with your comments, though the "list of computer scientists" should have a sentence or 2 about each, giving a clue about what each did.


 * See my remark above about the Pioneering criteria for putting into the list. A person may earn Turnig Award for pushing to excellence of things already known, but this does not necessarily change the face of Computer Science. The Hall of Fame can be miles long. Why don't we split it into lobbies related to particular "subsciences", reserving the "master hall" to those who burrowed these lobbies?
 * ;mikkalai 14 Nov 2003

I suggest a re-ordering of the "subfield" part, e.g. IMHO "lexical analysis" is not theoretical CS, but a subtopic of compiler construction. The difference between "applied CS" and "specific techniques" is not clear. Some parts in the "applied CS" section could be re-grouped to something like "application areas", e.g.: Bioinformatics, Computational Biology, Computational Chemistry, Computational Physics, Media Informatics, ...


 * These should be restricted to actual computer science topics, not just any scientific activity that happens to use computers. The ACM's CR category scheme would be a solid basis; it's complete and authoritative, although the category titles would have to be adapted to point to existing WP articles. Stan 21:42, 19 Oct 2003 (UTC)


 * I tried to base the re-ordering on the ACM classification, without deleting entries present (only exception: collision detection, which is referenced in computer graphics). There are still a lot of pointers to WP articles missing. I left the un-touched subtopics in lowercase to indicate this for the time being.


 * Cool! Interestingly, the categories are broader than computer science proper, for instance software engineering is included even though the article itself explicitly excludes it. Partly this is because the ACM's scope is all of computing, not just the scientific stuff, and partly because there are CS articles that study topics connected to SE, so the category scheme needs to include. Will think about to prune or what. Stan 16:24, 21 Oct 2003 (UTC)

Is there a voting mechanism for Wiki changes?


 * No, there is no need for one. We create articles which everyone can agree upon by using a technique that we call NPOV.  It works in the majority of cases.  It only seems to fail when irrational people get involved and they probably wouldn't pay attention to a vote either.  Voting has only been used for choices which are a matter of taste such as which date format to use or which would be the best logo for Wikipedia. -- Derek Ross

The list of topics (which is most of the article) seems to belong to a "list of computer science topics" page. Though of course, until there is more text (content) worth reading at the top, there is no reason to split the page. Anyone interested in adding narrative text?

Also, the list of topics need not resemble the ACM list, which was made for the ACM. The ACM is interested in "computing" which includes all of CE, CS, SE, and IT. The Wikipedia list should meet the needs of Wikipedia. This page is about CS and the list should be tailored for CS. The Wikipedia pages on CE, SE, and IT can cover all non-CS content. (Just my opinion.)

-

A lot of articles on computer-related topics have begun like this: "In computer science, xyz is a ...." In many of these cases, the term being defined is not a computer-science term. It's Unix jargon, or a programming or computer-security term. It is a common misapprehension that programmers, systems administrators, network engineers, and the like are "doing computer science" when they do their work -- and thus that their jargon is computer-science terminology. Computer science is an academic field, connected to mathematics, which does not have anything in particular to do with daemons, computer viruses, core, or other bits of computer technology. I am going through the list of pages which link to computer science and altering these introductions. --FOo 04:30, 12 Dec 2003 (UTC)

-

Why do so many users use this as a test page? HappyDog 04:13, 13 Jan 2004 (UTC)


 * I've noticed that too - my guess is computer nerds seeing WP for the first time and naturally going to look at the article on their favorite subject - and of course then one has to try clicking on all the buttons to see what happens... :-) Stan 05:10, 13 Jan 2004 (UTC)

Would it be more useful to order the pioneers chronologically, instead of alphabetically? HappyDog 01:18, 17 Jan 2004 (UTC)


 * I'd say no. There should already be a timeline that should include these people if they were wanting to look for them chronologically. when listing important people the standard is usually alphabetically by last name.--Dhuss 15:58, 21 Jun 2004 (UTC)

Computer science and commercial IT
I've only skimmed the surface on this topic, so point me in the right direction! Please!

It seems that there is little reference to business IT here, there's an exclusive concentration on science and theory. Elsewhere, under 'business' there's no separate referral to 'IT' or 'Data processing'. So the interdependence and development of these two areas seems to be missed, including development methodologies.

Also the important (for commerce) topic of 'legacy systems' needs to be addressed.

Which applies: a)I have missed obvious references, b) these topics are of no interest to Wiki, c) the topics are dealt with under other headings, d) the topics need to be addressed.

??

Axel


 * IT is a different topic from CS. You might put a section here about relationships to IT and link to that article though. k.lee 21:00, 4 Feb 2004 (UTC)


 * To expand: Not every topic that is studied, which has to do with computers, is part of computer science as it is usually defined. Computer science could as well have been called "computation science," since it has to do more with computations -- functions, algorithms, data structures, processes -- rather than with those tools that we call computers. Data-processing, in the sense of database theory, is rightly part of computer science; it may be sometimes unfairly marginalized because much of the research came out of industry rather than academia. IT management -- including "development methodologies" if by that you mean ideas such as "waterfall model" and "extreme programming" -- are outside of computer science. Likewise, the design of networking protocols can be within CS, but learning to configure a Cisco router is not. --FOo 00:36, 5 Feb 2004 (UTC)
 * To pull back from my prior statement a bit, the extent to which software engineering, human-computer interaction, and other "soft" computing-related topics belong in CS proper is a contested subject. The last couple of issues of the CACM have had a running debate on this between columnists and letter-writers.  (Not that the CACM is a great publication, these days, but nevertheless it's a magazine published by the premier CS professional organization.)  Most, if not all, computer science departments at least give some attention to software engineering subjects, including development methodologies.  The distinction isn't simple.  Nevertheless there are probably some subjects that don't really fall within CS.  These probably include information about particular vendors' software, or very "management-ish" information.  I agree that this is a fuzzy definition.  I wish I had a better one. k.lee

Church-Turing thesis
The informal description given of the Church-Turing thesis is not really right. The thesis doesn't imply that all known general computing machines are equivalent in what they can do, since there are certainly computing machines with less power than a Turing machine (like the PC on your desk for a start, since anything with finite memory is an FSA ). That is, unless one refuses to admit anything less powerful than a Turing machine as a "general" computing machine - but then the statement becomes a tautology! However, I can't think of a good way of phrasing it accurately without getting more technical than is desirable here. Can anyone do so? Cambyses 21:51, 18 Mar 2004 (UTC)


 * I don't think the informal statement can help but sound a little tautological, after it's a "thesis" not a "law". Another way to look at it is that it's stating a negative - there aren't several kinds of computation that are somehow of comparable power but completely different from each other. Fortunately we can rely on the link to the full article that goes into the details; this article is to explain computer science to the general public, not to specialists. Stan 22:23, 18 Mar 2004 (UTC)

Coding and Information Theory
Under Data and Information Systems, Coding and Information Theory:

Do you mean for Coding to point to a page on programming, or are you referring to Coding Theory here?

Quantum computer outline
The following contribution by 129.215.45.2 was moved from the main article as it was out of step with the intro, which is mainly about the definition and origins of computer science as a field of study. --Zigger 15:16, 31 May 2004 (UTC)
 * Recent advance in the field of computer science have been attributed to a team of crack researchers at Edinburgh University. This team lead by Dr. David Bould has successfully managed to provide an outline for a quantum computer. This computer can calculate anything in polynomial time processing 2.4 million gigabits of data a second. This advance is sure to have a significant impact on computer science and the world in general.

Prominent pioneers again
Note to all: I just came back from a standardization/removal/addition blitz. I agree with mikkalai: Iverson doesn't belong on the list. I am shocked that Church was not on the list. Church, who had been one of the founders of theoretical computer science, was not on the list of the legends of cs, but someone like Kahan was? Turing is most famous for his founding contributions to cs, specifically his TM (also not to mention cryptography), and not AI. Godel belongs in the list for beginning the essence of undecidability with his incompleteness theorem. Godel's work is so insanely intertwined with the development of complexity theory that to ignore him is to ignore the true geniuses in the field. I can't believe that people like Godel and Church, both of whom were true geniuses, were left off of a list filled with comparably dumb people. And Turing's work was left uncredited or credited for some work he didn't do. Sorry guys, but I'm so surprised that the list has been left this way. Furthermore, this list still lacks luminaries in the theory side. If you guys will let me, I will come up with more. This list is woefully short on so many levels. -DoesPHalt 08:51, 13 Nov 2004 (UTC)


 * (I took the liberty of moving the comment to bottom to start a new "thread", as per usual practice.) One of the things I don't like about the short list of people in this article is that it's difficult not be POV about it. So for instance people who specialize in theory of computation might think that it's ultra-critical to include Gödel, while a numerical analysis person will cast doubts on the judgment of anyone who doesn't think Wilkinson is as deserving. There are a handful that almost everybody can agree on, like Turing and Knuth, but beyond that it's that harder. For instance, I would say that Gödel is marginal because he was a mathematician, and although the theory laid groundwork for computing, there are a hundred other mathematicians whose work did likewise, and that doesn't make any of them a pioneer of computer science as it's understood today. The list does need to be short and selected, because we already have a long list of computer scientists, don't need to be redundant with that one. There are 17 people in the CS article as I write; I suggest capping it at 15, which means dropping a couple (I risk wrath of the numericals by suggesting Cooley/Tukey). Cap means that if you want to add any others, somebody has to drop off; still risk of POV debates, but unlikely to be as contentious as the perennially-debated Western canon. :-) Stan 17:36, 13 Nov 2004 (UTC)


 * I agree that there needs to be a number to prevent overflow. 15 sounds like a good number. Now, for cutting two off: i agree with you to remove the cooley/tukey bullet. Also, I suggest removing iverson. Back to Godel's achievemenents: there is no single mathematician who has affected cs more than he has. I understand that I am talking from a theory pov. The reason why he is so influential is that logic has the expressiveness to articulate problems. So, logic-related problems are found to be naturally complete for the classes that contain them. Godel broke classical logic, and complexity wouldn't be here in its modern form without Godel. His incompleteness result for first-order logic echoes everywhere in the complexity results. In fact he began the first questioning of computation in a complexity theory aspect: in a letter from Godel to von Neumann right before the latter genius died, Godel outlined the core foundations of complexity theory in about two pages (he said something to the effect of it would be so interesting and fun to classify problems by the resources necessary to solve it) and stated the P=NP? problem (saying that the role of the mathematician wouldn't exist if P=NP), although without all the language of classes and such. If complexity theory is important to cs (you can roughly say complexity is worth half of the theory aspect), godel belongs on the list. I'm probably enraging non-theory guys, but also Cantor should be on the list as well. Cantor's diagonalization argument is the only tool that we have (ok, i'm generalizing, but it's almost true) to do stuff in complexity. Actually, the reason P=NP? problem is so hard is because the diagonalization argument doesn't apply. I understand that mathematicians lay the groundwork for a lot of cs work (who would be here without the function concept or... abstract algebra or probability?), but Godel started something big in cs. I know, Cantor is a bit of a stretch. But, what I'm tring to say is that someone like lovelace has no right to be on that list if someone like Godel isn't. Tell me what you think. -DoesPHalt 00:42, 14 Nov 2004 (UTC)

First, there is already a list of prominent pioneers in computer science: Turing Award winners. There is therefore no need to have a list of prominent computer pioneers, except for those pioneers who predate the Turing Award (e.g., Turing). I suggest that the section be rewritten to (1) briefly note the role of the Turing Award, (2) link to the Turing Award article (which includes a list of winners), and (3) list a few "pre-historic" computer scientists like Turing, Church, Babbage, Lovelace, etc.

Second, it seems to me that there is a subtle difference between a computer science pioneer, and a mathematician whose work ended up being especially important for computer science. Godel is probably one of the latter (others might include Cantor, Kleene, Curry, etc.). The most important such mathematicians should be listed in a separate subsection; the rest might merit a separate article List of mathematicians important to computer science. k.lee 02:57, 14 Nov 2004 (UTC)

Yeah, Gödel just doesn't do it for me as a pioneer of computer science. One way to quantify further might be to divvy up by specialties, say eight of them, languages, OS, theory, etc, then you get to pick the most significant from each specialty, plus there's some all-around people. Under that model, you get to pick one theory-related person - would you bump Church or Shannon to put in Gödel? Lovelace I think is bumpable - she is better characterized as a pioneer in computing, not so much "computer science". Going by specialties, I see no AI people - McCarthy? - or database person. Turing Award idea is interesting, main downside is that the list is getting longish and in retrospect some have proven more significant than others. Stan 07:37, 14 Nov 2004 (UTC)

Another thought: we don't have to have a list of pioneers - it probably dates from earliest WP, people throwing in whatever came to mind. One could instead have a short history of CS, "namedrop" the key early people within the narrative (Gödel would fit nicely in that way for instance), then link to Turing Award and complete lists. Stan 07:45, 14 Nov 2004 (UTC)

The possession of a Turing Award isn't a necessary or sufficient litmus test for qualifying the holder to be a pioneer in computer science. That is, it isn't the case that A revolutionized cs if and only if A got a Turing Award. But, except for a few people, the iff does hold usually. I think a combination of both ideas will fit nicely: we could create a very short history to cover the roots of its varied disciplines mentioning its founders and then mention the value of a Turing Award (the equivalent of a Nobel Prize for cs) and link the reader to the ACM Turing Award list. I'm not qualified enough to write this: I don't know enough about all the fields. If someone with info and qualifications could do it, it would be awesome. O yes... just as a side metion: it seems Curry didn't do what we all know him for- curried functions. Apparently, the work is credited to Schonfinkel. But who would want to say Schonfinkeling... or Schonfinkeled -DoesPHalt 09:37, 14 Nov 2004 (UTC)


 * I'll try my hand at the narrative, sometime in the next few weeks, see how people like it. Stan 17:41, 16 Nov 2004 (UTC)


 * I think this discussion is getting interesting, and is probably much more interesting than any give list of 15 people. I added the original "pioneers" list to this page because I wanted to humanize the topic, by citing specific people and saying what they did.


 * I did not intend to make it the "best 15 people", but only 15 interesting people. The "best 15 people" is very complex and has problems with POV as stated above. Naming 15 important and interesting people would give a student reading the page somewhere to go. For example, the original list had Larry Wos for resolution throerm proving. Wos is a fascinating guy, blind, worked his way through college playing poker, etc. I believe that the list does not matter too much.


 * The reason to keep a short list of poineers on the page, is because pages should be somewhat self-contained. There are hundreds of links on the CS page. Casual readers are much more likely to scan the text on the same page than to click to the "Turing Award" page to find out that there were some important people. Casual readers do not know which links to follow, and cannot be expected to stumble over the ones they need. Each page should introduce all relevant material without links. This is perhaps my biggest pet peeve about Wikipedia. -- The Phantom Avenger


 * One of the things to think about when adding material is whether later editors will understand why it's there. I had no idea there was ever a goal of listing "interesting" people irrespective of importance, so of course I put my own interpretation on it. Given that "interestingness" is so subjective, I think it would be hard to stabilize - unusual college employment is interesting to one person, uninteresting to another; it will tend to drift towards something more objectively measurable, such as general significance, Turing award, etc. Stan 05:26, 17 Nov 2004 (UTC)


 * Web pages must evolve natually. Long ago, I stopped worrying about who was on the list. I simply stated my original intent as a point of histoical interest. I am sure that you all will figure out a useful list. I think the discussion of whether it should be "non-turing award winners" or "pre-historical (before 1960) people" or "most famous" to be interesting. All these criteria have merit.


 * In general, plain lists are very boring. But a list with a set of reasons is much more interesting. The "Major fields of importance for computer science" section is very boring. The "Prominent pioneers in computer science" and "Related fields" sections are much more interesting. The prose in the introduction is the most interesting part of this page. If you want to do something to improve the page, move the lists in the "major fields" section to another page. Tweak the pioneers as much as you want, but it is at least worth reading and keeping on this page. -- The Phantom Avenger