Friday, February 19, 2010

Writing a Research Paper: Important for Those Thinking about FYP

I have been approached by many students specially in their final year of BS Computer Science for some tips and basic guidelines on writing research papers. So today I decide to blog about it based on what I have gathered from my experience. These techniques are based solely on my experience and anyone having additional suggestions is welcome to contribute.

Writing a paper is not a complex task at all: the most important thing in my opinion is o love what you're doing and be really excited about it. In the words of Meeyoung Cha:

"If you fancy a career as a researcher, you'll spend tens of thousands of hours on work over the next 10 years. The only way you're ever gonna spend 10,000 hours on research is only when you truly deeply love it. If something really engages you and makes you happy, then you will put in the kind of energy and time necessary to become an expert at it." - Click for Source

So find a research topic that really fascinates you and makes you want to invest your hours and hours into it without any regrets.

Divide your activity into phases:
1) Literature Survey
2) Design Phase
3) Implementation Phase
4) Experimental and Analysis Phase
5) Writing the Paper

Literature Survey
After the initial finding of identifying your area comes the real task: narrow down the specific domain from the area in which you want to work i.e. find a problem and conduct a literature survey i.e. see what approaches the research community has proposed to deal with that particular problem for example say there's a problem coming from the web crawling domain. Search for the best conferences in that domain like SIGIR, WWW, CIKM, ICDE etc and browse through the conference proceedings and read the famous papers relevant to your problem. To further explain I take another example from the domain of Computer Networks, suppose you want to take up a problem on Network Virtualization, then go through the famous conferences NSDI, SIGCOMM, SIGMETRICS, OSDI, SOSP etc. and read papers of some of the renowned researchers of the field.
This phase is the most important and crucial for here is from where you can extract all innovation and ideas and it serves as a prelude to the next phase of design.

Design Phase
This phase is the core of your research project/work, from the literature survey that you conducted in the last phase you must have come up with some potential shortcomings of each previously proposed solution. Now is the time to gather all what you gathered and design your own effective solution to deal with the problem at hand. During this phase I would personally advise to take suggestions from researchers working in those domains, the research community works in a collaborative environment and many would love to listen to your approach of handling the problem at hand. You can even write to authors of papers you read during the literature survey phase and they might write back to you with some further suggestions.

Implementation Phase
As obvious from the name in this phase you do the programming part, you can choose any platform suited to your research needs. Best thing about the sciences is that there is no limitation on development platform but try to choose a platform that has a large support from the worldwide community of scientists and engineers so that if you get stuck somewhere finding help is easy and if you choose a platform that lacks such support then bravo, chances are you might end up being one of the pioneer researcher for implementing your idea in that platform.

Experimental and Analysis Phase
Make no mistake about it, this phase is also very crucial and is what adds the real value to your work. It is what distinguishes it from the rest of the works in the field and highlights your research contribution. In this phase you must compare your approach with existing approaches and there must be some important comparison metrics for example bandwidth, throughput, jitter etc. in case of some computer networking research. This phase also serves as a valuable part of your research paper so don't overlook its significance and concentrate your efforts on it with due care.

Writing the Paper
1- Save all related data in one folder including results, pictures or any related text of literature survey, previous reports you have written for the project (if any) etc.
2- Download the specific format of conference/journal from their website. It will be easier for u to directly write as per that format, rather than first writing in a blank word file and then struggling/fighting with word.
3- Write abstract at the end of paper, rather than in the start.
4- The easiset way is first just write all first level heading e.g. (JUST AN EXAMPLE) Introduction, System overview, Algorithm Design, Results, Conclusion, References etc etc . The next step is to write second level headings (where-ever applicable).
5- Then make tables, flow-charts, figures and paste HIGH resolution images in corresponding headindgs.
6- Now your paper needs text stuff. If you are going to copy/paste text from self written reports, do not forget to keep continiuty in your script. Because something might be clear to you (as you have worked on this research/project) whereas for others there might be some "hidden details".)
7- After you finish your paper, write short summary in the form of abstract and assign proper keywords to your paper. The abstract should be such concise that the relavant reader is forced to read your paper!
8- Read your papers yourself a number of times and then ask some of your friend (with good English grammar) to go through it for correction of a/the/an etc.
9- Remember a very important norm, you should inform and give a copy of your paper to all those Professors/Persons whose names you have mentioned in your paper. One should NOT submit any paper in any conference without notice of co-supervisor and Professor.
10- Try to submitt paper some hours (at least) before the deadline time. Because mostly just before the deadline hour, a lot of people upload and thus system/server gets jammed. If however this is the case with you, just send the organizers by email (mentioning problem and time of submission).
There are a lot of related other things which one learns from his own personal experience. Remember as I mentioned no work is worthless !! You just have to present them in a proper and systematic way and find a conference which matches the technical depth of paper. Most of conferences in Pakistan provide a good nursery to write/present your work. So do not under-estimate your work. If anyone has any query, please feel free to ask me on my personal address (arjumand_younus@yahoo.com) or I would recommend to discuss on the group:


Lastly a very important announcement from my side for the final year students, I have many research ideas and am looking for some students for research collaborations, if anyone wants to pick up any idea for his/her Final Year Project then feel free to contact me again on the email address given above or the Yahoo group.

All the very best in this venture of final year project!!!

5 comments:

  1. Assalamualikum
    Jazakallah for sharing your diverse knowledge with us and helping us out !!

    ReplyDelete
  2. good article
    Faraz Siddiqi
    MCS 98 DCS KU

    ReplyDelete
  3. BarakAllah fee dear sister Basmah and brother faraz. Do let me know if you need any further help or want me to write on anything else.

    ReplyDelete
  4. Once you find a problem, a useful approach is to 'think' about the possible solutions yourself. Remember to jot them down in case you need to come back to it. This 'thinking' is probably the most important and critical part of the process. Keep a reasonable amount of time for it. After having a 'bag' of possible solutions, now look into the literature and see what others have done. Write this down too (atleast briefly). This would help a lot when you are finalizing the paper.

    ReplyDelete
  5. @shazli
    JazakAllah khair for the valuable addition, much appreciated and a very important technique you have added.

    ReplyDelete