I have a question that, no matter how much I think about, I do not have the answer to. The question is what exactly is computer science? The reason I am asking is that I went into college thinking computer science was going to be about software engineering disciplines and deep study in the realm of application and practicality; these excited me. However, after taking core requirement classes for computer science, many so devoted to discrete mathematics (set theory, group theory (abelian properties, etc.), probability, etc.), I became disillusioned and frankly, sick of taking these abstract-concept related courses, asking myself daily when I would use these concepts in my daily life as a developer.

I've searched online for the answer, but none have satisfied me so far. Several arguments have boiled down to essentially saying something like "If you want to do gaming, you have to be good at trigonometry, which is math"; clearly, this is not what I am looking for. If someone could guide me into truly understanding why discrete math and structures is essential to the software engineer, and to the world outside the realm of the academia aspect of computer science, that would be awesome. Thank you!

  • 1
    $\begingroup$ What is your question? Is your question "What is computer science?" Or is it "why do I gotta learn discrete math to be a good computer scientist?" Computer science involves a broad variety of topics. Have you tried reading the Wikipedia article? There's lots written on the difference between computer science vs just learning to program; you can Google for it. Basically, I recommend that you edit your question to clarify (1) what is your question, and (2) what research have you done on your own? $\endgroup$
    – D.W.
    Jul 2, 2014 at 3:52
  • 1
    $\begingroup$ Nobody here knows. Another way of saying the same thing: we're all thoroughly convinced of our own opinions. $\endgroup$
    – Patrick87
    Jul 2, 2014 at 4:00
  • $\begingroup$ If you want to weld together cars, why study physics? Similarly, don't believe what welders say about physics. Also, what D.W. and Patrick87 say; see here for my attempt. -- I'm closing this as duplicate, but your true question is probably best answered by asking software developers, not computer scientists. $\endgroup$
    – Raphael
    Jul 2, 2014 at 10:08
  • 1
    $\begingroup$ To complete @Raphael 's statement, you should be cautious with what physicists say about welding :-) But studying physics may help the welder understand and solve some problems. And studying welding may help the physicist understand some finer interactions of physical phenomena. The math help you structure, understand and remember algorithmic and structural (architectural) knowledge. That knowledge may help you write better programs when things get tough, which occasionally happen. And that is the fun part. Programming can become tedious. Advanced programming may require advanced knowledge. $\endgroup$
    – babou
    Jul 2, 2014 at 10:29

3 Answers 3


"...asking myself daily when I would use these concepts in my daily life as a developer." The answer depends on the job. It sounds like you don't like math/theory, so you would not apply for/ get a job that requires a deeper understanding of CS, as many higher-level jobs do.

However, the truth is that the vast majority of software engineering jobs requires very little math or theoretical computer science, or even a good understanding in computer systems (which you didn't mention). If you just want to write code for websites or applications or do front-end, you can do that just fine without knowing most of the topics taught in a CS curriculum. Most of this knowledge is simply uneccessary, although having a degree will certainly help you get a job. However I know people who went into the software engineering profession with degrees in journalism or theater or other completely unrelated fields.

Also, there are some colleges that offer a degree in Software Engineering, which is much more focused on the practical side, including software development cycles and practices.

This is all practical advice. As for what Computer Science is, there is probably no universally accepted answer. It's a broad field, with many different sub-fields. However, most people would probably not consider simple software programming as Computer Science.


The most unfortunate thing about computer science it its name. CS has nothing to do with computer, it should have been called "computation science".

Every scientific field goes through below stages. NOTE: All the stages continues in parallel i.e no particular stage dies.

  • Theory: Where people works on the fundamental problems of the field. You need some sort of "tool/language" to work on the theories and in most cases that tool is mathematics (the universal modeling tool). This is what CS is all about.

  • Engineering: Where people start yo build tools/systems based on the theories developed in the above field (they will also use theories from other fields as well to develop these systems). This is what large scale enterprise level software engineering AND hardware development is all about.

  • Commodity: In this stage the systems build in the engineering phase starts to be available to "common man" and they start to use them in their daily lives. This is what "programming" as in creating small programs/scripts, web sites etc are all about.

  • $\begingroup$ BTW it has nothing to do with science either. It is engineering. $\endgroup$ Jul 2, 2014 at 8:19
  • $\begingroup$ @reinierpost What is "it" in your comment? $\endgroup$
    – Raphael
    Jul 2, 2014 at 10:10
  • $\begingroup$ You list misses the actual "science" step where models and hypotheses are used to predict reality and subsequently refined. Engineering actually comes later, using "proven" theories to build stuff. $\endgroup$
    – Raphael
    Jul 2, 2014 at 10:12
  • $\begingroup$ This is a common analysis. Just one point: they do not appear necessarily in that order. I would guess that if any is first, it is engineering. But I will not fight it. $\endgroup$
    – babou
    Jul 2, 2014 at 10:14
  • $\begingroup$ @Raphael: 'computer science'. $\endgroup$ Jul 3, 2014 at 9:56

In my opinion why these other subject is added is to master the domain knowledge,

Consider you know java and all the technologies of java and you are perfect in java and if I give you an application to create on mathematics like take the example of Scientific Calculator if you don't know mathematics then how will you create that Calculator even though you are perfect in programming but you don't have the domain knowledge,

The same applies to others Graph theory for Designer ,Discreet Mathematics for developing logical skills, and optimization.

You know We have a subject of Accounts and financial Management which is totally related to accounts when I ask my professor he told me that you are doing Master of computer Application (MCA) you must have domain knowledge of Accounts since in future you may build application related to Accounts.

Hopes something usefull.


And Computer Science is really that,that you thought it before joining, But mastering computer science also need Domain Knowledge not only technology.


Not the answer you're looking for? Browse other questions tagged or ask your own question.