Talk:Computer science

From Wikipedia, the free encyclopedia

This article is part of a WikiProject to improve Wikipedia's articles related to Computer science. For guidelines see WikiProject Computer science and Wikipedia:Contributing FAQ.
Wikipedia CD Selection Computer science is either included in the 2006 Wikipedia CD Selection or is a candidate for inclusion in the next version (the project page is at WPCD Selection). Please maintain high quality standards, and if possible stick to GFDL and GFDL-compatible images.

Archives: 1 2 3 4 5

Contents

[edit] Definition resolution

Dear all -- there was a long and extended debate on the exact nature of the sentence beginning the article. I was brought in as part of medcabal; see: [1]. After a lot of work by everyone, we have arrived at a consensus solution (we took a brief poll and there were no objections, though there were definitely a few "weak supports"); the consensus is:

Computer science is the study of the theoretical foundations of information and computation and their implementation and application in computer systems.

The long discussion which produced this consensus is here. There is some important material there; please consider reading it if you're considering updating the discussion of definitional issues. I've also added some "final thoughts" on the question there; please if you've been involved in the debate, scroll to the end. Sdedeo (tips) 06:02, 30 January 2006 (UTC)

[edit] Often hotly

Because of its relative newness, there are some alternative definitions of computer science and its strict definition is often hotly debated

