Grigory Yaroslavtsev bio photo

Grigory Yaroslavtsev

Assistant Professor of Computer Science, George Mason University.

Email Twitter Facebook Google+ LinkedIn Github

For graduate students December is probably the best time to start applying for a summer internship. The process of getting a software engineering internship at places like Google, Facebook, Microsoft, Twitter, Quora, Dropbox, etc. is so much streamlined that there is even a movie about it.


Getting an internship in research is a lot more of a unique experience. Graduate students ask me about this a lot and even once invited to give an informal talk on the topic at the Wharton graduate students statistics seminar. Surprisingly, I haven’t seen any guide about research internships available online so I decided to write down things I usually say.

Disclaimer: advice below is my personal opinion and is biased towards computer science and the U.S, although sometimes applies more broadly (e.g. to pure math, applied math and statistics). My experience is based on internships at AT&T Research (Shannon Laboratory), IBM Research (Almaden) and Microsoft Research (Silicon Valley and Redmond) and might be somewhat specific to these places, only 50% of which still exist. I also visited Yahoo! and Google Research a lot and can say that these places work similarly but with a few important differences described below. Last but not least, I tried to do my best to avoid making any comparisons (and especially controversial ones) in terms of quality between different labs and academia.


Why Do It?

Doing a research internship is a great way to meet your future collaborators and friends. I did it 4 times (the most you can do as an F1 student) and spent 50% of my 3-year PhD in research labs. While this is quite unusual, I should say that I enjoyed the experience tremendously and still work and talk regularly with most of my former mentors (Graham Cormode, Howard Karloff, David Woodruff, Alex Andoni and Konstantin Makarychev), who have also been an invaluable source of advice for me over the years. I met many of my best friends from grad school times in the labs and still visit places where I did an internship whenever I happen to be in the area.

Where to Apply?

This highly depends on your area of expertise. These days there is no single best place like Bell Labs in its glory days but there are multiple options to consider.

Pure Theory

For pure theoretical computer science I would suggest to start with MSR and IBM. While I am certainly biased and there can't possibly be a ranking of research labs I would say that these are the top places:
  • Microsoft Research. Posting, multiple locations (main offices are in Redmond, Cambridge and NYC). Redmond office is the oldest and covers almost all areas. NYC and Cambridge offices are smaller and somewhat similar, being particularly strong in machine learning, social sciences, algorithmic game theory and computational complexity among other areas.
  • IBM Research. Posting, multiple locations (main offices are in Yorktown Heights, NY and Bay Area). Posting from Ken Clarkson about theory positions at IBM Almaden. Almost all major areas are represented in either the Yorktown Heights or the Bay Area location.

Another great place is Toyota Technological Institute at Chicago (posting). I put it in a slightly different category than the industrial research labs because of its close ties with the University of Chicago and the overall feel of a more academic rather than industrial environment. While AT&T and Bell are shadows of their past, they still have some amazing people:

  • AT&T Labs – Research. Posting, multiple locations (main office is in New Jersey).
  • Bell Labs. Posting, multiple locations (main office is in New Jersey).

More Applied

Here is a list of some more applied research places off the top of my head:

  • Google Research. Google jobs website, multiple locations (including NYC and Bay Area). Google usually doesn't make a distinction between research and software engineering positions in their search. Once you pass the standard software engineering screening process, you get into the host matching phase and you can find a mentor interested in research.
  • Yahoo! Labs. Posting, multiple locations (including NYC, Bay Area and Barcelona).
  • Facebook Research. Posting from Yann LeCun, multiple locations (including NYC and Bay Area).
  • Ebay Labs. Posting, located in Bay Area.
  • Technicolor. Posting, located in Bay Area.
  • HP Labs. Posting, main location in New Jersey.
  • NEC Labs. Posting, main location in New Jersey.
  • VMWare. New lab founded by some of the former Microsoft SVC researchers, main location in Bay Area. Added to the list by suggestion from one of the founding members, Udi Wieder.

I am only familiar with the first two, which seem to have a less strong commitment to fundamental research than the labs listed before. However, the total number of job and internship openings in this slightly more applied list is probably almost an order of magnitude larger.

National Labs

There are also many national labs. As a Russian citizen I can't tell you much about experience at these (especially in crypto, where I am sure my list is highly incomplete), but here are some options. Somewhat surprisingly, even these places sometimes have opportunities for international students, which may not be well advertised. Here are a couple of places to consider:

  • Sandia Labs. Postings, main locations include Albuquerque, NM and Livermore, CA
  • Berkeley Lawrence. Postings, located at Berkeley, CA.

Internship Tips

