Undergraduate Research Fellowship

About     Past Award Winners     Showcase

The Cheriton School of Computer Science is looking for exceptional students currently enrolled in a Computer Science program or related areas who have a keen interest in research and in pursuing graduate studies.

Students will participate in a four-month, full time, research-based co-op term (currently remote due to COVID-19) to work directly with a faculty supervisor in a particular research area (e.g., Computer Security, AI, Human-Computer Interaction, Theoretical Computer Science, etc.).

We are now considering applications for Winter 2022. Please see the Winter 2022 project descriptions that are available in the “Potential Supervisors” section below.


Students who are currently in 3rd or 4th year are eligible to apply; exceptional students from earlier terms will also be considered. A cumulative average of at least 80% is required. Preference is given to students enrolled in the Computer Science major or related programs, with a strong interest in research and/or graduate studies.

A student can only do one URF/Co-op per term, and must be on a co-op term or otherwise not taking courses. Note that International Students need a SIN# and work permit to work in Canada. During the term, it is expected that students will be working remotely from a location within Canada.

How to Apply?

Check the eligibility criteria stated above before proceeding.

If you are eligible, prepare a single PDF file (called YourFirstName_YourLastName.pdf), which must contain the following information:

  • An up-to-date CV/Resume
  • A recent transcript
  • A 1-page personal/research statement, stating (1) what your research interests are, (2) what your future plans are and why you want to pursue the URF, (3) indicate which research projects (in order of preference) you are interested in working on. You can either name a faculty supervisor in the “Potential Supervisors” list below, or name a faculty member that you have an existing connection with.
  • a letter of recommendation from a professor at your university (optional, but encouraged). The letter can be included in the application package, or sent directly to csgrec@uwaterloo.ca.

Please note that incomplete applications (missing any of the items above) will not be considered.

How to Submit

If you are a co-op student, apply to our job posting through your university’s co-op system and submit your PDF file on the co-op system. If the system does not allow attachments, you can submit your PDF file to here.

If you are NOT a co-op student, upload your PDF file to here.

For hiring URFs for the Winter 2022 (i.e., Jan-Apr 2021) term, the application deadlines are as follows:

  • first round: September 21, 2021

Fellowship Details (for Faculty)

Students will receive a minimum of $12,000/term for their co-op placement

  • The School will contribute $7,500/student
  • NSERC USRA + faculty to top up the difference

Example: Student X is awarded a research fellowship for a term, the school will provide $7,500 toward their salary. If they receive an NSERC USRA for $6,000, then the supervisor would not need to contribute any funding. If the student does not get NSERC USRA, the supervisor would need to contribute at least $4,500.

Frequently Asked Questions

  • How can I connect with a supervisor?

You can connect with an advisor in multiple ways. You can browse through the list of potential faculty advisors and their project descriptions below to see which research project you are interested in. If you have an existing connection with a CS faculty at Waterloo, you can also name a faculty supervisor who is not on the list. In your personal/research statement, please indicate which research projects (in order of preference) you are interested in working on.

  • Do I need to have a recommendation letter when I apply?

The recommendation letter is optional but encouraged, as it provides us with more information about your background and experiences.

  • What should I include in my personal statement?

We want to hear what you are passionate about and why you want to pursue a work term in research.

  • How will candidates be selected for this role?

Your application will be reviewed by a committee, consisted of faculty members and graduate students. Students will be selected for an interview, which is online and lasts 30 minutes. Some students may be asked to attend a second interview with a faculty supervisor. After the interviews, the committee members will independently rate each student’s application, then meet to discuss the aggregated results. The decision takes into account the calibre of the student, faculty recommendation/endorsement, as well as factors such as EDI (equity, inclusion, diversity), broad coverage of and equal representation from different research areas/topics, previous history of the faculty/student being awarded an URF, etc.

  • Do I need prior research experience to be eligible?

No! We accept both candidates with and without prior research experience. Just tell us why you have a keen interest in research on your personal statement.

  • Can I apply if I am not a Computer Science student?

Yes, you can still apply.

  • I am an international student, can I still apply?

Yes, as long as you have a work permit and plan to reside in Canada during the URF work term, you can apply.

  • I have questions! Whom should I email?

If you have questions about the URF program or how to submit your application, please contact csgrec@uwaterloo.ca.

Potential Supervisors

