Right now, I am taking a BSc in computer science from a more reputable online university. Courses from there are transferable to most major Canadian universities. I would have preferred to take it from a brick-and-mortar place, but I wanted to just get as much done as fast as I can. In addition, I already have a degree.

Now, many of the programming courses (e.g., Beginner's Java, C++) are quite intensive even coming from a programming background. Some courses like Data Structures go through the concepts as well as have you code them (also fairly involved). However, some courses like Operating Systems and Computer Networks do not have a programming component. They are quite intensive, but I’m worried that not having a programming component will render my learning useless by future employers. (Though, on the other hand, they do have courses like socket programming that does cover that aspect)

So, I am wondering: Do brick-and-mortar universities typically have every computer-science course require you to program?

  • 24
    Computer science is not programming.
    – Jon Custer
    Jan 7, 2018 at 1:27
  • 22
    No. I have taken computer science courses at several reputable universities (Harvard, Stanford, MIT) that included no programming. Computer science is no more about programming than astronomy is about telescopes.
    – Thomas
    Jan 7, 2018 at 1:49
  • 9
    No. In particular, most algorithms courses at top CS departments do not have a programming component. On the other hand, I'm struggling to wrap my head around an operating systems class that doesn't require actually implementing significant portions of an operating system.
    – JeffE
    Jan 7, 2018 at 4:25
  • 3
    Here in Italy, the BSc in computer science includes some mandatory math courses (linear algebra, calculus, probability, for instance, and even a physics one). These typically don't contain any programming (although a teacher may decide to use it to let the students verify some results by themselves). Jan 7, 2018 at 9:41
  • 3
    @JeffE Maybe there is an "Operating Systems I" class that everyone takes, followed by "Operating Systems II" for those specializing in systems. In an ideal world, everyone in TCS/HCI/ML would also know how to implement significant portions of an operating system, but we don't have the 10+ years to teach everything every CS graduate should know. Jan 7, 2018 at 12:31

3 Answers 3


No, computer science is much more than just programming. That's what makes it science.

Introductory CS course tend to focus on programming, but as you get deeper into the subject programming becomes less central. Thus many (maybe even most) graduate-level CS courses at top universities do not involve programming at all. (Of course, graduate courses on systems or security will still involve programming, but it's no longer universal.)

By the same token, assembly code, digital circuits, and semiconductor physics are all vital to how computers work in practice, but we don't expect those to be a ubiquitous part of computer science education. We are able to abstract away from the implementation details of how our Python script gets executed. Likewise, more advanced topics in computer science will abstract away from the practical aspects of computing.

For example, course in computability and/or complexity theory is unlikely to contain programming aspects. The reason being that these subjects focus on what is impossible to compute and such impossibilities do not depend on what programming language you use or how good you are at debugging. That is, these scientific questions require you to think more abstractly. Similarly an advanced algorithms course may avoid programming assignments because (i) it's assumed (i.e. is a prerequisite) that the students could in principle implement the algorithms and (ii) the algorithms are complex and it would take a lot of time to implement them with little pedagogical value.


"Reputable" universites are a wrong term. Whether an institution is reputable or not is irrelevant IMHO. You should distinguish between

  1. Research universities and

  2. Universities of applied sciences and professional education.

As for 1., I would say only few courses should contain a programming component. The few ones are operating systems, programming languages (in the sense of types & semantics), and compilers. You see, C/C++/Java are really not the object of research any more. They are the object of our industry.

As for 2., definitely, most of the courses should be practical. They have to be hands-on, in terms of either software or hardware. So, a programming component is a must for software-intensive courses.

  • 5
    An undergraduate degree in a research university will very often have many more than "a few" courses with a programming component, especially if you include elective coursework. A BS at a research university doesn't only prepare students for research careers, it also prepares them for non-academic careers. Besides, many CS systems research areas in fact involve a lot of programming (developing a prototype is a standard requirement for publication in many top CS systems venues).
    – ff524
    Jan 7, 2018 at 2:36
  • I agreed with this answer. There should not be much programming per se in academic cs departments. Only very few.
    – Dilworth
    Jan 7, 2018 at 15:58

It's good to know how to implement an algorithm efficiently, but if you want to be more than a technician (i.e., if you want to be a tool maker instead of just a tool user), you need to learn how to develop algorithms. You need to know why A works and B doesn't, or why A works better than C, and what you mean when you say it works better.

Sometimes an instructor will assume that you can implement an algorithm that has been studied, without your having to demonstrate that you are able to do so.

The key to your coursework being accepted lies in the accreditation and the prestige of the school, I think. Universities look carefully at transfer credits to ensure that the transferred course had the needed rigor.

You must log in to answer this question.

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