I am a third year Computer Science student. The question that I reach out to you with is featured in the title. There are some lectures that make me ask such questions. For the sake of this discussion it is worth noting that I am also working as a developer.

It may be true that the first (at most) two lectures try to introduce a new field of study in a way that somehow speaks to me (I affiliate that with a feeling that a new segment is being build onto my mind and the way it holds on are at first only a few nerve connections between the segment and my brain). However, the concepts introduced next stop falling into place.
In order to deal with that I've tried reading books that take up a given field of study in a scholarly way and the effect seemed to be similar.

Another approach that I've taken is studying tests from previous years in order to see what are the key problems the lecturer is trying to convey. Now, that can only work provided that the teacher himself intends to create the test focusing on those points, which is not always true. Regardless, in most cases the tasks focus on small differences between two (or more) very similar notions which during these 3 years I have observed in practice only a couple of times.

The problem with the last point is that if those small differences are to be noticed at all it has to happen now, and not when I have working experience of 5 years, because I won't remember them then.

In other words: How is it, that despite being active professionally in the field I am studying and working on projects for university lectures it is so hard to find connection between practice and the theory taught during lectures?

Or pessimistically: What is the point of studying this way if there is one? How to make it beneficial for me?

  • 18
    University is not trade school. You are supposed to learn theory to become smarter, not for use on the job. Computer science is about programming as much as astronomy is about telescopes. Commented Oct 7, 2017 at 14:51
  • 9
    In Computer Science discipline the second word is science and that is not about learning about particular tools that some companies might need now (but in few years become obsolete) but about learning the principles on how to design and analyse such tools. In order to do that, you need basic principles (aka theory) and this is true to every scientific discipline. Otherwise you wouldn't be called computer scientist but simply programmer.
    – PsySp
    Commented Oct 7, 2017 at 15:09
  • 1
    If you prefer a brutally utilitarian answer: You are learning theory because employers value graduates with strong theory backgrounds, and in particular, because interviewers will ask you theory questions.
    – JeffE
    Commented Oct 8, 2017 at 1:27
  • 1
    To @PsySp and Alexander: the fact is that in my language there is no Science in the name of the field Computer Science. I think you focused to much on the question I included in the title. In the third paragraph I've stated a problem with many of lectures that I have to attend. It would be kind of you to refer to this problem too.
    – gourmej
    Commented Oct 8, 2017 at 11:48
  • 2
    Very surprised about the downvotes. gourmej is asking a completely legitimate question (for which completely legitimate answers may exist). Commented Oct 8, 2017 at 14:58

1 Answer 1


I cannot vouch for CS, but in my field (physics) learning the theory is useful in order to construct yourself a starting basis for your future studies and research.

You can still do valuable work without knowing much theory in my field. For example, the lab technicians, in general, don't know much theory, but can still perform a measurement. To obtain an X-ray spectrum for a sample, you put in on the holder, and you tell the computer to shine the X-rays. Then you get the spectrum. You take the spectrum, you load it into the program that compares it with the computer spectrum and see if the crystal that the chemists synthesized indeed has that structure.

But, doing research is more complex that just performing a measurement. You have to be able to invent new things and to not miss something new that someone in your lab just discovered. Supposed one of your graduate students or the lab technician comes to you with some new data they say it "looks weird". Based on what you know from your research experience and from your theory background, you should be able to decide if they should do the measurement again, because the result violates some conservation laws you learned as an undergraduate, or because it really looks like they are onto something new.

As a computer scientist, you may not need all the theory you learn. It wasn't my case as a physicist. I needed more theory than I learned and I'm still learning some. Depending on what level you work, you would need more, or less theory. If you just want to develop code in a company, you won't need that much. Where I live, people become programmers by just attending boot camps. But, if you want to develop cutting edge stuff, you knowledge base has to be broad. You have to come up fast with ideas like the fast inverse square root. Without a serious theoretical background, it's doubtful you would come up with such things.

  • Thank you for the distinction between our fields of study. For people in very academic fields like yours it may seem unlikely but in CS it is common that the cutting edge stuff are often not developed inside universities but in research departments of good companies. Especially when public universities are concerned. Now, what is going to be more helpful when I am trying to develop a new solution to a complex problem: the problems that I have learnt during first years of study and of which I have likely forgotten or a supportive team of co-workers and a strong will for a deep research?
    – gourmej
    Commented Oct 8, 2017 at 12:01
  • 1
    @gourmej it seems to me your question is similar to the question "why can't I just learn things relevant to the problem as I work on it?" The answer is because for problems complex enough you don't know which tools you would need beforehand. You cannot divide your problem into simple problems and google how to solve each of them. What you need is being aware of a variety of tools and theories, decide which of them look promising and then develop them to suit your needs. Commented Oct 9, 2017 at 11:40
  • University courses help you develop this awareness. Regarding the supposed team of coworkers I don't understand how that relates to you solving problems (unless you want them to do the work for you). Of course, I am not a CS person, so this is an outsider perspective. Commented Oct 9, 2017 at 11:40
  • @ПетяНарышкин You are right, this is a part of what I meant and what you say seems to be sensible. I can accept that, however, I believe that the lack of motivation to learn what some of the lectures offer is due to what I stated in third and fourth paragraph. How learning answers to questions so specific and deeply embedded in the subject is supposed to be of any help in future in practice, if I don't have an opportunity to experience those any time near to the moment I learned them the for the test? Again this concerns only some lectures, but still remains a big issue for me.
    – gourmej
    Commented Oct 9, 2017 at 12:56

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .