What category is CS in?

<p>Hi,</p>

<p>My friends give me different answers. Some say CS is engineering, others say it is science. Please tell me which answer is correct, or it depends on which school you're applying to.</p>

<p>Thanks.</p>

<p>Does it matter?</p>

<p>At my school, computer science was in the Department of Computer Science and Engineering, if that helps. But it shouldn’t be confused with a computer engineering major, which is often different.</p>

<p>Again though, I don’t see why it matters.</p>

<p>It depends on the school. In schools which have an Engineering Department you will likely find Computer Science there. Otherwise check Mathematics or Science.</p>

<p>CS is art (because not everything you do/can do is described in theory, i.e. it’s creative activity) and engineering (because it’s about application). It’s not science, because it doesn’t study or discover natural laws or gather information about the real world by doing experiments.</p>

<p>

CS is as much science as mathematics is a science, at least in the sense of ongoing research work. You develop theories and test them; it’s just that most of these tests involve using a computer.</p>

<p>To the OP: it can be either. Making programs to solve problems for other people is known as software engineering. There is a theoretical component to CS as well - searching for new languages, implementing more effective AI, etc.</p>

<p>“CS is as much science as mathematics is a science, at least in the sense of ongoing research work. You develop theories and test them; it’s just that most of these tests involve using a computer.”</p>

<p>True, but not all mathematics is considered to be scientifically “believable”, because some mathematics (or most mathematics today) is created by humans by using logic and deduced by using a formal system that’s devised by humans, some mathematics is not based on the external, real world as we know it and it doesn’t use the scientific method, which begs the question whether mathematics in general is a science (some agree, some question it, some see only parts of mathematics as being “scientific”). Mathematics has also been described as the language of science, a collection of abstract quantitative concepts and methods or the general study of patterns that can be expressed mathematically. Computer science has this same problem that it’s “scientifically” too abstract to be sure whether it describes or can describe anything that should be considered science or whether it’s just mathematics combined with the study of the uses for a man made machine (the computer). And remember that some people see computer science as the study of software development, i.e. just as the study of how to write computer programs.</p>

<p>Also, we could consider “computational mathematics” or “computational science” to be something different than what computer science is usually associated with.</p>

<p>To the original question:</p>

<p>Computer science (which by the way shouldn’t be called “computer science”, because it’s not the study of computers, but rather computing, and it’s not a science in the well defined sense) is by the most formal definition a sub-discipline or a special discipline of mathematics that uses computers as a tool and studies mathematical concepts that are computational and/or are related and relevant to the activity of doing computation (e.g. by computer programming). What is known as “discrete mathematics” is probably the most well-known subarea of mathematics that governs very much about “algorithms”, which are probably the most fundamental concept in what’s known as “computer science”.</p>

<p>The more informal definition was given above that “computer science” is an art and a form of engineering.</p>

<p>One description of “computer science” is given in the following video (from around 0:20 onwards): <a href=“Lecture 1A | MIT 6.001 Structure and Interpretation, 1986 - YouTube”>Lecture 1A | MIT 6.001 Structure and Interpretation, 1986 - YouTube;

<p>Calling what computer scientists / software engineers do computer science is like calling what a surgeon does knife science.</p>

<p>CS is something between engineering and applied math. Some CS classes feel a lot like engineering such software engineering, computer architecture, operating systems, image processing, computer graphics, data structure. Other feel like straight up math such as cryptography, theory of computation, scientific computing, discrete math. While other have both math and engineering such as algorithm. CS is too broad so it depends on which subfield/specialization you are looking at, I still recommend doing CS in an engineering school though</p>

<p>Science is to Computer Science what Fluid Mechanics is in to Plumbing… (RMS I think :D))</p>

<p>Kansas State University has Bakery Science… With courses like “GRSC 625 - Flour and Dough Testing”. I’d be willing to bet a dozen donuts that this class has FAR more science in it than my senior level Compiler Design and Implementation course…</p>

<p>I’m sure one can come up with a computational theory model of why it’s near impossible to write a decent single pass compiler, or what to do to generate good optimized code, but in practice a lot of it is common sense, i.e. the science of the obvious. If you understand WHAT the compiler needs to do, and can do it, you can explain WHY you did it this way. If you’re taking GRSC 625 and the dough ain’t rising the way it should, science comes to the rescue to explain WHY. </p>

<p>Baking aside, I guess the difference is that in real science-based situations you need real science to tell you why something works or why it does not, or what to do. In CS, you can design and implement near everything with no consideration whatsoever to what the appropriate science tells you to do; do you need set theory to understand what tuples are? if it works, it works, regardless of what set theory says; if it does not work, all the set theory in the world won’t tell you how to fix it (generally).</p>

<p>In English, I see science as descriptive and prescriptive in most hard science or engineering instances, but in CS, in my view at least, science is mostly descriptive, not prescriptive. Just a personal feeling tho.</p>

