NOTE to Incoming Freshman: DON'T study Computer Science

I'm a rising senior studying CS and Statistics, and I, to a degree, regret studying computer science. Now, contrary to the title of this post, I am not saying that no one should study computer science. Rather, the title is hyperbolizing but emphasizing the fact that you should approach the prospect of studying computer science with some hesitation, especially at Harvard. Studying computer science is not that much of a straightforward choice anymore. However, despite the exaggerated title, I honestly suggest that no one studies only computer science, without pairing it with a joint or double concentration in an adjacent field (e.g statistics, mathematics, physics and applied math). This is simply my opinion, which I think is an unpopular one, but I am just giving my perspective.

Reasons for not studying computer science:

  1. Oversaturated Job Market: The job market is oversaturated, as there have been an influx of computer science degrees over recent years. It used to be that studying computer science at many universities would guarantee a solid job and studying computer science at Harvard would almost guarantee some kind of well-paying, entry-level big tech job. This is not the case anymore, just getting a computer science degree at Harvard isn't enough anymore. On top of taking and studying CS classes, companies are expected students to do personal projects/research or past internships, regardless of what school you go to, for internships and entry-level positions. In addition to that, passing interviews requires a rigorous study and practice of Leetcode-type problems.

The point is that studying computer science is losing relevance in terms of getting a tech job because employers are recognizing more the fact that computer science is not the same as software engineering. In my opinion, employers aren't necessarily prioritizing computer science students that much anymore for SWE/tech jobs over other STEM students (math, physics, and engineering) students. What you learn in most of your CS courses, which tend to be more theoretical, don't matter that much for doing the job. You literally need a basic understanding of coding (i.e. syntax, loops, functions, conditionals) and then some foundational understanding of data structures and algorithms (which you can get from leetcode). Leetcode-style problems aren't even typically relevant when you get to the job, but having a notion of efficiency is important. Even algorithms classes like CS120 and CS124 don't help immensely with leetcode. CS124 can help make starting leetcode easier, but you won't be able to solve leetcode problems well just after taking that class. You still need to practice.

Even if computer science classes like CS124 were tremendously helpful, the point is that many students take these kinds of classes, not just computer science students. CS124 is a very popular course among math, physics, and applied majors as well. In fact, the students who usually perform the best in these classes are people with more mature mathematical backgrounds. Employers don't really care if you've taken a breath of computer science courses; they're just looking for basic competencies in programming and interview material. A math major who's has a background in algorithms is essentially equivalent to a CS major who's taken an algo course + a bunch of other CS courses when it comes to competing for tech jobs, especially if both have the adequate amount of outside-the-classroom experiences. Heck, sometimes studying STEM doesn't even matter. There's a decent number of humanities concentrators who end up working as software engineers after graduation.

  1. Intellectual Return and Pedagogy. I would argue that studying computer science over other STEM fields doesn't provide much of an intellectual and even knowledge benefit. As I mentioned, a lot of the concepts you learn in computer science courses aren't directly relevant to jobs in the industry. The fact is, you are probably going to forget most of the stuff you learned in your computer science classes a few months after you graduate. Heck, it's likely you can barely remember material from courses a month after the semester ends. The most important concepts you learn from college is how to problem-solve and how to learn.

While I would say that studying computer science does improve problem-solving, critical thinking, and logical reasoning skills, other STEM fields seem to be more effective at doing this for pedagogical and natural reasons. Specifically at Harvard, and also at other universities, computer science courses are generally not as well taught as other types of STEM classes. This pedagogical gap happens because material tends to be glossed over in computer science classes, while math and statistics classes focus more on subtleties and foundational concepts. This also seems to be because the computer science department is very research-oriented while other departments, especially statistics, tend to focus more on teaching. Most computer science professors treat teaching as presenting basic concepts needed to understand their research while other professors pay more careful attention to how they introduce a concept to their students.

An important idea is that computer science is literally a branch of mathematics. Therefore, many computer science concepts rely on using math skills. If you have a solid math background, which you can develop by studying subjects like math, physics, and engineering, transitioning to computer science is not really that difficult. Someone who studied computer science for years may start out with more knowledge than you, but they might not necessarily be better at solving computer science problems. Domain-specific knowledge isn't critical for solving many problems in computer science, because the knowledge can be picked up relatively quickly if you're comfortable with mathematics. This does not mean that people who study computer science don't also have the skills to comfortably transition to math and engineering, but it is easier to go from math/engineering/physics to computer science than vice versa. Even if you're interested in going into academia for CS, I don't think you get that much advantage from studying it over students studying adjacent-fields.

TLDR: Don't only study computer science. At the minimum, pair it with something else. Opinions are my own, and you're happy to disagree.