Monthly Archives: June 2008

What Windows has given us?

Today, Bill Gates href="">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="">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!


How to Choose a CS Research Topic?

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
    and 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
    . This surely will waste some of your time, but the process is
    highly rewarding.

  • 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