As I was laying down to sleep one night last week, I started thinking about the computer science field and where I would want to focus if I were to do graduate studies (probably software engineering or UI related work). I started to build a "map" (okay, it's not really a map) of the CS field in my head and I thought I'd share it with anyone that's looking to study computer science.
Without further delay, here is my map and commentary:
In my opinion, the core principles of computer science are:
In my view, CS can be broken out into three main branches:
Of course, the boundaries between the different branches are not hard boundaries, but rather very loosely defined; however, generally, there is a distinction between one extreme and the other and, typically, someone intersted in one extreme will not be interested in the other extreme.
What I've noticed is that there are generally more students in the third branch than the others, with the least number of students in the mathematical branch. What I've also noticed is that at the left end of the spectrum, you'll find most of the nerds. On the right end of the spectrum, you'll find mostly geeks.
At the far right end of the spectrum (also the most populous among the CS students), are the idiots. These guys are the ones that always try to mooch code off of you as the deadline for handing in the assignment looms near. They are the stragglers that try to latch onto the nerds and geeks in hopes of getting that CS degree because of the tech boom and not because they are intrigued by the different aspects of computer science. Not all idiots are doomed to failure; to be honest, I would classify my mother into this category (she has a masters in mathematics with "computer option"). I really don't know how she managed that one, but she told me that there was a lot of mooching In any case, she's been highly regarded everywhere she's worked for the last few years as one of the better AS/400 developers. So all hope is not lost; most of the idiots can become very successful and productive programmers once they realize that mooching can't get them through life.
Moving on, there are also the assholes. They're like idiots, but their people skills make them even worse since they posess superior people skills and they will try to manipulate the nerds and the geeks. You can spot these types of people by how they try to use other to their advantage. For example, organizing study groups. Real nerds and geeks don't need study groups to prep for exams. And if they do, they will typically do so with a select group of fellow nerds and geeks. Another common behavioral trait is that they tend to ask many stupid questions, which, aside from the idiots, everyone in the damn lecture hall knows the answer to already. You can almost hear everyone groan when one of these guys/gals raises his/her hand during a lecture to ask a question with an obvious answer. They ask not because they're curious, but rather to get facetime with the professor. These types of people will typically end up in IT management because of their type A personalities and lack of any real understanding of CS. It's like they accidentally enrolled in CS when they really should have enrolled in business, finance, or opertions management.
Just for the sake of illustration, I listed some of the real world applications (off the top of my head) assiciated with each branch. Don't make too much of my placement of the text as, clearly, database systems require significant knowledge from each of the branches.
As with the real world application, these are just rough estimations of a few of the areas of study/disciplines in computer science (random list off the top of my head).
If there's one thing that you can take away from this, it's that computer science is not for everyone. I think people don't realize how math heavy it really is and how certain fields require extensive knowledge of mathematics. At Rutgers, for example, I think calc. II and introductory linear algebra are required. You'll find, though, that almost all levels of math courses beyond the required ones play a significant role in different areas of computer science (for example, calc. III and linear algebra (non-intro) are important for anyone that wants to get into computer graphics). In fact, you'll find that many of the courses in math and computer science are cross discipline and can count as credit towards either major (like linear optimization).
In addition, at the graduate level, there are different types of philosophies at different institutions. At Rutgers, the curriculum and research has a heavy theoretical bias (from what my TAs told me) whereas, based on my research, a school like Steven's Institute of Technology offers more practical masters/certificate programs.
I don't know if this will actually help anyone, but I'm throwing this out there for anyone that's thinking about obtaining a computer science degree. Bear in mind that this is from the experience and perspective of one person, me and I offer none of this as fact, so take it with a grain of salt
Remember Me
newtelligence dasBlog 1.8.5223.0
This site is a combo blog/portfolio for me, Charles Chen.
Sign In