...on Wikipedia. (I'm tempted to insert that :-) While I don't disagree with the statement, I wonder if the modifier "often hotly" is necessary. Also I'm not sure if "Because of its relative newness" is accurate. There are many fields of study far newer than computer science, whose definitions aren't debated. Fredrik Johansson - talk - contribs 07:54, 30 January 2006 (UTC)

I agree completely, that sentences and the one following it are in need of some rephrasing. Here's my suggestion:

Because Computer science is a rapidly evolving field, it is difficult to define precisely. Research into the area often crosses into other disciplines, including, among many others, cognitive science, physics (see Quantum Computing), and psychology (see Human Computer Interaction)

--Jonovision 19:13, 30 January 2006 (UTC)

Sounds good to me, though the link to alternative definitions of computer science may need to be preserved (I'd be fine removing that entire article, but others may disagree). --bmills 19:47, 30 January 2006 (UTC)

The new phrasing sounds good to me too. Also, I agree with bmills that the link to alternative definitions of computer science should be maintained, at least until the material from that article can be merged into the computer science article in a coherent way. --Allan McInnes 20:47, 30 January 2006 (UTC)

Added --Jonovision 23:37, 30 January 2006 (UTC)

[edit] Evolution and divergence

On the same paragraph:

"Because computer science is a rapidly evolving field, it is difficult to define precisely."

I wanted to find a source for this. However, the sources found stated historical claims for different perspectives. We can point out individual areas that have evolved rapidly, but, unless a source can be found, the statement needs to reflect the references:

Computer science research has branched off and into other disciplines: computer engineering, artificial intelligence, cognitive science, physics (see quantum computing), linguistics, software engineering, and others. Because computer science has evolved like this, there are divergent perspectives on its definition. The methods involved to train individuals and the diversity in computer science has led to its likely debatable definition.

I changed "computer science grads" to "individuals" and touched-up on the rest. "Diversity in computer science" is more impartial than "alternative definitions." — Dzonatas 13:28, 31 January 2006 (UTC)

I like the tone of your proposal, but the language doesn't seem to flow well to me. How about the following revision for the paragraph:

Research into computer science often crosses into other disciplines, including, among many others, computer engineering, artificial intelligence, cognitive science, physics (see quantum computing), linguistics, and software engineering. Because of the diversity of computer science and the variety of careers pursued by computer scientists, perspectives on its precise definition may vary.

It's a fairly minimal change, but I think it works better than the current rev. What do you think? --bmills 16:30, 31 January 2006 (UTC)

I prefer this version. As you say, it flows better. --Allan McInnes 16:53, 31 January 2006 (UTC)

Okay, but small source-able change to add: "variety of careers pursued by computer scientists" -> "methods involved to train individuals" — Dzonatas 17:12, 31 January 2006 (UTC)

I'm afraid I don't understand what "methods involved to train individuals" is supposed to mean. Nor do I see it as a replacement "variety of careers...", since one talks about training while the other talks about what happens after training. Can you please elaborate on what you are trying to say with the "methods" phrase, and perhaps we can find a phrasing that more clearly expresses your intent. --Allan McInnes 18:30, 31 January 2006 (UTC)

Where did "variety of careers" come from? Here is the source for my shorted exerpt: "it is argued that the diversity of research paradigms in computer science may be responsible both for our difficulties in deciding how computer scientists should be trained and for divergences of opinion concerning the nature of computer science research." [2]

Because of this diversity of computer science and the difficult decisions made on how computer scientist should be trained, perspectives on its precise definition may vary. — Dzonatas 19:07, 31 January 2006 (UTC)
  1. The sentence you quote states that the diversity of computer science is responsible for difficulties in deciding in training, and also that the diversity of CS makes defining the nature of CS difficult. It does not claim that the difficulties deciding on training are responsible for the difficulties in defining CS.
  2. This from the Computing Sciences Accreditation Board, which is composed of representatives from the ACM, IEEE-Computer, and AIS: Computer science is a young discipline that is evolving rapidly from its beginnings in the 1940's. ... Because of the rapid evolution it is difficult to provide a complete list of computer science areas. [3]
  3. From the same website: A professional computer scientist must have a firm foundation in the crucial areas of the field and will most likely have an in-depth knowledge in one or more of the other areas of the discipline, depending upon the person's particular area of practice. - which implies that computer scientists have a variety of "areas of practice" (i.e. careers). From the previous quote, we can infer that these various careers are hard to list. As a result, defining CS by listing the areas in which computer scientists work will also be hard.
--Allan McInnes 23:29, 31 January 2006 (UTC)
In reply to 1, it does imply that -- recursively. The article states the different dominant roles of how individuals were trained as CS evolved. — Dzonatas 15:21, 1 February 2006 (UTC)

I stand by my original phrasing:

"Because computer science is a rapidly evolving field, it is difficult to define precisely."

The word evolution in and of itself implies that there is a diversity of different incarnations, some of which have been succesful, and others which have not been. My phrasing is quite general, as I think is appropriate for the introductory paragraph. A quick google search for "computer science rapidly evolving" shows that university CS departments describe their discipline in that exact way. --Jonovision 21:08, 31 January 2006 (UTC)

I am 100% happy with this phrasing. However, if it has to change, I would support bmills' proposal (although I see little value in making such a change). --Allan McInnes 23:29, 31 January 2006 (UTC)

Ok. It still has to be reflective. I know some here hate to write in the past, but that is how the words should be used. Here is another suggestion with cause-n-effect type expression, to use "computer-science research" as a group, and to combine everybody's ideas with an added Dijkstra perspective:

Computer-science research has branched itself into many disciplines, which includes, among many others, computer engineering, artificial intelligence, cognitive science, physics (see quantum computing), linguistics, and software engineering. Because computer science has evolved like this, there are divergent perspectives, and, in the management of this on how computer scientist should be trained, it is difficult to define precisely. — Dzonatas 23:46, 31 January 2006 (UTC)
It's good that you're trying to be as precise as possible, but this seems to suggest that computer science started as a single endeavour, and subsequently branched out into different areas. The reality is that there have been many different starting points in the evolution of computer science, and since the beginning computer scientists have both taken and contributed ideas to and from other disciplines. --Jonovision 00:05, 1 February 2006 (UTC)
Consider that "computer-science research" is seen either strictly as an explicit group or an implied group metaphorically, it is not precise to a single endeavour. Such usage helps to stay impartial. There are areas that include computer-science research, and there are areas that spun-off from computer-science research. — Dzonatas 15:21, 1 February 2006 (UTC)
It is hardly the case that physics, linguistics, or cognitive science "spun off" from CS. But the way your statement is phrased implies that they did. It is for this reason, as well as the awkward nature of the last sentence (e.g. the meaning of "in the management of this on how computer scientist should be trained" is less than clear, nor does the phrase seem grammatically correct to me), that I have proposed the alternate wording below. --Allan McInnes 17:07, 1 February 2006 (UTC)
It didn't state everything spun off. It is reworded to clarify: "Computer-science research has branched itself into many of their own disciplines or into disciplines that already exist." — Dzonatas 18:55, 2 February 2006 (UTC)
I'm sorry, I find the proposed phrasing somewhat awkward. Here is an alternative that is consistent with [4], and retains the flavor of your proposed wording as well as the original phrasing:
Proposal - Computer science is a young discipline, and has evolved rapidly from its beginnings in the 1940's. Research into computer science has often crossed into other disciplines, including, among many others, computer engineering, artificial intelligence, cognitive science, physics (see quantum computing), linguistics, and software engineering. As a result, computer science is a difficult field to define precisely.
--Allan McInnes 00:13, 1 February 2006 (UTC)
Sounds good to me. --Jonovision 00:17, 1 February 2006 (UTC)
I think that works well. Dz, does Allan's suggestion work for you? --bmills 02:30, 1 February 2006 (UTC)
I find it awkward. I'll reply more later... — Dzonatas 15:21, 1 February 2006 (UTC)
Well, by all means feel free to propose (another) alternative phrasing. --Allan McInnes 17:21, 1 February 2006 (UTC)

Since we now have a source which provides support for the phrase "Because computer science is a rapidly evolving field, it is difficult to define precisely.", the lack of which was the cause of this argument in the first place, why don't we just leave the paragraph as is? --Allan McInnes 17:28, 1 February 2006 (UTC)

I think the main problem is that the second paragraph (the one in which we incessantly second-guess our consensus definition) is far too large for the purpose it serves. Why don't we just delete it? People will probably be able to tell from the rest of the article that CS means many different things to many different people. --bmills 21:02, 1 February 2006 (UTC)
Good point. I'd support deletion, although I think that it would be worth appending the sentence
Research in computer science has also often crossed into other disciplines, including, among many others, computer engineering, artificial intelligence, cognitive science, physics (see quantum computing), linguistics, and software engineering.
to the first paragraph, if only because it further underscores the diversity of the field mentioned in the first para. --Allan McInnes 21:31, 1 February 2006 (UTC)
I agree with bmills. Can we put the research line that Allan wants into a another section besides the opener since they aren't detailed in this article. — Dzonatas 18:37, 2 February 2006 (UTC)
I'm fine with that. Perhaps in the section on "Relationship with other fields"? --Allan McInnes 19:46, 2 February 2006 (UTC)
Sounds good to me. Any objections, or do we have a consensus? --bmills 20:40, 2 February 2006 (UTC)

[edit] Change to first paragraph

I've removed the following line from the first paragraph:

Still others, like computer programming, study the process of formally describing computations (using programming languages) for use in computer systems.

First of all, let me apologize if this change comes too soon after the mediation. However, I feel it is necessary. Computer programming is "the craft of implementing one or more interrelated abstract algorithms using a particular programming language to produce a concrete computer program." It is not the "study of processes of describing computations", as suggested in that sentence. Can anyone think of a better way to phrase? --Jonovision 23:48, 30 January 2006 (UTC)

How about
Still others focus on the problems involved in implementing computations. For example, programming language theory studies approaches to describing a computation, while computer programming applies specific programming languages to craft a solution to some concrete computational problem.
or something along those lines? --Allan McInnes 00:25, 31 January 2006 (UTC)
Added -- that's great, it really clears things up --Jonovision 06:51, 31 January 2006 (UTC)

Is it really necessary to give references for all the defining words in the very first sentence? I know it reflects the effort that was spent hashing the definition out, but for an outsider, it looks a bit strange. --Piet Delport 01:44, 1 February 2006 (UTC)

I agree, they are rather arbitrary as well. If we want to provide sources, this is not the way to go. —Ruud 01:49, 1 February 2006 (UTC)
They do exist; we know they're sourced and there's a good history in the talk page if anybody really strongly needs links, but I think the opening sentence is general enough to be "common knowledge" (more or less) and as such doesn't need to be explicitly sourced. On the other hand, they're not really doing any harm... --bmills 02:34, 1 February 2006 (UTC)
I agree that the references seem a bit out of place. However, it was Dz that inserted the refs, so I imagine that we'll have to get him to agree to removing them. --Allan McInnes 03:46, 1 February 2006 (UTC)
Hey, i wasn't suggesting that we delete them outright (references are great!), but rather that we move them somewhere more relevant (and less distracting). To me, the two most obvious places would be the part of the article that talks about the definition disputes, and/or the Diversity of computer science article (which is apparently due for merging, anyway). --Piet Delport 01:49, 2 February 2006 (UTC)
Sorry, I should have been more clear: The references seem to me out of place in their present location. But Dz put them where they are at present, so we'll have to get his agreement to remove them from their current location (and place them somewhere else). I wasn't suggesting they be removed completely from the article. Sorry if I gave that impression. --Allan McInnes 01:59, 2 February 2006 (UTC)
Ah, so my impression that your impression was mistaken, was mistaken. Thanks for clearing up my clarification. :) --Piet Delport 02:32, 2 February 2006 (UTC)

If you can get wikipedians to remove all the references and notes to the article on Hugo Chavez, then I might be persuaded. There is a reason why that article has so many notes and references, it needs its sources. The few people that are familiar with this article on CS may not want the sources, but there are lots of people that can use them. Perhaps, make a suggestion to the developers of mediawiki to have an option to turn notes and references off. I've been in other highly controversial articles, and the feedback always states to use notes and references -- it is a must. The policy even states to cite sources. The article needs more references -- not less. As with the above paragraph above that shows the diversity and evolution of CS, it needs to be cited also. — Dzonatas 14:44, 1 February 2006 (UTC)

Dz, do you object to the specific issue that Piet brought up? He suggests removing the notes from the first paragraph, not getting rid of them together. There's no rule saying that every sentence needs have superscripts in it, no to mention that the vast majority of Wikipedia articles don't look like the Chavez one. --24.42.191.204 04:34, 2 February 2006 (UTC)

I took the suggestion and combined the note-refs into one. I'm sure there is more notes to add further into the article. Better? — Dzonatas 18:30, 2 February 2006 (UTC)

Yes, much. Far less disruptive of the first sentence, but still maintains the references. I like it. --Allan McInnes 19:48, 2 February 2006 (UTC)

[edit] Section rearrangement

I've retitled the section "Theory and practice" as "Computer science education", since most of the text was actually about differing educational programs rather than talking directly about theory and practice. I've also renamed the section previously called "Relationship with software engineering" to "Relationship with other fields", and moved the paragraph discussing CS vs. computer engineering and information systems into that section (where it seems more appropriate). --Allan McInnes 21:44, 1 February 2006 (UTC)

[edit] Curricular merge

I've suggested that a section from Bachelor of Computer Science be merged here. My expectation is that, since it largely coincides with existing content on this page, most of the content from there will be dropped in the merge. I know that education has been a sensitive issue here, so we should discuss here how best to accomplish the transition before making any drastic changes. --bmills 03:31, 14 February 2006 (UTC)

Oy! We should avoid U.S. bias here and I've already added the ACM Computing Curriculum as a reference. —Ruud 03:37, 14 February 2006 (UTC)
I agree, but we still need to do something about the curricular description at Bachelor of Computer Science, and this is basically where it fits in. I'd be ok with figuring that most of the content already coincides, so maybe just remove that section from that article and focus our efforts on improving this one. I'm just not comfortable doing that until we can get a reasonably broad consensus. --bmills 03:52, 14 February 2006 (UTC)
The curriculum list was originally based on a mix of typical courses offered at some of the Universities in Canada that I'm farmiliar with. However, it is more Theory based and does not adequately explain the second, more pratical approach that some post-secondary CS education focuses on.--AlphaTwo 03:55, 14 February 2006 (UTC)

bmills, I'm not sure how you would want to merge them. Can you elaborate? -- Evanx(tag?) 04:14, 22 February 2006 (UTC)

Ok, hang on. It seems really bizarre to dedicate any space on this page to education or careers at all. Contrast all the other sciences: chemistry, biology, economics, whatever. What am I missing? Jorend 21:07, 3 March 2006 (UTC)
I believe it's partly meant to help clarify what "computer science" is, by enumerating what "computer scientists" do. Not that I think that's necessarily the best way to go about it (although I don't have any better ideas at this point). The other issue (particularly with education) is that many different schools teach different things as "computer science", and that fact probably needs to be acknowledged since it contributes to the muddiness of the CS definition. That said, I'm not sure there's much use in adding curricular information here. At best it will be a reiteration of the "fields of CS" section. At worst, it will be one person's POV on what constitutes a "proper" CS curriculum.
Perhaps it would be more useful to have a section such as "Computer science as an academic discipline", which would discuss both the educational and research aspects of CS, and another section called "Computer science outside of academia" (or something similar) which discusses the non-academic aspects of CS. That would also allow discussion of the flow of ideas between academic computer science and those who operate outside of the academy. --Allan McInnes (talk) 21:31, 3 March 2006 (UTC)
Thanks for the elucidating comments! Now the first thing I'm going to do is read between the lines a little, and if I've got it wrong end up, please don't anyone take it the wrong way.
It sounds like there is just the slightest bit of tension here among contributors between theory and practice.
Given that, the article reads as though someone on the "practice" side of things hit upon careers as a relatively uncontroversial, NPOV way of getting across that computer science is really about applications after all, and the egghead side of things is a sideshow. Now if it really made sense to have a section dedicated to careers, that would be fair play. But as it is... well, not to be rude, but it just doesn't seem like the right way to get one's point of view incorporated. Instead there ought to be a section that says, look, some people feel this way, and some people feel that way, and in fact zillions of people are employeed in computing while there are honestly not that many CS theorists out there, see computer programming and information technology et cetera.
As an aside, there really needn't be such a tension between the two. Look at Alan Turing. Read the original Lambda papers. The people that founded computer science and the people that invented the first real computers were the same guys. They were obsessed with the theory and practice of computing. This article ought to focus on what readers want to know about CS: the brilliant successes of the field--fundamental concepts, achievements, discoveries.
There is a ton to write about. I admit that to me, CS is essentially just a terribly exciting field of mathematics. But at the same time, I think the biggest achievements of computer scientists to date are: the invention of acutal working computers (which I would never have believed if I hadn't seen one with my own eyes, just the other day) and the invention of the compiler.
Measured against the incredible stories there are to tell here, this page is downright boring. Jorend 23:53, 3 March 2006 (UTC)
The division between academia and non-academia is not the same as the division between theory and practice — many academics are (as you point out) quite interested in the practice side of things. I suspect that the problem actually boils down to a difference in opinion between contributors as to what actually constitutes the "practice" of CS, and whether everything that involves "computing" is actually a part of CS. None of which is helped by the fact that CS is somewhat hazily defined to begin with, and has different meanings to academics and non-academics. But I agree that the page is a bit boring. --Allan McInnes (talk) 00:11, 4 March 2006 (UTC)

[edit] including computer architecture

We have to keep computer architecture in this article to be consistent. Otherwise please delete bioinformatics and many other terms(Cryptography,Graph theory, they do not even have 'computer' in the name! They belong to Math!) in computer science. --Leo 01:04, 16 February 2006 (UTC)

While some computer scientist need to know a lot about computer architecture (e.g. to do research on compiler design) they do not do research on computer architecture themselves. Computer scienctist definitly do research on bioinformatics algorithms, graph theory and to a limited extend cryptography. —Ruud 01:15, 16 February 2006 (UTC)
Why do we care research here? Computer science talks about the science of the whole computer system: inside out! From processor, operating system, compiler, to software and users. If you delete processor in this system, it is not computer science at all. Just like excluding a human's head and you say it is human science. --Leo 01:20, 16 February 2006 (UTC)
I think a theoretical computer scientist would take that as a big offense :) —Ruud 01:24, 16 February 2006 (UTC)
Why care the theoretical scientists only ? This is wikipedia, for the general public. Period. --Leo 01:26, 16 February 2006 (UTC)
You might want to read WP:NPOV. —Ruud 01:27, 16 February 2006 (UTC)
NPOV applies to the main article. My strong word is ok for the discussion, I think. :-) --Leo 01:32, 16 February 2006 (UTC)
Perhaps. But it's not exactly conducive to harmonious editing. Please consider the advice given at WP:EQ and WP:CIV. --Allan McInnes (talk) 17:47, 16 February 2006 (UTC)
Leo, please reconsider. Graph theory is about as fundamental to almost every area of computer science as it's possible to be. Think of: programming languages, compilers, databases, structured file formats and indexes, filesystems, state machines, communication networks, routing systems, (most) data structures and algorithms, distributed/concurrent models of computing... All of these have their roots wholly or partly in graph theory. Graph theory might not have "computer" in its name, but you'll see that the graph theory article opens its first sentence with a link to computer science ("In mathematics and computer science, graph theory studies...").
I'd go as far as saying that it's about as absurd to leave graph theory out of a discussion of computer science as it is to leave cell theory out of a discussion of biology. Can we restore the removed link? --Piet Delport 03:01, 18 February 2006 (UTC)
In terms of education in computer science, computer architecture, a topic briefly covered in universities and colleges, is most likely absent in most community colleges. While it is an important field, most colleges and universities end up categorizing it under Computer Engineering.--AlphaTwo 01:36, 16 February 2006 (UTC)
Some CS departments do offer sequences of courses in computer architecture and processor design. Granted, those courses are often cross-listed as EE courses, but they do exist. The other thing to consider here is careers. Those who get jobs doing computer architecture work tend to be electrical engineers or computer engineers (partly because those degrees focus much more on digital design rather than software design). OTOH, there are some computer science researchers who do work on architecture — for example, over half the members of the computer architecture group at the University of Wisconsin-Madison are in the CS department. And John Hennessy (who spent most of his career in microprocessor design, and with David Patterson wrote one of the most well-known texts in computer architecture) has a Ph.D. in CS, and served as the chair of the Stanford CS department. So I'm not sure it's easy to draw a hard line here. We might be better off separating the "fields of computer science" into those that are indisputably considered part of CS by pretty much everyone, and those that are not necessarily in the core of what's considered CS but do get attention from some CS folks. --Allan McInnes (talk) 18:11, 16 February 2006 (UTC)
An older version of the article had a rather large section of "Fields of CS" and a separate one of "Fields related to CS" which had a lot of duplication and had swollen out of control. It's important that we avoid a repetition of that as we expand the content here. Any given field should only be listed once, and fields from which CS draws but to which it does not typically contribute should be avoided. That said, it might be productive to have "Fields within computer science" and "Fields to which computer scientists contribute", for those fields that aren't usually considered CS but that computer scientists do study (like graph theory, category theory, and computer architecture). --bmills 18:34, 16 February 2006 (UTC)
Sounds good to me. --Allan McInnes (talk) 19:04, 16 February 2006 (UTC)

I would agree that graph theory isn't directly under the purview of CS (just like category theory and linear algebra are useful fields for a computer scientist to know, but not really CS per se). Cryptography is definitely CS, just ask Manuel Blum. However, computer architecture as Wikipedia defines it isn't really CS either, but rather computer engineering. CS students typically do learn about machine architecture, but usually as part of a systems programming course, where the curriculum focuses on programming for the processor, cache, and bus — not designing them. --bmills 03:08, 16 February 2006 (UTC)

Agreed. Computer architecture is mostly subsumed under Computer Engineering, although Computer Science programs will inevitably include some courses of it. I think we can include architecture, but only if we emphasize the theory of it (or how it is still taught under Computer Science, but not emphasized). -- Evanx(tag?) 05:11, 17 February 2006 (UTC)
Agree as well. Just mention it once and tell it's not really CS so people won't bother claiming it is. —Ruud 12:59, 17 February 2006 (UTC)
"Architecture" has a duality as part science and part engineerial. To make it distinct to be either one makes a judgement. On the basis of specification, it is a science. On the basis to implement that specification, it is engineerial. It appears there are different opinions on how these specifications are made and how they are implemented, and that seems to be the cause to these questions of where this field falls into. It appears to focus over the word "design" as in to design its specification or to design its implementation. The article itself states a conceptual design. — Dzonatas 16:05, 17 February 2006 (UTC)
You make a good point there; though the usual role of CA in CS is unidirectional — computer scientists, with a few exceptions, learn about architectural designs rather than actually making them. In all, I'd say it's very similar to the cases of graph theory, matrix algebra, category theory, etc., which I wouldn't consider fundamentally CS either, though there is a bit of cross-over. --bmills 16:36, 17 February 2006 (UTC)
When computer science students learn about architectural design, do they learn how to write specifications or to actually make the architecture? Here is an image to relate this: http://www.princeton.edu/%7Emike/Image11.gif. The concerns at the top-level are engineerial. The rest is computer science. Once the model is done, it goes back to engineerial. Note, the hardware design crosses-over to a part of the science even if the construction process is not science. Instead of unidirectional, would you agree it is circular? — Dzonatas 17:48, 17 February 2006 (UTC)
To some extent, certainly; computational models feed into computer architecture, which comes back into systems programming. But generally the interaction of a computer scientist doesn't include designing the physical system, just designing the model and using the system. That's not to say that computer scientists can't also be computer engineers, physicists, mathematicians, and the like — in fact, the world would be a pretty boring place if all computer scientists studied only computer science. It's just that the physical design exercises a skill set that is beyond the scope of computer science proper. --bmills 18:22, 17 February 2006 (UTC)
These models can get very detailed with abstraction even without any physical implementation involved. Those details evolve as engineers try to implement the specifications and find problems as they implement the model specification. In the past, engineers had to be trained to deal with such problems themselves and find a way to still implement the specification. This is where the general cross-over is seen. Instead of the engineers responsibility to fill in the gaps, they can, today, send the data back to the scientists. (thrown exception) It becomes the responsibility of the scientists to understand the abstraction as it relates to real world. This is why the physical design is not just excluded from computer science as far as the levels of detail in abstraction. It appears fair to remove the "In computer engineering" from the start of the article. It also appears fair to say it falls into both disciplines of computer science and computer engineering in the article, as the architecture can be purely an abstraction. As for "boring," that's why we have supercomputers that can simulate all aspects of a computer right down to the chemical level, which also effectively simulates those caffeinated systems through an emulated model on a simulated computer that is on a real supercomputer. Anyways... just my two cents.... — Dzonatas 21:31, 17 February 2006 (UTC)
If the computer architecture article were a bit more interdisciplinary, it would probably become appropriate to include as a field of CS. At the moment I don't have the time to make that revision, though. --bmills 21:42, 17 February 2006 (UTC)

I re-added computer architecture, since it it is definitely part of computer science. Just see Knuth's (MMIX) and Paul's [5] work. Computer architecture has many interesting areas in computer science, for example formal verification at the gate level and CPU internal parallelism. --Rtc 14:29, 21 February 2006 (UTC)

Well that works, just skip the whole discussion, and add on what you think is right? Yes, you are right, Computer architecture has many interesting areas in computer science is true, but the inverse doesn't hold up that well. The study of Computer architecture within Computer Science is often optional, as most theoretical discussions on algorithms often begin with the assumption of infinite memory, bandwidth, processing power, etc...(which would typically throw discussions of Computer architecture out the window.)--AlphaTwo 15:16, 21 February 2006 (UTC)
So what? I claimed that computer architecture is an area of computer science, not that it is a prerequisite for it. (Although it is taught sometimes as a foundation.) Computer graphics is also 'often optional', yet it is an area of computer science. Many areas of computer science are interdisciplinary, we can't argue that just because parts of some areas belong to engineering, mathematics or biology that they must not be listed under computer science. Wikipedia should describe the classification as realized in professorships, research programs and courses, not invent its own. --Rtc 04:32, 22 February 2006 (UTC)
The point is that when you are editing part of an article that is currently being discussed, you should contribute to the discussion and work toward a consensus rather than brashly editing according to your personal perspective. Most professorships and research programs in computer architecture are classified as computer engineering rather than computer science, and most computer architecture courses in computer science programs involve much more application-oriented presentations than the one given in the computer architecture article. If you believe otherwise, let's discuss it here, rather than in a dozen edit summaries. --bmills 05:14, 22 February 2006 (UTC)
I was bold on the article and had a good argument about it, so let's not waste time with evasive meta-discussions. I am astonished by your broad knowledge of how most computer architecture courses look like and what most professorships and research programs are classified as. Cite your sources please. And even if it were that way: merely that there is a siginificant part of computer architecture which is an area of computer science, and be it only a small minority, is sufficient for it to be listed here. If you have exact figures about its share in computer science, add a clarifying statement about that, but please don't remove it, as the significance itself is beyond question. (see the two prominent examples above). --Rtc 18:59, 22 February 2006 (UTC)
Reaching a consensus regarding a contested point is not "evasive meta-discussion"; your edit, given the ongoing discussion, seems reckless rather than bold. I haven't given citations for my assertions at this point; then again, I'm not adding contested material to the article at the moment — just discussing which content should be added. Your citations don't say anything about whether computer architecture as defined and described on wikipedia is a direct field of computer science, or simply one with which computer science interacts; that's the whole point of this thread of discussion. --bmills 20:30, 22 February 2006 (UTC)
You are still evading into evasive meta-discussion. Please cite your sources. everything else is irrelevant. I have done so, so be fair and so so too. Those sources cited suggest for including, so if you don't want to include, you need to provide strong evidence for this, since removing seemingly relevant information without citing sources is no better than including seemingly irrelevant information without citing sources. Wikipedia describes the definitions of things, it does not invent its own ones. --Rtc 06:21, 23 February 2006 (UTC)
Rtc, your edit was certainly bold. You have a somewhat valid argument but it's best to read the archives and talk pages before making amendments. It is even polite to suggest on the talk pages first before contribution, especially in such a high profile article. bmills, Ruud, Leo, Piet, Allan, AlphaTwo and Dzonatas have made points as with regards to the subject matter at hand. These are users with professional backgrounds and the required expertise (both academic and otherwise). Most importantly, it is imperative to reach consensus. -- Evanx(tag?) 23:42, 22 February 2006 (UTC)
If you want to convince me, then please not with some argument from authority. I have actually read the discussion before making the change. It was mostly inconclusive and personal point of view, and the only relevant sources, cited (by Allan McInnes), suggested for a change. Consensus is something relevant in areas of editorial taste. Neutrality and factual accuracy is exempt from consensus. Please take my criticism constructively and do not try to argue for my criticism being done in the wrong way in the first place, that's not relevant. --Rtc 06:21, 23 February 2006 (UTC)
"Neutrality and factual accuracy" are not exempt from consensus, because they depend on sources; because not everyone agrees on the interpretation and quality of sources, it is essential that we establish a consensus on their relevance and interpretation. --bmills 07:04, 23 February 2006 (UTC)
I was refering to the principles themselves, not to their application in each particular case. If you are challenging the interpretation and quality of the sources, please do it and not just talk about it. --Rtc 09:12, 23 February 2006 (UTC)
just a reminder. http://www.acm.org/education/curricula.html provides recommendations for computer science courses. Computer architecture IS a core part of computer science according to the joint reports by IEEE and ACM. Discussion adjourned!--68.89.168.17 03:08, 24 October 2006 (UTC)

[edit] Firmware -> real-time?

Under "Careers", the article describes "Firmware engineer" as "Writing software designed to work within a real-time system.". I'm not sure if this is an accurate characterization: while it's not uncommon for firmware design to involve real-time computing, this is not what makes it "firmware".

What would be better? "Designing and writing software for firmware systems"? Embedded systems?

--Piet Delport 11:30, 23 March 2006 (UTC)

Perhaps change "Firmware engineer" to something a little more general, such as "Embedded Systems Programmer". Otherwise we'll end up having to list every possible career variation a CS grad might become involved with.
Aside: it's not obvious to me that the Careers section is even all that useful — realistically, CS grads may pursue careers in a wide variety of fields, often with a tenuous connection to CS. They may be employed as everything from burger-flippers to CEOs.
--Allan McInnes (talk) 17:22, 23 March 2006 (UTC)
Although "Embedded Systems Programmer" sounds better, I don't like that, either. To my understanding, most embedded systems these days are based on Windows CE, Linux, or Java processors, so I don't see the need to distinguish from "normal" programming.
I've suggested removing the Careers section in the past, and the only objection I recieved was from Dzonatas, who argued that there's more to computer science than what computer scientists do.
--Jonovision 21:11, 23 March 2006 (UTC)

[edit] List of critical CS problems?

I propose to add a new section listing important, major, critical, tough challenges/problems in computer science, like those famous problems in mathematics. Just a thought. :-)--Leo 19:30, 4 April 2006 (UTC)

