Computer science is not what you think
Unless you already have a degree in it or are studying it right now, chances are you have the wrong idea about what computer science actually is.
Most people assume a CS degree is about learning to code. You show up, they teach you Python or Java, and four years later you walk out a software engineer. That is not how it works. Not even close.
You are expected to already know how to code
This was probably the biggest surprise for me. Nobody sits you down and walks you through the basics of programming. From day one, you are expected to be comfortable writing code. The lectures, assignments, and exams all assume you can already do it.
Code is the medium, not the subject. It is like studying literature and being expected to already know how to read. You use code constantly, but the degree is not about teaching you how to write it.
Everything involves math
No matter what module it is, everything involves math. And I do not mean basic arithmetic. I mean real, proper math that makes you question your life choices.
There are entire modules dedicated to discrete mathematics, vectors, linear algebra, and statistics. Most of the foundational math you are expected to know already, and each year the modules build on the previous ones. It compounds fast.
To give you an example, when we learned C, the exam questions were not "write a function that sorts an array." They were "build a gradient descent algorithm in C." That is the level of mathematical thinking baked into everything.
Calculus, probability theory, graph theory, combinatorics, these are not electives. They are woven into the core of almost every CS subject. Whether you are studying algorithms, machine learning, cryptography, or computer graphics, math is the foundation that holds it all together.
What they actually teach you
They do not teach code. They teach algorithms, concepts, and foundations.
Think about it like this: coding is a tool. A CS degree teaches you the science behind computation itself. You learn how to analyze problems, design efficient solutions, and prove that those solutions are correct. The programming language you use is almost irrelevant.
Here is a rough sense of what you actually study:
- Algorithms and data structures, how to solve problems efficiently and understand the tradeoffs between different approaches
- Discrete mathematics, the backbone of logic, proofs, and formal reasoning in computing
- Operating systems, how your computer actually manages memory, processes, and resources under the hood
- Computer architecture, the low-level details of how CPUs, GPUs, RAM, registers, and cache (L1, L2) all work together
- Networking, how data moves between machines across the internet
- Theory of computation, what computers can and cannot solve, and the fundamental limits of computing
You apply all of this knowledge by building projects, not the other way around. The projects exist to reinforce the concepts, not to teach you syntax.
The low-level knowledge is incredibly useful
Here is something I did not fully appreciate until later: all that low-level knowledge about how computers work is not just academic filler. It is genuinely, practically useful.
Knowing how CPU cache hierarchies work, understanding the difference between L1 and L2 cache, grasping how memory is allocated and managed, this changes the way you write code. It helps you make better decisions about performance. It helps you design systems that actually scale.
When you understand what is happening at the hardware level, you stop treating your tools like black boxes. You start reasoning about why things are slow, why certain patterns work better, and how to structure your programs so they play nicely with the machine underneath.
So who is this degree actually for?
If you are thinking about getting into computer science, here is the honest truth: it is not a coding bootcamp. It is a rigorous academic discipline that sits at the intersection of mathematics, logic, and engineering.
If you love problem solving, enjoy thinking abstractly, and are comfortable with math, you will thrive. If your main goal is to learn how to build websites or apps, a CS degree will get you there eventually, but it is taking the scenic route through a mountain of theory first.
That theory is what separates a computer scientist from someone who learned to code. It is the reason CS graduates can adapt to new languages, new frameworks, and new paradigms without starting from scratch. The fundamentals do not change, even when everything else does.
The coding part? That is the easy bit. The rest is what makes it a degree worth having.
References
- "Misconceptions About Computer Science," Peter J. Denning, Matti Tedre, and Pat Yongpradit, Communications of the ACM, March 2017
- "Does Computer Science Require Math?," Jessup University
- "How Much Math Does Computer Science Require?," Western Governors University
- "Does Computer Science Require Math?," Coursera
- "An Analysis of the Math Requirements of 199 CS BS/BA Degrees at 158 U.S. Universities," Communications of the ACM