So you need do some research…

In the following I explain a bit of the process of research and development in academia and industry. The keys steps are:

  1. Get up to speed in a new subject area. This will typically require a much deeper knowledge of a subject than obtained in a graduate or undergraduate course. Sources of such information include not only the technical literature, but standards bodies, industry consortia, open source projects, and possibly (with caution) company literature.
  2. You will need to review (learn) about recent and state of the art techniques within your chosen topic area. This includes literature survey and analysis.
  3. You will need to come up with an idea for something "new" to try within the above areas. This will be a significant challenge!
  4. You will need to learn appropriate tools (typically open source software based) in which to implement your idea.
  5. You need to figure out an essential part of your idea from step 3 that can be implemented with the tools, people, and time available.
  6. You need to write up your work at each step of the process in accordance with professional technical writing standards, such as expected in IEEE, ACM publications or IETF, ITU-T, or other technical standards development organizations.

Newness Criteria

One of the toughest things about research and development (R&D) is the notion that you will be doing something new. But what does new mean? Well its very dependent upon the R&D context. Let's take a quick look at some different R&D products and the context and criteria by which they would be judged.

Hot Conference Paper
Suppose you have a really cool idea of an academic rather than business type and want to show the world how brilliant you are. The place to try to publish that idea is at a "hot" conference for your field. By "hot" I mean a conference with high attendance/readership and most likely a significant rejection rate— not to be confused with conferences that exist just to give academics a place to publish which are sort of a scam :-(. For example in the networking area this would include IEEE InfoCom and ACM Sigcom conference amongst others.
Such conferences are peer reviewed, so you need to think about how the reviewers would be judging "newness"? First of all your idea/result must be new in the sense that it has never been published before. Second and much harder is that your idea/result must be "significant" and this is where your paper will competing with all the others to be accepted versus being rejected.
Patent
A Patent is a form of "intellectual" property that gives the owner exclusive rights to the idea, i.e., you can prevent others from using your idea (or sell or license it to someone). Two common patent criteria are "novelty"—newness again— and "non-obviousness". In addition there are a host of things that can't be patented such and mathematical formula, algorithms, and such (the list changes over time and can be quite controversial).
It would seem that the dual requirements of novelty and non-obviousness would rule out most ideas. But this is not the case in practice. An old concept applied in a new context is patentable (as long as no one else has already patented it or wrote about it —newness again). You might think that this would run afoul of the non-obviousness criteria, but typically doesn't. The reasoning is partially that it takes some insight to recognize that you can apply an old concept in the new context. This is also why most patents would not pass the acceptance criteria of a conference or journal paper, they just are not very significant from a technical standpoint.
Copyright (Software, Documents, Multi-media)
It's very easy to get copyright protection for your work such as software, documents, etc. In fact it almost comes automatically when you produce your work. A chief criteria for getting/enforcing a copyright is that you created (wrote) the work and didn't take it from someone else, i.e., you cannot copyright someone else's work — that would be plagiarism and can get you sued or kicked out of the university! For documents modern text search tools are making it easier and easier for those who care to detect copyright violations and has spurned a mini-industry of academic integrity checking software.
Two particular places occur frequently where we use other peoples material. One is when we quote or cite their work in a document, the other is when we use open source code. When you use other peoples code you must obey the criteria of their licenses. For many open source licenses one of the key requirements is "attribution", i.e., you must give the original author credit— which doesn't really cost you anything :-). In a MS project all 3rd party code (i.e., code not written by you) should be acknowledged in your project write up. On a company project its a very good idea to keep track of all 3rd party code for a variety of reasons including maintaining security updates and possibly keeping lawsuits away!
Masters Project/Thesis
Finally we get to your masters project or thesis. Your newness criteria is very similar to that of the combination of copyright and patent mentioned above but without the restrictions on what can be patented. First, for your write up, you cannot copy others text and for any 3rd party code you use you must obey any license criteria. Second, the topic you are working on has to be "novel" like that in a patent. It is okay to investigate and/or implement older concepts in a new context.

Getting up to Speed & Searching the Literature

After the discussion above you see you're under pressure to come up with something new for your masters project or thesis. Who's responsibility is it to ascertain whether the topic is "new"? In all the examples above that have "newness" as a requirement it is the authors responsibility to convince the reader/reviewer/patent examiner of the "novelty" of the work. An introductory section or a related work section of a paper will be used to make such a case and all papers/thesis/reports need to contain such a section —though it may fall under a slightly different title.

So now the pressure is really on. What do you do? Yup, you hit the literature — no not giving up and reading a novel, you hit the technical literature. In particular you search for papers, articles, tutorials, companies, etc… related to your topic. Note that general search engines such as Google are okay but more specialized searches with http://scholar.google.com/ and similar engines (for those in the networking area ACM's digital library and IEEE Explore are particularly good). These can quickly help you find lots of papers to review to see if your idea is novel or to help you find an idea. In addition, you'll use some of the papers that you find to build a bibliography that will form an important part of you case for "newness".

Here are some tips for managing your literature search and for finding "good" papers:

  • Use a free tool such as Zotero to automate the collection of reference citations.
  • Review papers efficiently. You don't need to struggle with details right away. A way to proceed is:
    1. Check the title for relevance (yes I know this is obvious). You don't need a perfect match and you maybe able to mine a good but slightly off topic paper for follow on references.
    2. Review the abstract -- this may be the only part of the paper that you read besides the title. Continue on with the paper only if the abstract makes the paper seem worthwhile.
    3. Review the Conclusion -- Why jump to the conclusion? This is where the authors should summarize what they actually accomplished in the paper and maybe point to areas for further research.
    4. Review the introduction and references -- Just like you'll need to prove that your work is new they need to prove to you that their work is "new" and that they understand its context in relationship to other work. Big red flags are poorly written or non-existent sections on relationship to other work or small/poor quality references.
  • Look for review articles in top technical magazines/journals. In the networking area this would include as IEEE Communications Magazine, IEEE Network Magazine, and various ACM publications. These can be the quickest way to get up to speed in a new networking area and also a good way to cram for a job interview ;-).

