Computer Science by any other name

In other words, what exactly is “computer science”? Regardless of the answer, it (and just about anything else you can think) is often confused as something else entirely by those who aren’t part of it. Throughout my years in college, I’ve been asked some pretty remarkable things that the inquirers thought involved computer science, but in reality did not.

What exactly, then, is computer science? Before I delve into what it is, let me start with what it isn’t.

Computer science is NOT…

  • Hacking. Much as we would like to think of ourselves as black hats who can break into any website/database/network at will, that’s not what computer science teaches us to do. In fact, “hacking” and “hacks” often refer to clever, unconventional ways of solving problems within computer science, not maliciously breaking things.
  • Building websites. HTML, CSS, and even JavaScript and all the server languages (.NET, PHP, Rails, and so on) have nothing to do with computer science. Web design has nothing intrinsically to do with computer science. Some of the most talented web designers I know have liberal arts degrees and would never consider themselves computer scientists. Sure, computer scientists can be web designers, but one does not necessarily imply the other (in fact, hardcore theoretical computers scientists would look down their noses at the mere insinuation that web design is in any way related to CS).
  • Gaming. Same reasoning as the previous: while there is certainly plenty of overlap between being a computer scientist and playing a lot of video games, they are not synonymous. Not all of us are socially-retarded gamer geeks whose only source of vitamin D is the glow of our sixteen computer monitors, and not every socially-retarded gamer geek is a computer scientist.
  • Programming. This is probably the one biggest misnomer, but also the one that is easiest to forgive. True, to be an effective computer scientist, you probably do need to know how to do some programming. But it doesn’t imply software engineering is your life’s calling. It certainly isn’t mine. Programming and computer science happen to be extremely complementary, but in keeping with the pattern that has been emerging through the previous points, one does not by necessity imply the other. And getting a degree in computer science does not relegate you to a life of code monkey-ing.

Computer science IS…

  • Algorithms. You must know all your basic search and sort algorithms, as well as graph theory and complexity theory, and how to prove the correctness of these algorithms. Data structures also come with this territory: how best to organize ordered data? unordered data? Data with complex dependencies? Data that is very quickly changing?
  • Discrete math. This is the foundation the other areas depend on: if you don’t understand areas like set theory, geometry, and number theory, you’re bound for a painful CS experience. Just check out the Wikipedia page on discrete math; every one of those items listed is absolutely essential for a thorough computer science understanding.
  • Computers and Languages. Do you understand how instructions are pipelined through the computer? Can you explain how CPU caching works? How many transistors does a register require? What role does an abstract syntax tree play in compiling a programming language down to machine code? These are all questions that draw on a base in computer science that is rooted in the history and implementation of computer systems and the programming languages that run on the hardware.

PLEASE NOTE: These lists are NOT exhaustive. These are very broad points, indicators to look for that in general will not lead you astray. Furthermore, keep in mind that computer science and the items I initially listed aren’t necessarily mutually exclusive! If I had to sum up in a single expression: “Programming != Computer Science, but there is overlap“. If all else fails, stick with that rule of thumb.

More posts to come soon!

Advertisements

About Shannon Quinn

Oh hai!
This entry was posted in Programming, Real Life and tagged , , , , , , , , , , , , , , , , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s