Sounds like a good idea to me. Did you have anything particular in mind already? --Allan McInnes (talk) 19:39, 4 April 2006 (UTC)
We may list some BIG problems in familar areas and put them in the main article when ready. For example, Automatic parallelization has been quite a challenge in programming areas for many years. Otherwise nobody would bother parallel programming. Furthermore, automatic programming is an even bigger problem, otherwise no human programmers should exist --Leo 20:05, 4 April 2006 (UTC)
Automatic programming is a contradiction in terms. In order to program, you need to specify the objective, i.e. what/how has to happen; which is by definition called programming. But that's just my two cents of original research I guess. I'm all for such a list! Wouter Lievens 21:24, 4 April 2006 (UTC)
You made a good point. My understanding: people only need to tell computer what to do, and computers should automatically figure out how to do it (with some intelligence). The current situtation is that people have to instruct computers in every step to reach goals. --Leo 15:46, 8 April 2006 (UTC)
The list of open problems in computer science article already has a good start. Other than that, AI is one field that's very rich in problems of practical import: pattern recognition, computer vision, NLP, data mining, autonomous robots... --Piet Delport 21:55, 4 April 2006 (UTC)
Since people have started suggesting ideas: I imagine that the BCS' Grand Challenges in Computing Research would also provide a good source of information. And it has the advantage that it's a citable source for "important problems". --Allan McInnes (talk) 22:22, 4 April 2006 (UTC)
The "Grand Challenges" seem to edge towards being a list of wide, open-ended directions for research, rather than a list of clearly-defined, solvable problems. Some of them, like GC1 and GC4, almost read like outlines of potential solutions, rather than descriptions of open problems. --Piet Delport 14:37, 5 April 2006 (UTC)
Sure. But I didn't see anything in the original comment that implied we should only be talking about "clearly-defined, solvable problems". If anything, I think this article would be better off focusing on broad directions, and leaving the specific and well-defined problems to list of open problems in computer science (although a couple of the really major problems might usefully be mentioned here too). --Allan McInnes (talk) 15:19, 5 April 2006 (UTC)
Yep, i was just pointing out the distinction, not dismissing them (except maybe for GC1 and GC4, to some extent). --Piet Delport 07:53, 6 April 2006 (UTC)
I'd love to see a more diverse list; after all the list of open problems in computer science only lists the really hard theoretical ones. It would be interesting to see a few "soft" and less formal problems, too. Wouter Lievens 09:40, 6 April 2006 (UTC)
OK, but problem definitions can probably only so soft, before they start describing engineering, sociological, or philosophical problems, instead of computer science ones. --Piet Delport 12:05, 7 April 2006 (UTC)
I am so glad to see the responses so far. My motivation was simple: make real problems in computer science visible and draw enough public attention. Then some people will be interested in attacking them and make more goodness than just dealing with trivial problems. I agree that adding things into list of open problems in computer science is a good starting point. --Leo 15:36, 8 April 2006 (UTC)

