By thisaintnogame

Well I have hit a new low in my life; I am sitting at a coffee shop, updating my blog. I swore to myself that I would never do this, but I guess I gave in. I’m pretty disappointed in myself, but it seemed like such a convenient solution to the problem of wanting to drink coffee and surf the interwebz.

So I am nearing the end of this summer’s REU and what will be my last one. I feel like I have almost made a mini-career out of these programs, especially when I consider the fact that most people only do one of these. To some extent, I feel I may be able to justify this summer’s program. My first REU at Binghamton was good, but it came at a time where I didn’t really know much of anything in computer science. As a result, it was difficult to really take anything advanced away from the program. The summer that I spent at UMass-Amherst had a potential to be a good experience, but turned out to be a not-so-good experience.  During this program (at USC) I had a very good relationship with my advisor, I enjoyed my work, and I believe I finally did something that is above the undergraduate level (maybe not incredibly above it, but still above it).

One decision that I will need to come to very soon is whether or not I would like to pursue pure CS theory, which is what I did this summer. From my understanding, there are three main topics under CS theory: computability, complexity, and algorithms. I am really not sure how much research is done in computability currently, but I do know that there are thriving communities in both complexity and algorithms. Both are interesting and challenging with many open questions, but I certainly lead more towards algorithms. However, that doesn’t really answer the question of whether or not I would like to pursue theory. Here are some of my thoughts on that.

- It is interesting and challenging. That kind of speaks for itself.

- The people in theory are (generally) very intelligent, so there is a lot to be learned from being around other theoreticians.

- The work can be frustrating. In programming, progress on a problem is usually a function of how much effort is spent on that problem, so one can always feel like they are making progress. It has been my experience this summer that I have spent a lot of time being stuck on a problem, regardless of the large amounts of time I devoted to it.

- The “so what?” factor. While I enjoyed my work, I realize that the results really don’t matter all that much. It is cool, enjoyable, and I get a lot of satisfaction when I prove something, etc but maybe there could be something more to it. Ideally, I would like to enjoy what I do and help humanity out while I am doing it. I know there is the whole “adding to human knowledge” argument, but I would like something more tangible.

- Getting a job. This concern is certainly a long way off, but I would guess that there is probably less jobs and less money floating around for theoretical people then there is for other types of research.

This summer, I saw a talk by a caltech professor who was examining some theoretical aspects of power-saving algorithms. The idea behind a power-saving algorithm is that a computer can adjust the speed at which it runs at in order to cut down on power. This is particularly important for huge data centers since the cost of power dominates the cost of running the facilities (about 60% according to his talk). So if there are times of the day where we can loosen the constraints on throughput for jobs, we can reduce the power needed to run the system. In his talk, he showed a relationship between this problem and CPU scheduling and proved that an online algorithm is 2-competitive (meaning it can approximate the offline algorithm within a factor of 2). This type of work is of a theoretical nature, but motivated by applications and was pretty cool. I am sure that there are examples of this all over the place in CS, so perhaps it is a matter of finding which fields look cool and have open theoretical problems.

In particular, I have developed this notion that it would be really cool to work in computational biology. To be honest, I have a very limited basis for developing this idea, but I am certainly going to look into it and talk to a few people in the field who have a CS background. Its a young field (which means its easier to make significant progress), there are many open algorithmic problems, and there might be some benefit towards humanity. Also, I have become a little more interested in some of the sub-fields of biology such as genetics and evolution (admittedly, those interests mostly come from a visit to the San Diego Zoo), so there is definitely a potential to learn a lot more about them. One thing that has me worried is having to learn the biology side of the field. It has been about eight years since I have looked at bio stuff and I dont remember liking it very much.

I realize that the decision of what field I want to enter is a little ways off, but I should have some idea of it to serve as a basis of what grad schools I apply to and what I write my statement about. I would not want to decrease my chance at some grad school because they accept less theory people than they do comp bio people or something like that.

That is enough rambling for one day, hopefully I will have a better topic to write about next time.

Leave a Reply