Theory vs Practice
In computer science, you basically have two choices: you can solve a theoretical problem, or you can write a program and measure the results. Both are valid approaches depending on your interests.
The advantage of theoretical work is that not many resources are required; pretty much all you need is access to the ACM Portal and Google Scholar. This can be a particular advantage when you're not funded; for most of the work, you don't even need access to a computer!
However, theoretical work has one big disadvantage: you have to find a solution to have anything. The author of this post didn't follow the advice above about not choosing too difficult a topic and spent a year working on something that didn't pan out. Don't let that happen to you!
For a practical project, on the other hand, you can run an experiment and get publishable results regardless of how it turns out. For example, one ongoing project at the author's university involves tracking how the BGP routing protocol is working on the Internet; this requires a lot of coding, but with a definite endpoint. Practical applications are thus useful because if done correctly you can be almost sure of being able to answer the question posed, while with theoretical projects you can do a great deal of work that leads to nothing. Practical projects can also require a number of extra resources, so they may require university funding in order to complete.
On the whole, your interests are what's most important: choose the type of work you want to be doing. If you hate to program, you'll be miserable working on one program for a year; conversely, if you love to program, you might not care for a project that mostly involves sitting around and thinking. A good researcher knows what he or she is interested in and good at; find the project that's right for you!