Supervisor Project Description
George Labahn Recognizing Handwritten Mathematical Expressions. We are interested in designing and implementing new techniques for recognizing handwritten mathematical expressions generated from pen based devices. These handwritten expressions will be incorporated into the MathBrush pen based math system along with a pen based math aware search engine.
Raouf Boutaba Data-driven software-defined cybersecurity. Enterprises and businesses are constantly under cybersecurity threats, which not only costs billions of dollars in damage and recovery, it also detrimentally affects their reputation. Therefore, it is imperative to provide novel and timely solutions to detect and mitigate threats in enterprise networks, which is quintessential to cybersecurity. Currently, this project focuses on mitigating cyber threats, where we leverage deep reinforcement learning to efficiently quarantine malicious network hosts, without impacting non-malicious hosts. The deep reinforcement learning algorithm is able to identify the hosts to quarantine based on alert observations provided by an IDS that may contain false positives. In this project, the URF will be involved in extending our ATMoS framework that can be deployed in software-defined networks to automatically quarantine malicious hosts. The extension includes generalization of the ATMoS framework in practice, such as within networks that do not have a fixed number of hosts, or networks where host identities can shift.
Peter Buhr Programming Language and Runtime System. The C∀ project is an open-source project extending ISO C with modern safety and productivity features, while still ensuring backwards compatibility with C and its programmers. C∀ is designed to have an orthogonal feature-set based closely on the C programming paradigm (non-object-oriented) and these features can be added incrementally to an existing C code-base allowing programmers to learn C∀ on an as-needed basis. In many ways, C∀ is to C as Scala is to Java, providing a research vehicle for new typing and control-flow capabilities on top of a highly popular programming language allowing immediate dissemination. There are many small development and evaluation activities within the C∀ project suitable for URFs. A URF candidate should be interested in programming languages and associated runtime internals with experience in C/C++ programming.
Martin Karsten Operating Systems Kernels - Theory vs. Practice. Operating system kernels are fairly big and very complicated software entities that address complex resource management challenges and typically support a massive set of hardware devices. Meaningful research into the structure and performance of operating systems is hampered by a significant barrier to entry: A research operating system must support a reasonable set of modern hardware devices to obtain useful performance measurements beyond simplistic benchmark tests. The overall goal of this project is lowering that barrier to entry by building a simple kernel nucleus and combining it with 3rd-party open-source software to support a large variety of device drivers. The critical next step is hollowing out an existing open-source operating system kernel and making the hardware support components independent of the core generic resource management services. This will result in a novel open-source research platform that enables subsequent studies on structural and algorithmic innovations for operating system kernels.
Jian Zhao AI-Assisted Design of Adaptive Neurofeedback Games for Autistic Children. Children with autism spectrum disorder (ASD) face many difficulties in daily circumstances, due to their impaired social and communicative functions as well as restricted interests in people and activities. Emerging studies have shown that neurofeedback training (NFT) games are an effective and playful intervention to enhance social and attentional capabilities in children with ASD, leading to improved behavior indicators. While existing studies have examined the effects of NFT games as interventions for ASD, developing effective NFT games has several big challenges. This project is to investigate novel techniques for augmenting the design and development of effective NFT games with machine intelligence while leveraging human expertise. For the data collected in empirical experiments, we want to formalize the game design with a conceptual model of basic game design elements. Then, we aim to use advanced machine learning to automate and generate certain aspects of NFT game content dynamically based on individual child’s needs. We also aim to build interactive authoring tools for designers to develop NFT games easily with the help of machine learning. The results could leads to offering more effective, engaging, and personalized intervention to the large population of autistic children.
Meng Xu Multi-dimensional Fuzzing for Distributed Filesystems. Network-based file systems (netfs) are one of the most basic sub-systems in modern enterprises and cloud computing infrastructure. Users and cloud-based applications reply on netfs to persist data in distributed media while ensuring data consistency and availability. Compared with the already complicated local file systems, the sheer complexity introduced by the networking stack, the communication protocols, the asynchronous design pattern, and the number and variety of events that could possibly happen over the network further bloats the number of execution states exponentially, making it even harder to design and analyze netfs. Trading-off completeness on state coverage, greybox fuzzing can uncover deep bugs because its coverage feedback tracks exploration status and guides execution into unexplored states. However, existing coverage-guided fuzzers never go beyond the boundary of a single node. Techniques that are proven effective for fuzzing software on a single node need to be re-imagined for the multi-node setting. Some of the research questions include 1) how to measure code coverage across nodes with different roles; 2) how to mutate network events and topology changes (e.g., crash or DoS of nodes) effectively; 3) how to reliably reproduce found bugs to help developers with triaging and fixing; and finally, 4) how to emulate the whole system fast enough to make it practical and suitable for fuzzing. Please feel free to apply if any of the problem sounds interesting to you. An ideal URF candidate should be comfortable with low-level C/C++ programming in OS kernels.
Semih Salihoglu Democratizing Open Datasets. There is a plethora of publicly accessible open datasets that are being published primarily by governments and public institutions. Major examples include websites such as open.canada.ca, data.gov.uk, or data.gov. These datasets contain a wealth of information about many aspects of our societies, from how government distributes research funds to how much meat is exported and imported to how many trees and species there are in different city centers. These datasets can serve as a lens to look into many domains of our societies yet they are of value only if they can be easily put together, integrated, and made accessible to the general public. Currently the task of finding, collecting, and analyzing such datasets is very tedious and laborious task. We have started a long-term project to build a data gathering system that allows users to search, download, preview, clean, and integrate such datasets, so that a non-technical journalist, researcher, or an engaged citizen can extract value out of them. There are many research opportunities both at the front end and back-end of our system that can be of interest to students interested at topics at the intersection of HCI, databases, information retrieval, and graph learning.