The Cheriton School of Computer Science offers enrichment opportunities to exceptional students through the Undergraduate Research Assistantships (URA) program to earn $600 a term for part-time research with a faculty member. Starting from F18 the School will top up $400 for students who meet the URA eligibility requirements and are accepted by the CS URA program. The money is paid once near the end of the term.
Application deadlines per term
- Winter applications — Last day of the month in January
- Spring applications — Last day of the month in May
- Fall applications — Last day of the month in September
We will not accept any applications once deadline has passed
Any student who has completed their second year in the Faculty of Mathematics with a cumulative average (CAV) of at least 80% is eligible. Preference is given to students enrolled in Computer Science major plans. A student can only do one URA per term. A student cannot be on a co-op term while doing a URA.
Please refer to the Student Success Office for this information:
For an Engineering student to do a URA with a CS professor, please follow the application procedures explained on the Engineering URA web page: https://uwaterloo.ca/engineering/ura
- International Students need an SIN # to work in Canada
- Engineering Students need to follow Engineering URA procedures
How do I apply?
- Check eligibility stated above. Make sure you are eligible before taking the following steps.
- Find a project, send a resume and recent grade report to the professor, request an appointment, and reach a verbal agreement on the details of the project.
- Complete the Registration form - Once you complete the Registration form you will be directed to a webpage with the URA and pay forms
- Complete the following forms:
- Undergraduate Research Assistantships (URA) form (PDF)
- Casual or Additional Pay Request form (PDF)
- Submit forms- Deadline one month after term starts
Both of these forms must be fully completed and submitted to receive your URA payment.
A faculty member must sign and fill out the account number on both the URA form and the Casual or Additional Pay Request form.
Faculty members post openings each term so interested and eligible students can apply. Students can also contact faculty members to see if they are interested in supervising a URA.
The following faculty members have confirmed that they are willing to be contacted by potential URAs.
URA research projects
Title: HoloClean — A Machine Learning Framework for Data Quality and Enrichment
HoloClean is a statistical inference engine to impute, clean, and enrich data. As a weakly supervised machine learning system, HoloClean leverages available quality rules, value correlations, reference data, and multiple other signals to build a probabilistic model that accurately captures the data generation process, and uses the model in a variety of data curation tasks. HoloClean allows data practitioners and scientists to save the enormous time they spend in building piecemeal cleaning solutions, and instead effectively communicate their domain knowledge in a declarative way to enable accurate analytics, predictions, and insights from noisy, incomplete, and erroneous data.
Check out the details and the open source project at www.holoclean.io.
Please contact Ihab Ilyas if you are interested in this URA opporunity.
Please visit Ihab Ilyas's website.
Title: Scala with Explicit Nulls
The Scala programming language combines the functional and object oriented styles of programming. Because of its easy Java interoperability and sophisticated type system, Scala has seen widespread use both in industry as well as in academic research.
In this project, we're improving the Scala type system so that it can track which program variables can be null. This is important because nullness is, from a practical perspective, a common source of runtime errors and, from a theoretical perspective, a cause of unsoundness in Scala's type system.
More specifically, we're using union types within the Dotty research compiler (https://dotty.epfl.ch/) to track nullability.
We plan on upstreaming our changes to the compiler so they become part of Scala 3. Project details can be found at https://github.com/abeln/dotty/wiki/scala-with-explicit-nulls
If you're interested in compilers, type systems, and programming languages, this would be a great project at the intersection of theory and practice, with lots of potential for impact.
Please contact Ondřej Lhoták at firstname.lastname@example.org
Title: Digital Watermarking of Machine Learning Models
Digital watermarks are secret messages embedded into cover data, such that only a secret key holder can retrieve the message. Digital watermarks can be used to prove ownership of the cover data, e.g., by embedding a message "This model belongs to the University of Waterloo". Digital watermarks are supposed to be imperceptible, i.e. an adversary with access to the modified cover data should not be able to tell whether a message was embedded, and robust, i.e., an adversary should not be able to remove the watermark from the modified cover data without destroying the utility of the cover data. In this work we aim to embed messages in machine learning models, such as neural networks. We investigate a) new attacks to detect or remove watermarks from existing algorithms, b) new watermarking algorithms that can withstand those attacks.
An ideal candidate has some experience with programming machine learning models. Good knowledge of statistics is helpful. You will learn how to run systematic experiments to evaluate security attacks. If you are interested, please email Florian Kerschbaum at: email@example.com with a resume and an unofficial transcript.
Title: Expressive Human-Computer Interaction
The Exii research group led by Prof. Daniel Vogel does all kinds of exciting Human-Computer Interaction research on different input and interaction technologies. Everything from pen based computing, touchscreens, and mobile devices, to large displays, virtual reality, augmented reality, and spatial augmented reality. We typically build our prototypes using tools like 3D game engines (mostly Unity), web development, or the Processing language. Our projects often leverage a range of techniques and technologies like computer graphics (hit testing algorithms, transforms, rendering), applied computer vision (mostly OpenCV), applied statistics (usually in Jupyter Notebook with a mix of Python, Pandas, and R), 3D fabrication (3D printing, physical mockups), electronics prototyping (usually Arduino based), applied machine learning (e.g. deep learning, classifiers like SVM), and motion tracking (Vicon or AR markers). A single project typically uses only a subset of these, and we don’t expect URAs to necessarily have these skills already. This is a great opportunity to learn new techniques and technologies while you work on cutting edge Human-Computer Interaction research.
Interested students should view a list of current projects and submit an application:
Title: Intelligent Connectivity for the Internet-of-Things
Although interest in connected devices has surged in recent years, barriers still remain in realizing the dream of the Internet of Things (IoT). The main challenge in delivering the IoT systems stems from a huge diversity in their energy, scalability, and data-rate constraints. The ICON lab at the Cheriton School of Computer Science is conducting research to address these challenges. The student will do research on designing new connectivity and sensing systems for virtual reality and smart home applications.
We are looking for students with one or multiple of the following skills:
- Experience with C/C++ programming, and interests in designing systems
- Familiarity with Micro-Controller, Raspberry Pi or FPGA programming
- Hardware design (familiarity with PCB design would be a plus)
- Research experience in wireless networks and systems
Interested students should email Omid Abari (firstname.lastname@example.org).
Title: Solar-powered off-grid embedded computing:
We have developed a system that uses a solar panel and a battery to allow off-grid computing (details can be found here: http://blizzard.cs.uwaterloo.ca/iss4e/projectsenergy-access/ ). I am looking for a student who can (a) write scripts to diagnose faults in the system, such as shade falling on panels or battery issues and (b) come up with innovative uses for the system, such as a stand-alone Wikipedia server. Familiarity with Raspberry Pi a plus, but optional. Please send your CV and transcript to Prof. S. Keshav at email@example.com.
Title: Wrist-worn hand and finger gesture recognition study
The HCI lab at the Cheriton School of Computer Science is looking for a student interested in user study in hand and finger gesture interaction using wrist-worn sensors. The project requires excellent coding skills and some experience with hardware prototyping Additional experience with Arduino / Processing / User study is appreciated, but not necessary.
If you are interested, please email Keiko Katsuragawa at firstname.lastname@example.org.
Title: High-Performance Multi-Core Runtime Systems
The KOS project builds an experimental operating system kernel to investigate the intersection of design simplicity and performance in runtime systems. An important part of this study is carried out by building a nimble user-level threading runtime system for existing OS platforms, such as Linux and FreeBSD. Several development and evaluation activities are suitable for URAs in the context of this project, such as support for dynamic stack sizing, or fine-tuning the performance of synchronization operations. A URA candidate should be interested in system-level software and runtime internals, have experience with C/C++ programming, and be familiar with the POSIX system call interface.
If you are interested, please email Martin Karsten at: email@example.com.
Title: Learning Novel Techniques in Multi-touch Systems
Mobile computing devices like smartphones, watches and tablets have become ubiquitous, and for many users, represent their most commonly used devices. In an era where we utilize touch-screens more than keyboards, how do we make these systems easier to use and more efficient? The HCI lab in the Cheriton School of Computer Science is conducting research on how users learn and apply novel input techniques on mobile devices. The project requires some coding skills (Java/Android) and interest in conducting a user study to collect and analyze interaction data.
Interested students should contact: Jeff Avery (firstname.lastname@example.org)
Title: Cloud and Distributed Big Data Systems
If you are a senior undergraduate student interested in working with large scale distributed systems that involve managing big data and storage in the cloud to achieve scalability and deliver good performance, please e-mail Khuzaima Daudjee at: kdaudjee AT uwaterloo.ca
Title: Android Traffic Interception with PrivacyGuard
PrivacyGuard is an Android app that intercepts the traffic of all apps on a smartphone without requiring root access. By intercepting traffic, PrivacyGuard can provide useful features, such as notifying the user when an app leaks sensitive information (https://github.com/cryspuwaterloo/privacyguard). The goal of this URA is to add new features to PrivacyGuard.
Typically URAs involving PrivacyGuard consist of two parts: First, the student addresses some limitations of PrivacyGuard to become familiar with the code base. Second, the student, in collaboration with the supervisor, designs and develops a new feature for PrivacyGuard.
Android development experience is required. CS 350 or CS 456 would be useful.
Interested students should contact Urs Hengartner: email@example.com
Title: Enhancing a Main-Memory DBMS
We are looking for up to three students to fill URA positions to work on a main-memory database management system. The system is mainly coded in common lisp, but also has components written in C, Bison, Flex and csh. It is a "compiling" DBMS that has a simple extensible runtime and operates by translating SQL-like data manipulation requests directly to C code that interfaces with this runtime. The underlying data model is a generalization of the relational data model in which, among other things, arbitrary inheritance hierarchies may be declared.
During the course of the project, students will increase their familiarity with a range of topics, among which: semantic data modelling, query optimization, A* search, transaction compilation, legacy data integration, rule-based translation and source code synthesis.
Ideal applicants will have a solid background in algorithms and data structures, and a particular interest in program translation. Experience with programming in a functional style would also be an asset.
Interested students should contact Grant Weddell firstname.lastname@example.org
For more information, please contact:
Office: MC 4016
Phone: (519) 888-4567 ext. 32753