<p>ACM Article entitled “Is Computer Science Science?” <a href=“http://www.ifba.edu.br/professores/antoniocarlos/cacmapr05.pdf[/url]”>http://www.ifba.edu.br/professores/antoniocarlos/cacmapr05.pdf&lt;/a&gt;
And another one - [Where</a> is the Science in Computer Science? | October 2012 | Communications of the ACM](<a href=“http://cacm.acm.org/magazines/2012/10/155530-where-is-the-science-in-computer-science/fulltext]Where”>http://cacm.acm.org/magazines/2012/10/155530-where-is-the-science-in-computer-science/fulltext)</p>

<p>Computer science is a complicated subject to classify, mostly because it’s so new that its boundaries haven’t been clearly delineated.</p>

<ol>
<li><p>Much of the core of CS - especially theoretical CS - can be considered a formal science, in much the same way that mathematics and logic are formal sciences.</p></li>
<li><p>Software and user design can be compared to professional disciplines like architecture, law or medicine.</p></li>
<li><p>Software engineering can be viewed as a sort of engineering discipline in the same way other engineering disciplines can - consider especially industrial or systems engineering.</p></li>
<li><p>Programming can be seen as a craft or trade like carpentry, plumbing, construction, etc.</p></li>
</ol>

<p>A few factors help contribute to a lack of separation of these and other roles in industry roles. The field is too new, and there are too few really qualified professionals to make such distinctions economical. With more time and more and better trained workers, distinctions will probably become more important.</p>

<p>Based on the above, I’d call what I consider “computer science” a formal science (as applied to an empirical science, a correct distinction noted in an earlier post.)</p>

<p>This is a redundant topic on this forum, but there are a lot of new members, so I won’t be harsh.</p>

<p>CS is not engineering. Engineering uses natural laws and put them to use to create applications. Civil engineers use laws of physics to determine what’s the efficient method in designing a bridge or water way. Electrical engineers use laws of science and electricity in determining which method is effiecient in their field. Software design or software “engineering” only interprets human logic into machine code. There’s no natural laws used in designing software(with the exception in writing mathematical or physics applications). Code is only an interpretation of logic that the computer uses to conduct certain tasks that’s comprehended by humans only. </p>

<p>I’m a CS major by the way. I just don’t like being bias.</p>

<p>The only science I routinely use in CS is chemistry (should I use vodka or cognac to self meditate after my offshore dream team of hired guns finally resolved their issue (hint: your web service should NOT go into an infinite loop and hang the server if you receive invalid JSON, and you would not have received invalid JSON if you actually read the spec which we agreed on was to change a week ago).</p>

<p>@knowledgeiskeyy
“CS is not engineering. Engineering uses natural laws and put them to use to create applications. Civil engineers use laws of physics to determine what’s the efficient method in designing a bridge or water way. Electrical engineers use laws of science and electricity in determining which method is effiecient in their field. Software design or software “engineering” only interprets human logic into machine code. There’s no natural laws used in designing software(with the exception in writing mathematical or physics applications). Code is only an interpretation of logic that the computer uses to conduct certain tasks that’s comprehended by humans only.”</p>

<p>What if an “engineer” uses a piece of software to determine how the physics work? Or how to optimize a design between certain parameters. It’s all logic (and numbers) and computers do it better, that’s why they’re used for CAD and engineering calculations. You cannot just “carve out” physics applications and mathematical applications or CAD as irrelevant.</p>

<p>CS may not (but it can) deal with natural laws, but what it deals with is knowledge, knowledge representation and knowledge processing.</p>

<p>CAD and engineering software is not using basic science or engineering to solve a computer science problem, it is using computer science to solve an engineering or science problem. Not quite the same. I’ve done lots of civil engineering software in my youth, and all the science in it was domain knowledge (concrete, surveying, basic structural analysis) and not CS problem solving knowledge.</p>

<p>Domain knowledge is not the same as basic or fundamental knowledge.</p>

<p>"CAD and engineering software is not using basic science or engineering to solve a computer science problem, it is using computer science to solve an engineering or science problem. Not quite the same. I’ve done lots of civil engineering software in my youth, and all the science in it was domain knowledge (concrete, surveying, basic structural analysis) and not CS problem solving knowledge.</p>

<p>Domain knowledge is not the same as basic or fundamental knowledge."</p>

<p>The software is computer science using science and engineering knowledge to solve a science or an engineering problem.* A piece of software is just a combination of automated processes, which can be based on real world knowledge, like it’s in scientific and engineering software.</p>

<p>True, but CS is still about knowledge. I.e. if it happens to be that we can know the process that’s been used a million times to build a bridge, then we can write a computer program that TELLS YOU how to build a bridge. It’s that simple and you wouldn’t need to study bridges to know how to build one, if it’s already known and the design and planning process of bridge building can be automated (at least to a certain level). Now CS might not be as advanced today for synthesizing knowledge like making a computer “know” how to build the optimal bridge like a human would know given a picture of a place and a few specifications or requirements for the bridge, but it’s striving to get there or at least there’s constant progress.</p>

<p>The same applies e.g. for structural analysis, if an algorithm is known, then it’s computer solvable.</p>