Today, Bill Gates
href="http://www.msnbc.msn.com/id/25408326/">is retiring, and I was thinking
about the impact his brainchild Microsoft made. It’s so easy to trash MS. It’s
the company everybody loves to hate. The huge Goliath crushing all Davids in
sight without remorse, and doing all sorts of bad things that a big monopolistic
company would do.
BUT, What MS has done to computer world is just
revolutionary. There was a time when computers were meant to be put
href="http://www.thegalleryofoldiron.com/">in huge glass boxes, never to be
touched directly. Would the computers be so ubiquitous, if MS didn’t give us
Windows? Hate it, trash it, but MS has succeeded in giving the public one of the
easiest operating systems to use. Every thing else was built around it, and it
worked! Sure, we can have religious discussions about Linux or Mac OS on
desktop, but in the end, Windows has 95% share, and that’s simply
Thanks for Windows and the PC revolution, Bill!
This post is motivated by questions from
some of the new grad students looking for research topics. Here are a few things
that can help you in this quest.
- Follow your passion: Often, when you take an undergrad course, you
wonder about a few things. Why is this system designed like this? Why can’t I
use that sorting algorithm? etc. If you are more curious, you probably use
Google to find more information, and you develop an interest. As you learn
more, you realize that among the sea of questions, there are a few that you
really want to go after. Go for it!
- Learn state-of-the-art: State of the art is probably the most
mis-used word in marketing, but in research it has a very concrete meaning.
When some one says that they understand state of the art, that means they know
every thing that’s been done so far, and the latest technology that probably
is the best.
Good way to learn is to start reading latest publications
from reputed conferences. For CS, journals are just treated as archival data,
so it is not that important to read journals. Finding reputed conferences in a
field is pretty easy. Good conferences can be found from Citeseer impact ratings,
rankings maintained here
next step is to start reading publications. Reading papers is an art in itself
and will require another long post. First, try to find papers that are of
interest to you. One of the problems faced by newbies is that they don’t
understand the paper fully, because some papers point to prior work that they
are not aware of. You have to recursively read more papers pointing to
prior/related work, and understand how people solved the problem. It’s a
difficult and some times boring task, but you will get better at it.
the end, you should be able to summarize the state of the art by listing the
first work that tried to solve the problem to the latest. Often, there are
solutions that have trade offs, and there may not be a single best solution.
Your job is to figure out why some thing works and why some thing does not
You may even find that there is no solution, and there you have
your research topic.
- Broad and narrow enough: The topic you choose should be broad
enough to puruse for 2 or 3 years. It should still be narrow enough for you to
solve it completely. For example, building the next generation search
is a topic for multiple PhDs, but developing better clustering algorithms
might be a good topic.
- Follow your advisor: Advisors vary in how they assign topics to
students. Some advisors have certain research topic in mind, and they want you
to pursue that specific path. Some (like my advisor Kang Shin) give you
complete freedom to choose a topic. There are benefits and downsides to both
If your advisor gives you a specific research topic, and if
you like it, you are all set. You can start reading papers related to that
topic, and start formulating a research problem. Your advisor is probably
aware of the state of the art and might also have thought of possible
solutions. The downside is that you are stuck with it, and you may feel like
you are forced in a certain direction.
Free-form topic choosing gives
you great flexibility. Its benefits are obvious, as you can choose whatever
you like within certain area (say software systems). Some people (like me )
often have strong opinions on solving certain problems, and want to pursue
them. However, you are bound to make some mistakes in the process. It is not
always easy to judge state of the art, and it is not easy to find a concrete
research problem in a big area. I originally wanted to work in grid
scheduling, but I switched after reading a survey paper with 640
references. This surely will waste some of your time, but the process is
- Work with a fellow graduate student: If you are part of a research
group (usually your adviser’s), then you will see senior graduate students who
have already chosen a topic and/or close to graduation. They have done the
hard work, and understand the pitfalls in research. Often, they can give you
certain problem, which can be a PhD topic in itself. It is also a good way to
learn more about an area that you are not familiar with. There might even be a
continuation project to what your fellow student is doing. Downside is that
the topic might be too narrow and may not be big enough for a PhD.
Nevertheless, the experience is worth it.
- Attend reading groups: Most universities have research students
gathering in a group to discuss various research topics. Software
systems reading group at UMich is a great place to mingle with other
systems students. Usually, students, and some times guest speakers, professors
present a paper and the group has a free flowing discussion about the work.
You can even present a topic and gather opinions from your peers. You will
also learn how to support your arguments, and how to criticize rationally.
Also, free food is great
If your university does not have one, you
can start one. It doesn’t take much effort to gather a few students with
similar interests and start reading papers. Every one has to go through the
latest publications, why not do it together?
- Don’t get too attached: After you decide on a topic and start
spending a few months learning the state of the art, you may find out that
some one already solved it or it is too narrow. Don’t get too attached to the
topic. It is OK to choose a new topic, and many PhD students change their core
If all else fails, you can try the systems
topic generator or crypto
topic generator or classic
Douglas Comer’s topic generator