Internships at research labs and talented interns are both scarce and unique resources so there isn't much data to look at and the decision making process is highly random. However, there are a few things you can do to improve your chances.
  • List your top choices and potential mentors. It helps a lot if you know your future mentors in person. At the very least make sure that you are familiar with their work. A great lab can easily get hundreds of applications. What matters most for the success of your application is whether there is a mentor who will pick you from the pile. Don't hesitate to contact your top choices either directly or through your advisor, but avoid pestering people. Also, mention your potential mentors' names in different parts of your application (forms, research statement, etc.)
  • Apply everywhere. While your chances are significantly reduced when you send a cold application, sometimes there are things you don't know and forces beyond your control. This is especially true for graduate students in their early years. Indicating your interest may be important by itself, e.g. I gave my first talk at an industrial lab which couldn't offer me an internship but invited for a short visit. It felt a lot like Peggy Olson's (Mad Men) first business trip to Richmond but better – thanks to IBM I had no dogs having sex as a view from the hotel room :)
  • Recommendation letters. Ask your letter writers as soon as possible (ideally at least a month in advance), picking them based on the list of your top choices and other places where you plan to apply. Ask your letter writers for suggestions about places and feedback on your application materials.
  • Research statement. For pure research positions you will need to write a research statement. This is a great opportunity to take time to work on improving your vision. If you are like me then this is a process both difficult and rewarding. Every year when I applied I started by throwing my previous research statement into a trash bin because it looked absolutely terrible. I even remember myself getting very upset once because my vision was such a crap compared to some of the people in the labs where I applied. While your research statement is going to be unlike anyone else's I still recommend looking for inspiration at the research statements of your role models (maybe even potential mentors if they are available). You can ask for feedback on your statement from your advisor, colleagues and friends but I wouldn't expect too much because your statement is truly yours. Make sure you customize some parts of your statement for different places. Finally, for an internship application the research statement often doesn't matter too much, so you don't have to stress too much over it. However, I would still recommend to think of it as a dress rehearsal for your future applications as well as an opportunity to develop your vision.


  • How much does it pay? Usually about the same or slightly more than a software engineering internship. I would expect $6–8K/mo (fixed, no negotiation, overtime or bonuses) + standard benefits such as relocation, car rental and housing discounts. So money wise this is certainly better than academia, but can easily be at least two times less than an internship in finance (if you charge overtime, include bonuses, etc.). However, if you are doing what you enjoy most then you might care less about the money.
  • Can I do an internship during the Fall/Spring semester? Yes. The main advantage is that researchers at the lab are likely to be more available during these semesters. Another advantage is that if you are doing a summer internship in the same area then you can do two internships back to back and reduce the pain of relocation (I spent six months in Bay Area this way). There are certain disadvantages: less interns and corporate events during the semester, some schools require you to register for credits even if you are away (read as you and/or your advisor will have to pay money and do some paperwork).
  • Can I do an internship after my last year in grad school? Yes if you graduate after the internship. However, it also depends on the place – Google wouldn't allow me to do this but Microsoft Research did.
  • What if I am on an F1 visa? Then you have to jump through more paperwork hoops and in particular get a CPT. You can accumulate at most 12 months of CPT employment without losing your OPT, which limits the number of typical 3-month internships available to you down to 3 or 4.

Internship in Labs vs. Academia

In theoretical computer science there is not too much difference in the style of research between research labs and academia. Also, there have been a lot of discussions online about advantages and disadvantages of each (e.g., here, here, here, here and following the links from there). However, from the intern's perspective these issues are less relevant, e.g. it is highly unlikely that a lab will be shut down during your internship.

From intern's point of view, I would say that a few obvious differences are:

  • More face time. If you enjoy having long brainstorming sessions lasting for several hours every day then an industrial lab might be an ideal place for you. In academia you are unlikely to see your advisor more than twice a week for a couple of hours. This means that at an industrial lab you can make a lot of progress on one project in a very short period of time. In my experience, industrial researchers tend to have personalities suitable for thinking long hours on a deep problem together with an environment that lets them do this. In academia professors' busy schedules seem to interfere with research a lot and graduate students often work a lot either by themselves or with other students. Coming from team programming competitions background I really enjoyed these long brainstorming sessions in the labs.
  • Patents. There are many controversies around patents, but ultimately they play a very important role at research labs (e.g. Nathan Myhrvold, the founder of the controversial Intellectual Ventures, was also the founder of Microsoft Research). While doing an internship, keep in mind that some parts of your research may later be filed as a patent. Depending on the company, you might get some money for this. Also, it is an interesting experience to see a paper converted into a patent by lawyers.
  • Social aspects. Researchers at labs work and interact with each other a lot more than professors do. This also includes going for lunch as a group and means that you can have lunch with some of the biggest stars in your field every day! You can do lots of other things together too, such as running, cycling, ping pong, etc. I got into triathlons during the group rides at IBM Almaden.


If you can't get an internship at your dream lab you still have multiple options. While I haven't tried them, many of my friends did.

  • Unpaid Internship. Unfortunately, not all great labs are well-funded. If you can't find a paid position but the lab is interested in working with you sometimes your advisor can pay you from their grant.
  • Visiting a Lab. Sometimes you can get paid for a short or long visit (usually works only for well-funded labs).
  • Consulting. This is a slightly unusual option for a graduate student, but some of my friends did this. It probably works best if there is a lab next to the place where you live and does involve some paperwork. Getting hired as a consultant is also sometimes a way to keep your access to the company's data after an internship if, say, you are still doing experiments for a paper you started while being at the lab.
  • Fellowship. Many fellowships come together with internship opportunities. These are even better because you are not tied to a specific location/mentor. A great list of fellowships is maintained by CMU.
  • Visiting Another University. Summer might be a good time to visit another university because professors are not teaching, although they might be traveling. Visiting during the Fall/Spring semester might be also good but for exactly the opposite reasons.