Recently, especially approaching graduation as a senior undergraduate, I’ve seen a good amount of people, from freshmen to seniors ask about how to get involved in undergraduate research. I think this is great! I was very lucky to have my brother Ani Canumalla give me critical advice which I used to make my experience as an undergraduate researcher productive.
I’ll try to outline a few key points that I think are broadly applicable, as well as relevant anecdotes as an undergrad in the amazing UW PLSE lab. I would say roughly this advice is probably relevant to the following groups
Feel free to listen to as much or as little of this advice as you’d like, and I hope it helps you in your journey!
These notes are a work in progress
Start early. Earlier than you think. As early as you can.
I think many undergraduates, me included, have a tendency to think that you have to be capable of doing flawless PhD-level research before you even think about asking labs or professors about research opportunities. This is not true.
You are supposed to be inexperienced and bad at research in the beginning1.
Starting research early has several strong benefits: 1. Research takes a long time to see concrete results. Starting early gives you time to onboard onto a project, write a paper with your team, and see it through to publication. Seeing the fruits of your labor is a hugely rewarding experience! 2. Starting early helps you get exposed to the tasks that a researcher does in all stages of a project’s lifecycle. This is especially useful if you might be considering graduate school, and want concrete experience to know if it will be a good personal fit for you. 3. Starting early gives you time to build relationships with your labmates and professors. This is important regardless of whether you want to graduate school. These relationships can lead to internships and job opportunities that are not available to the average undergraduate.
After finishing your first or second year at UW, I would recommend reaching out to professors or labs based on your interests. That being said, I don’t think the project you work on is as important as the people you work with, which we will get to later. Apply to groups that have good culture—PLSE is great, I have additionally heard great things about the the Security and Privacy Research Lab at UW, but there are also others. Some good proxies to look for to see if a lab has a good culture are:
This list is not exhaustive, but its a good starting point.
I started research in the spring of my freshman year. I had taken a programming languages course that I found interesting, but notably didn’t get an A in (You don’t have to be perfect!), and asked the amazing Zach Tatlock if he had open research opportunities at PLSE. I really enjoyed Zach’s energy and personality, which was why I was drawn to working with him.
He said no, but to ask other PhD students and faculty in the group. Looking at his students, I emailed Gus to work on his project and after 6 months of closely working with Gus 2, I started meeting with Zach regularly during project meetings.
I think the most important thing I did was have persistence. Even though Zach said no, I still asked other people in the lab, and eventually Zach had to accept I wasn’t going away. I wouldn’t necessarily recommend that approach, but I do think being persistent by hanging around the lab or reading groups and getting to know the people there for an extended period of time is very impactful.
PLSE in particular has the first-rate PL and SE reading groups (PLRG and SERG) that are fantastic places to meet people and learn how to read academic papers. Other labs almost certainly have similar groups.
This is perhaps the most important piece of advice that I can give. The single biggest killer of research productivity in your undergraduate will be other obligations.
At a top school like UW, you will have a lot of pressure from your peers and yourself to “grind” and take on as many opportunities as possible. This is a good thing! But if you don’t control yourself, you will quickly find that research is the first thing to suffer (atleast in my experience).
My advice isn’t something anyone likes to hear, but you’ll have to take some time to figure out what are you biggest priorities, and cut out commitments accordingly. This will be different for everyone, but I think it’s important to be honest with yourself about what you can handle while not going insane.
I think generally from what I’ve seen, the best way to get time back is to reduce courseload as much as possible. I suggest maximum 2 technical courses per quarter if you want to do great research, but this will vary from person to person. I personally usually go for only one because I’m lazy.
I think following this advice was the single biggest factor in my success as a research assistant. For me, research was my top priority and my most interesting academic activity. I took light course loads the vast majority of the time, and the quarters I did not, I was not able to make significant progress on my research.
In spring quarter of 2023, we were pushing for a deadline on Lakeroad, and I was taking CSE 452, a notoriously time-consuming course along with a graduate special topics course on ML systems.
I found that I was really struggling to balance my mental and physical health while pushing on the Lakeroad deadline, and was falling behind on my project for the ML systems course. I ended up dropping the course, which helped me maintain sanity and have much-needed relaxation time during a busy deadline period3.
I also sacrificed several TA opportunities in order to have more time for research. I don’t regret my decision, but I do know that I would have really enjoyed TAing. Unfortunately I had to make a choice to achieve the research goals I had set for myself.
It is a personal decision how you want to split your time. One choice is not better than the other. I know undergraduates who did a small amount of research and TA’d regularly, and they are immensely successful. Just be sure to be conscious about the choices you make, and whether they are helping you achieve your personal goals.
I’ve noticed a lot of undergraduates spend a lot of time agonizing over finding research with a faculty or PhD student who does exactly their interests. In general, I would say this is slightly backwards: you should seek out people you think will be good mentors rather than people who match exactly your research interests.
There are several reasons this makes sense strategically.
Research will always look fundamentally different to the corresponding classes you have taken and have an interest in. Courses, especially undergraduate courses, teach the foundations of a topic, not the current forefront. You might not see the immediate relations between the content in your favorite courses and the research papers faculty in that area are writing.
You (most likely) don’t have a research vision that you should be set on pursuing immediately. You’ll learn how to develop a research agenda you are passionate about by doing research, not before you start.
Many topics become extremely interesting once you get over a small basic knowledge hump. Something that doesn’t sound interesting at first glance might be very enticing once you spend a week or two learning about it from a PhD student who’s job is to share their enthusiasm for the research.
Research becomes more fun the more you mature (in my opinion). A good mentor will help you mature quicker, while a bad or absentee mentor will stunt your growth significantly.
The advice here is simple. See above for looking for good group cultures, but you should put your research interests as a second priority. Talk to other undergraduates about their experiences with their mentor, and see whether the strengths and weaknesses of the mentor would complement your own skillset. You should also talk to the potential mentor yourself and get a vibe-check. Your gut can tell you than you know.
Finally, research interests are a second priority, but still a priority. I want to encourage you to be open to learning new topics, not to subject yourself to research you fundamentally don’t click with. If you vomit and have panic attacks at the mention of compilers or operational semantics, don’t force yourself to work in the PL group just because people have said good things about PLSE.
I think this advice is a good way to get started in research. I might expand on this in the future, but I think this is the most important advice in regards to getting started in research.