Common Questions About Research, Answered

General Questions:

What is research?

Research is the work done to contribute something new and meaningful to humanity's body of knowledge. In Computer Science, it often involves identifying and solving new, important problems, or inventing new solutions to existing important problems. Notice the emphasis on novelty and importance - these are key attributes distinguishing research from other (potentially valuable) contributions you could make to society.

Why do research?

There are many reasons to conduct research:
  1. It is a critical part of the ecosystem of innovation. Almost every technological and scientific advance, to which we owe the luxuries of modern society, traces back to an academic, industry or government research lab. When a new model or algorithm is published for speech recognition, mage classification, climate modeling, or any other number of important tasks, this lays the foundation for user-facing products or scientific discoveries that benefit society.
  2. It is fun and challenging. Research is open ended: there is no road map when you are pushing the boundaries of our collective knowledge. It gives you an opportunity to be creative and to problem solve. Careers in research are empowering: you have great creative control over and intellectual freedom in your day to day work. The ability to focus on the problems that you find important and interesting is very satisfying.
  3. As a student, it gives you opportunities. Being part of a research group brings you into a small community of motivated, knowledgeable and skilled peers, from whom you can learn and with whom you can network. It provides resources like reading groups, or tutorials, or dedicated research lab space that are not available to other students. It gives you something impressive to talk about on job and internship interviews, and technical, collaboration and communication skills that will help you succeed once on the job. It gives you an advocate (your advisor) in your pursuit of internships, scholarships, awards, graduate school and jobs. Through research you may collaborate with experts in other fields, and at other institutions, growing the reach of your network. You can earn research credit (CSCI 496), may be able to use your research project for CSCI 491-493, and in select cases funding is available. If you publish a paper, you may get funding to travel to present your work. The list goes on...

Note that making money in the short term is not a good reason to do research. Most students are not paid to do research, although a handful are. As described above, the research experience is more of an apprenticeship, growing your knowledge and skills and opening doors. That said, the skills you learn doing research are valuable, so the experience may be lucrative in the long run.

When is the right time to get involved in research?

The answer is different from research group to research group, but almost always earlier than most students expect. Personally, I recommend looking for opportunities as soon as you complete CSCI 241. Note that faculty tend to look for prerequisite skills in potential research students, not expertise in the research area itself. For example, to join my machine learning research group, you need not have any prior machine learning knowledge or experience, but having a strong math background and good programming skills are pluses. The general expectation is that you will "learn on the job" (hence the apprenticeship analogy). An important corollary of this expectation is that there is such a thing as waiting too long to begin research. Most faculty will not take on a student who has fewer than two quarters left, and many will not take a student who has fewer than three quarters left. The learning curve takes a while to climb, and faculty want to set students up for success in their projects.

Sounds great. How do I get involved?

First, I recommend that you check out the department webpage to see who specializes in what. Then, I would reach out to faculty whose interests align with yours to express your interest in research and ask if there are any opportunities. In the best case scenario, you hear about a lot of exciting opportunities and get to pick the one that works best for you. However, while there is more research activity happening in the department now than ever, capacity is still constrained: mentoring students in research is time-consuming and time is a faculty member's most valuable commodity. (One piece of advice: new Assistant Professors are good people to talk to about research, since they are less likely to have a full research group in place yet and will be highly motivated to establish their research group.) In any case, I recommend (and most if not all of our faculty agree) that you stick to one project and one research group; it is better to do an excellent job on one project than a mediocre one on multiple.

Hutchinson Group Specific:

My Approach to Research

Rather than primarily investing my time into projects, I prioritize investing time into students, helping them obtain the skills/knowledge they need to succeed. With the right skills, you can solve problems in weeks that would have taken you months or years. This leads not only to successful research projects, but to students who go on to succeed in their future endeavors, as well. Getting to this point requires a lot of time and effort, both on my part and on the students'; you should think of research in my group as something you put a lot into, and get a lot out of. I also believe in creating an environment with lots of peer-to-peer learning; put another way, if there are N student in my group I want to see O(N2) learning happening, not O(N). To faciliate this, I maintain a large research group, provide resources to make it easy to communicate, and provide opportunities to exchange ideas.

What do students in the Hutchinson Machine Learning Research Group do?

Logistically, for machine learning, a research project typically involves several stages:

  1. Laying the foundation. In the first stage of a research project, tasks include finding, acquiring and processing the data, conducting extensive literature review to gain a clear understanding of what has already been done and how our project fits into that landscape, and finding and acquainting yourself with the relevant tools and background knowledge.
  2. Preparing experiments. There is almost always a stage of implementing and debugging new code. This stage ranges from very light (e.g. writing a few wrapper scripts on existing tools) to extensive code development (e.g. implementing an entirely new toolkit). This stage might take weeks to a year to complete. During the development stage, you typically begin conducting pilot study experiments, so this stage and the next actual overlap a bit.
  3. Experimentation. Once the code is in place, you enter a phase of running experiments, analyzing the results and (typically) implementing and debugging code. This phase continues until there are suitable results (e.g. as demonstrated by performing better than a fair baseline on some suitable performance metric). In preparation for writing a paper on your experiments, you often also conduct various analyses, which highlight interesting aspects of your model and may or may not be quantitative. Depending on luck, among other things, this stage can take weeks to a year.
  4. Sharing your contribution. Disseminating your work is a critical part of research; this is done by publishing a paper on your work in a peer reviewed conference or journal. The first step is to write and submit the paper. After peer review, the paper either be accepted or rejected. If the paper is accepted, you will inevitably need to make minor revisions to the paper, but you will also be invited to give a poster or oral presentation of your work. Once you have given a presentation of your published work, you have succeeded in your research project! My goal for every research project is to get to this point.

This sequence is illustrated in this flow chart.

What skills would best prepare me for the Hutchinson Machine Learning Research Group?

General programming skills are always helpful, and Python and bash scripting skills are particularly useful. I recommend that you get comfortable working in a linux environment, including some level of comfort with a command-line editor like vim or emacs. Math skills are also highly recommended. There is really no such thing as having too much math, but if you are trying to prioritize, Linear Algebra (Math 204 and 304) and Multivariable Caclulus I (Math 224) are the most relevant.

How do I get involved in the Hutchinson Machine Learning Research Group?

Please email me to express your interest, and I will add you to a mailing list of interested students. Once per quarter I send an email to interested students with a survey, which asks about your background, interests, and graduation timeline. I then use that to try to match students to projects. Given high demand, I cannot invite all interested and qualified students to join my group. If you do not get an invite the first time, I encourage you to keep applying for as long as you are interested.