Software Development & Distractions

For those working on their masters degree without a lot of industrial software experience here are some tips to help you from getting too bogged down or to save you some pain and suffering:

  • Learn and use the basics of a version control system and do frequent "commits". This will allow you to relatively easily go back to an earlier version of your code if an idea or debugging approach doesn't work out. You don't need to use a "remote repository" or anything fancy like that. I use Git locally for all my software efforts.
  • Try to minimize the number of computing languages you use on your project but don't try to force it down to one. Different languages are better for different things. Use a language that keeps you most productive! I've switched from Java to Python as my primary language due to its wonderful open source support of scientific and engineering computing. I try to avoid dropping down to C/C++ as much as possible. For GUIs I've been going with web technology (HTML5, CSS, Javascript, and a variety of open source libraries) however this can entail quite a learning curve.
  • To store non-binary data try using JSON. Its the lingua franca of the web and libraries exist for reading and writing it from all computing languages. In addition its used by many "NoSQL" databases.
  • Some things are just easier (or can only be done) on Linux. Open source tools are the backbone of modern software and networking. Some of these are only available on Linux. If you are a Windows or Mac person you can run Linux in a Virtual Machine (VM). I currently use the open source VirtualBox system to run my VMs. This is a must if your project involves Mininet.

SJSU Specific Masters Advising

These are specific instructions for my advisees and potential advisees in networking at San Jose State University.

  1. If I am your adviser you must follow all the rules and recommendations contained in the document MS advising with Dr. B. All writing submissions must be in IEEE journal format.
  2. You must attend either EE297A or EE297B. The official procedures are explained there or may be obtained from the department. I do not have add codes for either EE297A/B.
  3. You will need my sign-off on various documents over the semester. You need to meet with me at least once before any document sign-off. I also need time to review any document you might need signed.
  4. Meeting appointments, skype call, etc. must be arranged via my SJSU email account. Don't use my Grotto Networking for academic advising.
  5. Appointments need to start and end on time. Be punctual!
  6. Some recommended SDN readings and web sites as of January 2015: SDN_readings.pdf.