Research Assistant roles are a great way to gain experience in research and fields that are rare/competitive in an industry role. This guide will focus on part-time assistant roles in Math, Computer Science or Engineering at the University of Waterloo (but hopefully some of the advice will generalize to other faculties/schools). My goal is to supplement the information on UWaterloo’s URA websites with my experience, so please check those out as well.

Some other opportunities I won’t discuss include full-time Undergraduate Research Internships and the NSERC Undergraduate Student Research Award.

The information in this post is true as of Fall 2020 (specifics about applying/funding may change in the future).

What is an Undergraduate Research Assistantship (URA)?

A URA is a paid part-time research opportunity at the University with a researcher, who is usually a professor. As a first-time URA, you will get a mini-project or tasks to contribute to a research project. This typically involves reading the literature, conducting experiments, implementing methods in literature, implementing your own or others’ ideas, and possibly helping write the final manuscript. If you make a significant contribution, you may end up as the primary author or one of the supporting authors on a publication, which is beneficial for grad school applications or research & development roles in industry!

Why do a URA?

A URA is a unique, paid way to gain technical experience that is relevant to both industry and academia during a school term. During your URA, you will be working on finding solutions to novel problems at the cutting edge of your field. This is a worthy endeavour by itself, but is also a great differentiator when applying for internship roles in the industry, as it shows you are deeply interested in a subject area and are willing to go above and beyond. This will allow you to get interesting roles that you would not have otherwise been qualified for, especially for roles in research & development.

URAs are also a great way to find out if you’re interested in academia (e.g. becoming a professor) or post-undergraduate education (for non course-based programs), since people in those roles spend most of their time conducting research. In addition to the research component, exposure to grad students and professors will give you an opportunity to learn more about their experiences to figure out if it’s right for you. Furthermore, applying to grad school can be very competitive, and demonstrated research experience (+ a publication, if possible) is the best way to show your qualifications for a research-based graduate program. Plus, you will need letters of recommendations to apply, and a letter from a professor with whom you did a URA are much more valuable than a letter from a professor you barely know.

How much time does a URA take up?

The school officially recommends 6 hours per week, though I would suggest dedicating about 10 hours a week (or more if you can!) to really benefit from this opportunity. Depending on the URA, this could involve working in the lab, weekly meetings, and independent work.

