My roommate and I have a tradition. We’re both computer science and math double majors, and we like to convert everyone we see who displays even the slightest interest in either of those fields to our path. Usually, this means finding engineers who enjoy solving the kinds of problems given at UIL competitions, or biologists who display a knack for linear algebra, and so on.
I was originally going to write an article about how to be a good computer scientist, or a good university student. The reality is, though, that I don’t have the slightest idea. My definition of success is working at interesting companies, solving interesting problems. One of my friends is much more passionate about doing research into artificial intelligence. My roommate considers himself successful when he solves a particularly challenging CodeForces problem. Success in computer science, then, is actually pretty simple -- it’s whatever you want it to be. CS is the exception to the unspoken rule in the College of Natural Sciences that success in a field is directly correlated with the number of research papers a student can output in their four years at UT. CS is different, and it is precisely in that difference that the definition of success goes from a specific, discrete concept—research—to the more nebulous idea of creativity.
Which is why everyone can—and should—be a computer scientist.
I used to be really stodgy and pretentious about the definition of a computer scientist. I tried to define the difference between a computer scientist and a programmer, trying to argue that while all computer scientists needed to be programmers, the opposite wasn’t necessarily true. And to some extent, this correlation is accurate, but ultimately what I was saying was that a computer scientist was just a more successful programmer. And maybe semantically there’s some truth to this statement, but ultimately, successful programmers are no different from successful computer scientists. It’s just a different route.
For now, though, let’s abandon the distinction. (This is the blog of the Department of Computer Science). As I said before, success in computer science is basically a function of your creativity. Can you come up with interesting problems? You might make a terrific developer. Can you solve problems in interesting ways? You might be a fantastic researcher. Either way, though, computer science is all about finding out how you’re creative—and letting you explore it freely.
And that -- the fundamental freedom to explore both sides of the creative equation, as opposed to being restricted to just trying to solve problems—is what defines computer science.
The best part is, computer science is everywhere. Remember when I said before that my roommate and I like to convert people to computer science? It’s easier than it sounds—if your passion is biology, chemistry, and math, studying computer science would allow you not just to tackle the big problems in each of those fields, but to find the intersections in those fields, and in so doing advance all three fields. The sheer variety of problems that computer science can solve is staggering. It transcends the divisions of fields. Yes, a biologist might be looking at slightly different problems than a chemist or a physicist would look at, but I can guarantee you that the problems you learn to solve in computer science can lead to a solution to all of those problems—and more.
And if that sounds too much like research to you, then by all means, look into industry. Forty years ago, the most interesting companies to work for were fueled by the sudden surge of advancements made to chemistry and physics in the era of the atomic bomb. Twenty years ago, genetic modification was the hot new subject, fueled by discoveries like epigenetics. Now, it’s all about computer science—and how you can leverage its incredible power to effect real change. Companies like Google and Facebook are all about not just solving interesting problems, but coming up with new ones whose solutions would revolutionize the modern world. (And if you think I’m exaggerating, look up Google X Labs.)
I’m not saying you need to drop everything and apply to transfer into the CS department. But take some courses (303E is particularly good for non-majors, as are the 105 language courses), learn a few programming languages The Hard Way, or start looking at algorithmic thinking exercises like the ones you might find on CodeForces or USACO. It won’t take long before you realize how powerful and far-reaching computer science is—and how easy it is for anyone with a knowledge of its capabilities to change the world.
Just kidding. This is what computer science really is.