Can I Major in Computer Science if I Don’t Know Programming?

Pursuing a Computer Science Major Without Prior Experience

This is the number one question that I get from those that are serious about pursuing a degree in Computer Science. It seems that they know that a Computer Science degree is not a Programming degree, even though most individuals get their CS degrees for that reason. Why? Because most Universities do not offer a Programming degree.

So, do you need to know programming in order to obtain a Computer Science degree? The answer should be yes, but frequently it’s no.

What is Computer Science?

Computer Science is the “study of computers and computational systems.” Some areas within Computer Science are:

  • Artificial Intelligence,
  • Computer systems and networks,
  • Security,
  • Database systems,
  • Human computer interaction,
  • Vision and graphics,
  • Numerical analysis,
  • Programming languages,
  • Software engineering,
  • Bioinformatics, and
  • Theory of computing.

Walking through the list, you may see a couple of bullet points that jump out at you: programming languages and software engineering. That sounds like programming.

Programming languages are wrapped up in a few different courses, one of which is called Programming Language Concepts. Although you will probably do some programming there, it’s expected that you know how to program in at least one programming language by the time you take this course. Look up the coursework for PLC and you’ll find statements like this: “PLC covers practical construction of lexers and parsers, but not regular expressions, automata and grammars.” That doesn’t sound like learning how to program.

I’ve written 781 questions on PLC while I took the class. If you’re really interested in PLC, take a look below. Fun fact, I know one class that uses this as their official study guide. So if you’re in it, it might not hurt to read through.

How about Software Engineering? Have you ever wondered what the difference is between a software developer and a software engineer? Software engineering is a “systematic engineering approach to software development.

When I took Software Engineering, we focused mostly on methodologies and documentation. The application had to be built, but the application was one segment of the overall project.

When we finished the project, we produced the Requirements Analysis Document, that outlined both the current and proposed systems. The proposed system documentation contained:

  • Functional Requirements,
  • Requirements Traceability Matrix,
  • Nonfunctional Requirements,
  • Database Design,
  • Function Point Cost Analysis (estimating the cost of the project),
  • Test Cases,
  • System Models containing Use Cases, Interaction Diagrams, User Diagrams, Analysis Object Model, and the Category Interaction Model.

As you can see, Software Engineering requires knowledge of programming. If you want to see the full project, you can check it out in my GitHub account.

Doesn’t Look Good, But There’s Hope

It doesn’t look good so far for the non-programming folks. However, it is. Universities know that most people that enroll in a Computer Science degree are there to learn about programming. They’re not that interested in the theory; they just want a practical education that will get them ready for the workforce.

Although the Computer Science degree does not prepare you for a career in programming, it does teach you the basics that you’ll need in order to land your first job.

During your first couple of years, you’ll be taking introduction to Programming courses, like Intro to Java or Intro to Python. There are other classes scattered throughout the Computer Science program that allow you to hone in your skills as a software developer, like courses on Web and App Development.

Is it a waste of money? I still don’t think so. It gets you to think like a programmer. Once you know how it functions behind the scenes, it becomes less magical. You can then spend time focusing on learning programming and advancing your career.


Leave a Reply