You will likely be reading and getting up to speed for a lot of your URA. At first, it took me an entire week or more to get through a single paper, since the content and notation were completely new to me! Just make sure you ask the professor/grad students in your lab questions often so you aren’t stuck for too long (math is notoriously hard to Google). I noticed that undergrads who make significant contributions usually do URAs for more than one term with the same researcher, as it takes a while to gain momentum when doing research (especially when it's your first time).

A URA is manageable with a full course load as long as you limit your other extra curriculars. My strategy for time management is to limit the time I spend on all my involvement (school, extra curriculars, etc) except for one “main” commitment that I let eat up more time as needed. During my URA terms, my “main” commitment was the URA. This helped me get the most out of those experiences, though this definitely is not necessary to have a successful research term.

How does funding (i.e. getting paid) work?

As of Fall 2020, in Engineering, you will receive $900 per term. This will typically come from the faculty member’s budget, but if you are one of the first 60 qualified URAs of the term,$250 of that $900 comes from the Dean’s Office. In CS, you will receive$600 from the faculty member and $400 from the faculty itself. If you have the President’s Research Award entrance scholarship, you can claim that$1500 in addition to the standard URA salary. Many students who have the President’s Research Award also have the \$1500 President’s Experiential Award entrance scholarship, which can also be used towards another research role (can't use both at once!). You may be eligible to claim the President’s Award for your URA even if you aren’t eligible for the standard URA funding.

Who is eligible?

In the Faculty of Math (which includes Computer Science), you must be a math/cs student who has completed 2B and has a cumulative average (CAV) of at least 80%. In Engineering, you must be an engineering student who has completed 1B and has a CAV of at least 80%.

These requirements only exist for funding purposes! If your term, CAV, or faculty do not meet the requirements of the URA, you will not receive funding from the faculty. You can still do a URA if the supervisor is willing to fully cover your funding, if you have a President’s Award available, or you are willing to complete the URA on a volunteer basis.

Am I qualified enough?

Without even looking at your resume, yes! URA’s are designed for people who are new to research. However, you still need to demonstrate some basic skills. First, and most importantly, professors want to see that you’re motivated and capable of self-learning. This doesn’t mean you are expected to learn everything by yourself, but rather, you are expected to learn as much as you can independently and come back with specific questions. They also expect you to have the foundational math/computer science/engineering skills required to learn their field, which you can demonstrate through the reasonable marks in your first and second year courses (e.g. in calculus, linear algebra, computer science, etc). Finally, it’s good to have some relevant-ish experience. Software development, hardware engineering, data analysis, and similar skills are all needed to do research (even if the research field is not directly related to those), so having experience in these areas can help you contribute while learning.

Domain knowledge is nice to have, but definitely not necessary for a URA. You’re not expected to be up to speed on a cutting edge area for your very first research role. But, this can definitely give you a leg up, and I find watching lectures or talks online are the best way to get acquainted with a new field. They are less dense and more digestible than papers or textbooks, which is great for beginners.

How do I figure out what research I want to do?

If you figure this out, please let me know, I’m still in the process! Watching talks online, attending reading groups, talking to others in research, and reading survey papers are a great way to introduce yourself to an area of research and see if you want to learn more.

But for your first URA, don’t stress too much about the precise topic of research. Even if you have some idea of what you’re interested in, it’s likely that will change later on. Also, the research style of the professor and lab will affect how much you enjoy and learn from the experience more-so than the topic.

When applying to my first URA, I read almost every computer science professor’s “Research Interests” section (through here) and reached out to every one that I found even somewhat intriguing. For my next round of applications, I even expanded my search to the engineering faculty.

Since many professors will not be able to accomodate a new undergraduate RA, your response rate will likely be pretty low, so don't be afraid to email a ton of professors. During your first chat with those that respond, find out more about their work and why they became interested in it. Perhaps insight into how they came into the field will help you discover your own interests.

Though it will be tiring to reach out to so many people, deciding what you want to do will be much easier when you have a small set of available opportunities rather than trying to pick something from all the research available at the school.

How do I find a professor to work with?

The URA websites list some researchers and potential projects. After reviewing that list, look through the list of researchers in the faculty/area you’re interested in (e.g. here’s one for the Cheriton School of Computer Science, here’s one for the AI group). For your first pass, read the “Research Interests” section of each researcher’s profile for as many researchers as you can. Then, for those that intrigue you, visit their websites and read about their most recent work to get a sense of their research.

Alternatively, you can attend any public reading groups or talks the professor hosts, which is an excellent way to get to know them and express your interests. Talks can be found on the webpages for various research groups, such as the algorithms & complexity group, combinatorics & optimization department, and artificial intelligence group. Some groups also have a mailing list, such as the algorithms & complexity group and artificial intelligence group (they may not be active, though). Reading groups can be harder to find--I’ve typically heard about these through word of mouth, though some professors list these on their personal websites. Also, talking to grad students who work with a professor is a great way to learn about their research, and they can likely introduce you to the professor. Finally, if you are in a professor’s class, chatting with them during office hours about a URA is a great idea!

After this, email researchers you are interested in working with. I recommend doing this between one week before and one week after the school term starts. There’s no harm in emailing early (it’s probably beneficial!), but you will likely have to wait until the beginning of the term to arrange a URA, as their commitments could be uncertain until the term starts.

Subject: Interested in an Undergraduate Research Assistantship

Hello Professor _________,

Hope you’re well! I’m a [term] [program] student interested in doing an Undergraduate Research Assistantship (URA) with you this term.  I [read/watched] your recent [paper/talk/workshop], [paper/workshop title], and found it quite relevant to my own interests in ______. Your class on [class the prof taught that you took/are in] was engaging and motivated me to reach out to you. Also, I am eligible to claim a President’s Research Award to fund this URA.

Through my experience as a [role] at [company], I worked on [project] using [tools/tech]. The [engineering/software development/data analysis/machine learning] skills I exercised during this internship are directly applicable to support your research in [area]. Furthermore, I’ve done well in courses on [relevant subject areas], showing that I have the theoretical foundations necessary to succeed in your lab.

Would you be available sometime soon to talk more about a potential URA? I’ve attached my resume and transcript below. Thanks in advance!

Best,
[name]


Professors often miss emails (their inboxes tend to be pretty full, especially at the start of the term), so feel free to bump the email if they don’t respond in about a week. You may also visit them in person to book some time to chat. Don’t feel bad if they don’t respond or if they reject you! A professor will typically only take on a new URA if they have enough time to support a new researcher, so being rejected is more a reflection of the professor’s commitments that term than your abilities.

If the professor has the capacity and willingness to support you, they will invite you for a quick chat about your experiences and potential projects. Don’t be nervous, they won’t grill you on technical concepts! They just want to get to know you better to see if they have a project that’s a good fit for your skill level and interests. At this stage, I would recommend asking about what the expected time commitment is, what prior knowledge the professor expects, what their preferred mode of communication is, who you’ll be working with, what their mentorship style is, and if they have suggestions for reading materials to get started right away or get a better sense of the research area.

If the project and lab are a good fit, the professor will typically let you know during your chat itself or soon after. Then, you can proceed with the URA application process instructions available on the website.

Some professors have a backlog of emails, so they may miss the notification about filling in their portion of the URA form. I prefer to print the form and have the professor sign them in person. The digital president’s research award form is here, but you can find a printable version here (which you can submit directly to the undergraduate office). The PDF of the engineering URA application is here. For CS, you must register for a URA here, then you will receive a PDF of the physical form. Of course, you can only do things in person after COVID :(.

Remote URA hunting tips

Much of the advice in this post applies to the remote URA search as well. The key challenge is it’s harder to form personal connections while trying to get the URA, since you are limited to email. Many of the reading groups, talks, and office hours still happen virtually over video call. Also, you will have to rely on the digital forms available on the URA websites instead of the PDFs I linked. If your URA is in math, computer science, or other areas that don’t require a physical lab, you will be able to complete the same work (most of the work is independent anyway).

For a remote URA experience, I would pay attention to how quickly a professor replies to email or other forms of contact. Their first response will likely be slow, but if subsequent replies are sporadic as well, that is indicative of how smooth your communication will be for the rest of the term, which makes remote work more difficult. I would advise waiting to do a URA with this professor until you have an in-person term when you can reach them directly. Also, once you start the URA, book regular meetings (perhaps bi-weekly) with other members of the group outside of the lab meetings so you can work with them and get to know them. Since you won’t run into them in person, there’s no way for you to integrate into the lab unless you make this explicit effort.

My URA experience

I have completed a total of two URAs. I applied for a URA for the first time at the beginning of 2nd year, where I emailed about a dozen professors in the Computer Science Faculty who were doing research in Machine Learning (whom I found through the faculty pages linked above). I got about 4 responses. 3 of them said they were not looking for undergraduates for the fall, while the fourth told me to come back once I was a bit more senior. No URA for 2A :(.

The next term (2B), I emailed about 7 more professors, some from the previous term, but others from the Engineering faculty (lots of cool ML work there too). I talked to 2 professors in person, and ultimately chose to do a URA with professor Lin Tan, who was conducting research in machine learning-based program synthesis. At the time, I had some experience in machine learning (one internship in data science), but basically none in research. Since I was not in engineering, I could not get funding directly from the faculty, but I was able to claim my President’s Research Award. I worked closely with one of her PhD students, Thibaud, who gave me an independent project (classifying bugs in code). For the first few weeks, I read papers in the area, attended weekly lab meetings, and got familiar with the data. Afterward, I started conducting experiments by implementing some of Thibaud’s suggestions and methods from papers. A couple weeks later, I started implementing some of my own ideas. In the end, I presented my work from my URA to the rest of the lab. During the URA, I would work in the lab itself for a few hours after the weekly lab meetings, but completed most of my work over weekends.

During the firt term of my third year, I did my second URA. I did not email any professors and instead attended professor Pascal Poupart’s Sum-Product-Network (SPN) reading group. After a couple of weeks in this group, I spoke to him about a potential project with another student. Ultimately, I joined a project on second-order neural network optimization methods with 2 other undergraduate students. This time, I was eligible for the standard URA funding, but claimed my President’s Experiential Award instead. This URA was quite different from the first--the work was more theory focused, and we definitely did a lot more reading than implementation. Also, the project was much more independent, and it was up to us to drive the project. We would meet with Professor Poupart weekly, and during these meetings we would discuss the theory and work through solutions to theoretical issues we were facing.