These are tips collated from various sources (links at the bottom).
Your success is as important to you as it is to him/her if he/she is a good advisor. [~1]
There are two different ways to get an CS master’s degree here: by doing a thesis or a project. With a thesis it is your ideas that are central to the degree, while in a project it is what you create (software or hardware) that is central. In both cases you must make a contribution to the existing body of knowledge/experience. For the project, you take more courses, in the thesis you do more research and have a more formal presentation at the end. Basically a thesis subsumes a project. A thesis uses a project as a proof of concept, but also describes what is conceptually novel and how this work fits into the context of existing work in the field. [~1]
A master’s degree makes more of a contribution to the field than a project. If you want to do more than spend your life writing code for other people, a thesis can be a good way to demonstrate that you are capable of collecting and organizing the material to survey an area, define a novel contribution, and then make that contribution. [~1]
Begin by looking through conference proceedings, journals, online, books, etc. Xerox relevant papers AND any papers that interest you. Sometimes what you are looking for may lead you to find something that you had not intended but may be more interesting. Papers are fuel for your ideas. This is your chance to discover what the rest of the world is doing. This is an important step because it gives you a broad view of your discipline.
Read all the papers you’ve found (or as many as you can) and after reading each one enter it into an annotated bibliography. This is a bibliography that contains a full reference of the paper and a 2 paragraph summary of the paper. Pay special attention to write personal notes like “this is a good paper”, “I liked it because…“.
Talk to your advisor about what you are reading. He/She should be able to point you towards other resources. Use the WWW. If you find an interesting paper then look at the author’s web site and see what links are there. What new projects is he/she working on? What new papers may have been published? [~1]
Once you’ve chosen an area you need to think carefully about what its contribution is. In general a thesis is a new contribution to the field you are studying. You cannot simply duplicate work that has already been done. You need to make an improvement. Sometimes it is useful to draw a table with authors on one axis and what they do in the other axis. This will allow you to see what areas are still new and have not been addressed yet.
Another way to find new thesis areas is to look at the Future Work sections of papers. Many times the future work sections include work that the author will never get to because there are simply too many things to work on. [~1]
Try to be as specific as possible about what you want to achieve in your thesis. This is for your benefit as well as your advisor because coming up with a ‘contract’ of what is expected of you will avoid any nasty surprises in the future.
Your thesis commitee will basically see if you are able to answer the following questions in your thesis. You need to find a good and convincing answer for this in order to pass:
- What is the problem you are trying to solve? Or what is the research question you are trying to answer?
- Why is this problem/question worth solving/asking? Who would care?
- How have other people in the past tried to solve/answer it?
- What is your new approach to solving/answering this problem? Or what improvement are you making on an existing solution?
- How do you prove that the solution you came up with is a good solution?
- How can you demonstrate that your solution works? [~1]
Try and implement a few ideas on the computer to “concretize” your thesis ideas. [~1]
If it is a program or algorithm use the techniques you learned in software engineering to design, build and document your system. Remember the purpose of a thesis is a product that generations after you can use and improve on. In fact you may consider at this point to write a paper for a conference. The process of writing a technical paper always forces you to think rationally about your thesis; to find its good points and its weaknesses. Feedback from conference reviewers can sometimes be useful too. [~1]
- Build a demo program around your algorithm to illustrate how it would be used in an application. Use this same demonstration when you present your final thesis.
- Gather a group of users and have them use your system; perform a user study. Usually about 5 is enough. More the better.
- If your thesis is heavily human-factors based you may need to think up a way to measure success quantitatively - i.e. using statistics. This is difficult. You need to talk to your advisor about this.
- Publish a paper in a conference. This adds credibility to your work. For Masters you should publish 1 conference paper before you graduate. [~1]
The thing to remember is that you must learn to find a path and follow a path by yourself. Your advisor can only help you find the path and help you learn to find a path. Then it is entirely up to you to walk the path.You are only ready to graduate when you can do all of this by yourself. If you need your advisor to tell you every next step then you are NOT ready to graduate. [~1]