[edit] Overly Complex?

In my view 'Computer science is the study of the theoretical foundations of information and computation and their implementation and application in computer systems.' seems very complex. I don't know any better words to replace them though. Suggestions? Computerjoe's talk 21:08, 8 April 2006 (UTC)

Please see the archive. Replacing the intro would most likely be a Bad IdeaTM. —Ruud 21:26, 8 April 2006 (UTC)

[edit] Fields of computer science a stub?

Is the Fields of computer science section really still a stub? I thought stubs would be short, this section has 11 subsections! Ideogram 21:52, 29 May 2006 (UTC)

I agree that it looks a little odd. OTOH, I think it's reasonable to consider the "fields" section a stub, since it consists of a list of topics rather than an explanation of those topics. Ideally, I'd like to see that section look more like the corresponding sections in articles such as Mathematics or Physics. --Allan McInnes (talk) 01:22, 30 May 2006 (UTC)

Since we're talking about this section, is anyone else bothered by the inclusion of image processing as a field of computer science? It doesn't make sense to me, and seems analagous to including something like "3D rendering" or "neural networks". --Jonovision 13:21, 30 May 2006 (UTC)

It seems OK to me. (I think it's at least as appropriate as including bioinformatics, robotics, and other cross-disciplinary fields, in any case.) --Piet Delport 16:57, 30 May 2006 (UTC)
I agree with Piet here. Tne borders of CS are not exactly well-defined, and there's plenty of other cross-disciplinary stuff in the list of fields. If you're really concerned about this, you might consider digging up a reasonably authoritative reference (the Handbook of Computer Science perhaps, or an ACM CS curriculum) that we can use as a standard for identifying the "core fields" of CS, and move the cross-disciplinary stuff into a subsection called Related fields or Cross-disciplinary fields or something similar. --Allan McInnes (talk) 18:01, 30 May 2006 (UTC)
I agree with both of you, I'm all for including cross-disciplinary fields in the list. My problem with image processing was only because it doesn't seem to be a "field of study" to the same degree as the other listed areas. The image processing article describes it as a bunch of useful tools, rather than a set of fundamental problems which are to be solved. In any case, if it doesn't bother you guys, then I don't see any need to change it. --Jonovision 01:56, 31 May 2006 (UTC)


Back to wether the Career_domains_in_computer_science should be merged with Computer_science, my feeling is that the article on Computer-science would become too tangled. To tie in the abovve discussion, just think about all the possible career domains that could arguably be attributed to Computer Science. Stevey [6] had a hard time limiting his employer's list of need to knows to 50.

I think combining career domains in computer science and computer science would result in too large an article, so it is best to keep them separate. Jonathan Bowen 20:32, 16 August 2006 (UTC)

[edit] Comments from 2 pioneers

Given the above discssions on "what is computer science" here are some related comments:

...the harm was done: the topic became known as computer science ---which, actually, is like referring to surgery as knife science ---and it was firmly implanted in people's minds that computing science is about machines and their peripheral equipment. - Edsgar Dijkstra

Peter Naur dislikes the very term computer science and suggest it be called dataology.

NevilleDNZ 20:00, 24 October 2006 (UTC)

True, it isn't really a science, more like an engineering discipline. However its worth noting that Dijkstra's comment doesn't really apply any more since most computer science courses have a heavy emphasis on software engineering. Personally I like the term "software engineering" since that's a pretty accurate description of the real-life discipline. Gwernol 20:29, 24 October 2006 (UTC)
And yet good engineering is informed by science. So there should be some kind of computer/computing/sofwtare science there somewhere in the background of "software engineering". Otherwise it isn't engineering, it's tinkering. --Allan McInnes (talk) 03:33, 2 December 2006 (UTC)