[Updated 03/27/2021]
The Cheriton School of Computer Science offers enrichment opportunities to exceptional students through the Undergraduate Research Assistantships (URA) program to earn a minimum of $1000 a term for part-time research with a faculty member.
Students who meet the URA eligibility criteria and are accepted by the URA program will receive a $400 top-up from the School of Computer Science. Supervisors of eligible students must therefore contribute a minimum of $600 for the term.
Students who do not meet the URA eligibility criteria may still undertake a URA at a supervisor's discretion but will not receive the School top-up. Supervisors of non-eligible students must contribute a minimum of $1000 for the term.
Application deadlines per term
- Winter applications — TBC
- Spring applications — Tuesday June 1st 2021
- Fall applications — TBC
We will not accept applications past the deadline.
Eligibility
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.
Note
- International Students need an SIN # to work in Canada
Please refer to the Student Success Office for this information:
https://uwaterloo.ca/international-students/social-insurance-number
- Engineering Students need to follow Engineering URA procedures
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
President's Research Award
Please note that if you have a President's Research Award it will be in addition to the $1000 for the term. It can not be used in lieu of salary.
For more information regarding the President's Research Award please contact Carolyn Sedore (carolyn.sedore@uwaterloo.ca) directly.
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 Application Form
- Complete the URA Application Form (PDF)
- Email the form to Marcia Taylor, marcia.taylor@uwaterloo.ca. The Spring 2021 deadline is Tuesday June 1st.
The URA Application Form must be fully completed and submitted to receive your URA payment.
A faculty member must sign and fill out the account number on the URA Application Form.
URA supervisors
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: Front end for a digital greenhouse application
At Intelligent Connectivity lab (ICON Lab), we have developed a system that uses battery-free sensors to monitor the moisture level of plants in a greenhouse. Our sensors are already deployed in a greenhouse in Ontario. Our technology enables greenhouses to maintain suitable moisture levels not only to improve plant productivity and quality but also to save up to 25% of irrigation water. We are looking for a URA who can build a browser-based front end to this system that would allow a greenhouse manager to monitor the greenhouse in real-time and water the plants only when it is required.
Prerequisites: Familiarity with front-end design. Familiarity with Rasberry Pi and Azure IoT platform is a plus.
Interested students should contact Professor Omid Abari: omid.abari@uwaterloo.ca
Title: Machine Learning for IoT applications
At Intelligent Connectivity lab (ICON Lab), we are looking for URAs who are interested in working at the intersection of ML and IoT. Past research performed by ICON lab’s URAs have resulted publications in the best conferences, giving them opportunities to join grad schools in top universities.
Prerequisites: Experience with Python. Familiarity with Tenserflow, PyTorch or Keras is a plus.
Interested students should contact Professor Omid Abari: omid.abari@uwaterloo.ca
Title: What does WiFi networks reveal about our life?
At Intelligent Connectivity lab (ICON Lab), we are looking for URAs who are interested in doing research on WiFi networks. In this project, we are interested to learn what we can learn about our life style from the patterns of WiFi packets. Past research performed by ICON lab’s URAs have resulted publications in the best conferences, giving them opportunities to join grad schools in top schools.
Prerequisites: Experience with C and Python programming. Interests in designing systems. Familiarity with WiFi and wireless networks is a plus.
Interested students should contact Professor Omid Abari: omid.abari@uwaterloo.ca
Title: IoT networks for Digital Twins
A digital twin is a digital replica of any physical entity. To achieve digital twin vision, we require to enable internet connectivity to billions of things. At intelligent Connectivity lab (ICON Lab), we are developing new wireless technology to enable this vision. We looking for URAs who are interested in working with hardware and designing new type of hardware. Past research performed by ICON lab’s URAs have resulted publications in the best conferences, giving them opportunities to join grad schools in top schools.
Prerequisites: Experience with RF and PCB design. Familiarity with wireless systems is a plus.
Interested students should contact Professor Omid Abari: omid.abari@uwaterloo.ca
Title: Flescqa - scalable lightweight analysis of large software systems
Flescqa is a project that aims to provide scalable lightweight analysis of large software systems. Information about software are extracted from different artifacts (e.g., source code, build code, models) and are stored in a Neo4J graph database for further processing. Neo4J’s native query language, Cypher, supports interesting queries over software data, and is generally easy to use and generally scales well over this data. However, there are some queries (e.g., path-dependent queries) that require care to avoid performance blow-up in cases where the query requires an infeasibly large number of intermediate paths.
We are looking for a URA who is interested in advanced databases, query languages, declarative languages, and software analysis to explore query patterns or a general methodology for executing arbitrary path-dependent graph queries at scale. Advanced work would include performance analysis or implementing this methodology as a Cypher-based evaluator for a declarative language (e.g Datalog).
If you are interested, please email Jo Atlee at jmatlee@uwaterloo.ca
Title: Privacy preserving crowd-sensing
Modern smartphones have high-resolution sensors such as cameras and LIDAR, as well as neural accelerators that allow for data to be processed on-device to extract relevant features, such as the presence and class of objects within an image. We are studying the potential for smartphones to be used for answering queries on the state of the world, as an on-demand crowdsensing service.
We are looking for a student to continue developing an Android app that incorporates these ideas, focusing on the inference of on-device data using MLKit (https://developers.google.com/ml-kit), and data privacy.
Prerequisites: prior experience with Android.
Interested students should email Srinivasen Keshav: sk818@cam.ac.uk
Title: Using a probabilistic programming language to model and solve machine learning tasks
Probabilistic programming languages (PPLs) are emerging as a powerful technology for model-based machine learning. This project pushes the boundaries of what is possible with probabilistic programming when combined with deep learning. In particular, students will use a PPL to express interesting machine learning problems, and use neural networks to approximate solutions to those problems.
We are looking for ambitious students with the following skills:
- Solid experience in deep learning and reinforcement learning
- Familiarity with deep learning frameworks
- Basic knowledge of probabilistic programming
- Ideally (though not required), familiarity with a probabilistic programming language such as Pyro
Interested students should email Yizhou Zhang: yizhou.zhang@uwaterloo.ca
Title: Security and Privacy in Machine Learning
More and more applications use machine learning to derive insights from large data collections. However, this process is susceptible to several security and privacy threats. For example, the data collection may contain sensitive, private information that may still be derived from the model or the learning and inference process. We work on several projects that help ensure that such threats are contained. We work on devising improved attacks that demonstrate that protection mechanisms are not as successful as they claim to be or processes that are assumed to be safe are not. We also work on defense mechanisms that provide better protection based on the latest developments in cryptography, differential privacy, and machine learning. Our work involves designing algorithms, developing prototypes, mostly in Python, and evaluating their performance and security.
If you are interested in this URA, please email Florian Kerschbaum (florian.kerschbaum@uwaterloo.ca) with an unofficial transcript and a resume.
Title: C∀ (Cforall) 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 URAs. A URA candidate should be interested in programming languages and associated runtime internals with experience in C/C++ programming.
If you are interested, please email Peter Buhr at: pabuhr@uwaterloo.ca
Title: Efficient computation of generators of special invariant rings
Since Hilbert's seminal works on invariant theory, which laid foundational results for modern commutative algebra and algebraic geometry, and Mumford's seminal work on geometric invariant theory, much progress has been made on the computational aspects of invariant theory. Despite all of the progress made in this past century, many open questions still remain on the efficient computation of a generating set (or of a separating set) of invariant polynomials. The goal of this project is to make progress in efficiently computing a generating set of invariant polynomials for special group actions, which have profound applications in fundamental theoretical problems in computer science.
The ideal URA should have a solid command of linear algebra (equivalent of MATH 245, or MATH 235), with a solid command of basic abstract algebra (such as the material from PMATH 347) and some programming experience being a plus.
Programming will be done using Macaulay (no prior experience with this language required).
Interested applicants please follow directions at https://cs.uwaterloo.ca/~r5olivei/#undergrad-research
Title: Computational complexity of polynomial identities
Polynomial identities in associative algebras have been a major object of study, as they are a natural generalization of commutative polynomial rings. While the basic structural theory of such rings is somewhat understood, the computational aspects of polynomial identities is still rudimentary. The goal of this project is to study the computational complexity of known polynomial identities and provide, through the computational lens, a systematic study and possibly new polynomial identities based on ideas from algebraic complexity theory. Another goal of this project is to use the better understanding of polynomial identities to solve open problems in non-commutative algebraic complexity theory.
The ideal URA should have a solid command of linear algebra (equivalent of MATH 245, or MATH 235), with a solid command of basic abstract algebra (such as the material from PMATH 347), combinatorics, and be fairly comfortable writing rigorous proofs.
Programming experience is a plus as experiments are part of the project.
Interested applicants please follow directions at https://cs.uwaterloo.ca/~r5olivei/#undergrad-research
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: omid.abari@uwaterloo.ca.
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 kkatsura@uwaterloo.ca.
Title: High-Performance User-level Threading
The libfibre project builds an nimble user-level threading runtime system for existing OS platforms, such as Linux and FreeBSD. The objective of the project is demonstrating the performance potential of user-level threading for highly concurrent applications. Several development and evaluation activities are suitable for URAs in the context of this project, such as fine-tuning synchronization operations, testing alternative kernel interaces, or adding auxiliary functionality. A URA candidate should be interested in system-level software and runtime internals, have experience with C/C++ programming, and be familiar with the typical POSIX system call interface. Knowledge of kernel internals would be an additional asset.
If you are interested, please email Martin Karsten at: mkarsten@uwaterloo.ca.
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@uwaterloo.ca
Title: Sharing-Aware Apps for Android
Smartphones are often shared with others. While a phone is being shared, a user should not be able to execute sensitive operations on the phone. For example, the user should be able to look at pictures in a gallery app, but should not be allowed to delete pictures. The goal of this project is to design and implement an Android library that simplifies the development of shareing-aware apps.
Android development experience is required. CS 350 would be useful.
Interested students should contact Urs Hengartner: urs.hengartner@uwaterloo.ca
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: gweddell@cs.uwaterloo.ca
Title: Interactive visualization techniques for data science
This URA project will be related to the design, development, and evaluation of interactive visualizations that support the general data science workflow: from exploratory data analysis, then to model development and interpretation, and finally to insight communication and storytelling. An idea candidate should be comfortable in web app development (e.g., JavaScript, NodeJS, JQuery, D3, Boostrap) and data analytics (e.g., Jupyter Notebook, Python, numpy, scipy, pandas, tensorflow, pytorch).
Interested students should view a list of current and past projects on Prof. Jian Zhao’s webpage: http://www.jeffjianzhao.com and submit an application: https://bit.ly/2tphwWK
Title: Semantic Mining of Mathematical Text
Extracting semantic information from natural language text is recognized as an important problem in artificial intelligence, and there are many developed techniques. The present project is to extract semantic information from mathematical text. It is the long-term goal of the “International Mathematical Knowledge Trust” to capture the mathematical knowledge represented in the complete research literature of mathematics. There are several levels of semantic information, from general keyword spotting all the way to formalizing the mathematical statements in a language such as CoQ or Lean. The present project will perform n-gram analysis on the abstracts of mathematical article reviews provided by ZB-Math.
Interested students should contact Stephen Watt: smwatt@uwaterloo.ca
Title: Deep Learning for Handwriting Feature Recognition
One successful method for recognizing handwritten characters is based on representing them as parametric curves (x(s), y(s)) where x(s) and y(s) give the x and y positions of the pen as a function of arclength. Expressing x(s) and y(s) as truncated Legendre series or Legendre-Sobolev series has proven quite successful for recognition. These series use orthogonal polynomials as the basis, rather than monomials s^k. Recognition methods using proximity of coefficient vectors has proven quite successful. The present project is to explore how accuracy can be improved by using coefficient vectors to train neural networks for recognition.
Interested students should contact Stephen Watt: smwatt@uwaterloo.ca
Title: Machine Learning of Handwriting using Chebyshev-Sobolev Approximation
One successful method for recognizing handwritten characters is based on representing them as parametric curves (x(s), y(s)) where x(s) and y(s) give the x and y positions of the pen as a function of arclength. So far, expressing x(s) and y(s) as truncated Legendre series or Legendre-Sobolev series has proven quite successful. These series use orthogonal polynomials as the basis, rather than monomials s^k. This project will be to explore whether recognition can be improved using the Chebyshev and Chebyshev-Sobolev polynomials as basis functions.
Interested students should contact Stephen Watt: smwatt@uwaterloo.ca
Title: Algorithms for Symbolic Polynomials
Computer algebra systems, such as Maple, are very good at performing algebraic operation on polynomials with terms of fixed degree, but are much weaker when exponents involve variables. A new class of algorithms work with so-called “symbolic polynomials”, which are polynomial-like objects where the exponents are themselves integer valued polynomials, e.g. x^(n^2+3n) – 5y^(2n-1). The present project will develop or enhance an existing Maple package for algorithms on symbolic polynomials, including polynomial greatest common divisors and factorizations. Experience with Maple is required.
Interested students should contact Stephen Watt: smwatt@uwaterloo.ca
Title: Handwriting Neatening
Just as face averaging can be used to produce faces that are perceived as attractive, character averaging can be used to produce attractive characters written in a user’s own distinctive style. Representing handwritten characters as a particular type of feature vector allows this averaging to be well-defined and efficient. This can allow handwriting samples to be adjusted for uniformity of size, slant, pressure, etc. The present project will involve developing a tool to mark up character samples. Experience with Typescript and Node.js will be an asset to the URA candidate, and experience with calligraphy will be a plus.
Interested students should contact Stephen Watt: smwatt@uwaterloo.ca
Title: Suggestion Systems for Handwriting Recognition
On-line handwriting recognition with tablet or phone has the advantage that it is not necessary for the system to present a unique recognition result. It is possible to present a set of best guesses and have the user accept the top result or make a correction. This means that a user’s acceptance and correction history can be used to continuously train and individualize the recognition. This project is divided in two parts: the first is to explore methods to evolve the support set of symbol samples as character suggestions are accepted and rejected. The second is to understand to what degree handwriting “styles” can be used to predict preferred forms of symbols, i.e if a writer draws one character in a certain way, can this be used to predict how they will write other characters. Experience with Typescript and Node.js will be an asset to the URA candidate.
Interested students should contact Stephen Watt: smwatt@uwaterloo.ca
Title: NAN-Boxing for Read-Free Javascript Code
Programming language interpreters, such as those for Javascript, typically allocate data objects in memory augmented with header words that describe the object type and size. This means that type testing, array bounds checks and other operations require following a pointer and reading memory. This is much slower than register-to-register operations. One technique that is used to improve performance is so-called “NAN-boxing” which encodes pointers in the “not-a-number” space of floating point numbers. This project explores the performance gains that can be made by encoding additional information with the pointer, including certain values and size information. A URA candidate should be familiar with at least one systems level programming language, such as C/C++, and working with program-managed memory.
Interested students should contact Stephen Watt: smwatt@uwaterloo.ca
Title: Learner Modelling for On-Line STEM Education
On-line education is undergoing a transformation in which the traditional “repeat until you get the quiz right” model is starting to be replaced with multiple pre-programmed paths with detours. This project will explore using machine learning techniques on quiz data to identify classes of learners with correlated learning needs. This can allow individualized coaching by the on-line instruction system, and steer students toward explanations given in terms they have shown they understand. A URA candidate should have experience with, or be willing to learn about, R or python and SVMs.
Interested students should contact Stephen Watt: smwatt@uwaterloo.ca
Title: Computer Simulation of Blood Flow
The study of the blood flow dynamics is of importance in biology and medicine as well as in computer animation. The research challenge is that blood consists of not just liquid but also other elements such as red blood cells. In this project, we want to develop advanced numerical techniques that are able to efficiently handle the interaction between the liquid and many red blood cells. The role of the undergraduate student will involve heavy coding (in python, C/C++) and running simulation on large computers.
Interested students should contact Justin Wan: justin.wan@uwaterloo.ca
Title: Efficient computation of generators of special invariant rings
Since Hilbert’s seminal works on invariant theory, which laid foundational results for modern commutative algebra and algebraic geometry, and Mumford’s seminal work on geometric invariant theory, much progress has been made on the computational aspects of invariant theory. Despite all of the progress made in this past century, many open questions still remain on the efficient computation of a generating set (or of a separating set) of invariant polynomials. The goal of this project is to make progress in efficiently computing a generating set of invariant polynomials for special group actions, which have profound applications in fundamental theoretical problems in computer science.
Prerequisites:
The ideal URA should have a solid command of:
- linear algebra (equivalent of MATH 245, or MATH 235),
- basic abstract algebra (such as the material from both PMATH 336 and PMATH 347),
- commutative algebra,
- some programming experience being a plus.
Programming will be done using Macaulay 2 (no prior experience with this language required).
Applying:
If you are interested and have the prerequisites for this project, please send the following to Rafael Olivira by email at rafael@uwaterloo.ca:
- Transcript
- Resume
Please find the original project posting by going to https://cs.uwaterloo.ca/~r5olivei/project/compute-invariants/.
Title: Music on a Whim
I’m interested in working with an undergrad over the summer to conceptualize and design a platform that enables amateur classical musicians to get together to play music in ephemeral ensembles and unusual settings. As part of this research, the URA will conduct a set of need-finding interviews with music professionals and students, then based on the findings, design and develop a prototype website. We are looking for a URA who is skilled in design, curious about people, and have some experience in classical music.
Prerequisites: HTML, CSS, Javascript, Python
Interested students should contact Professor Edith Law: edith.law@uwaterloo.ca
Title: Resolving Conflicting Interests of Machine Learning (ML) Security/Privacy
In recent years, ML-based applications have become increasingly popular. While use of ML allows for impressive performance and truly innovative products, it also exposes various attack vectors that either did not exist or were not serious threats to conventional Software-as-a-Service systems. Examples of such attacks include evasion using adversarial examples or the threat of model stealing. As a result, security and privacy of ML has been an active area of research and practice. Despite many advancements, most solutions to one problem are either challenging to integrate with others, or straight up incompatible. In this SSG@CrySP (https://crysp.uwaterloo.ca/research/SSG/) project, we aim to explore how different state-of-the-art ML security and privacy mechanisms interact, and how they can be optimally combined in deployment. Initially we plan to investigate combining differential privacy with model watermarking (and possibly adversarial training).
Prerequisites: programming in Python (in particular working with ML libraries), solid ML foundations including deep learning.
Nice to have: prior research experience, familiarity with adversarial machine learning/differential privacy/model watermarking.
Interested students should contact Professor N. Asokan: n.asokan@uwaterloo.ca
Title: Compiler-support for Hardware-based Data-flow Enforcement
Hardware-assisted trusted execution environments (TEEs) are now present in pretty much every smartphone, tablet, or personal computer. TEEs were intended to allow security/privacy-sensitive computations to take place safely on general purpose devices. As TEEs become increasingly complex the opportunity for side channels and run-time attacks increases. These attacks can leak sensitive information out of TEEs. To avoid reliance on costly hardware isolation or error-prone software-only approaches, we are developing a new instruction-set architecture (ISA) extension that uses data-flow tracking to prevent data leakage from both side channels and run-time attacks. In this SSG@CrySP (https://crysp.uwaterloo.ca/research/SSG/) project, we develop compiler support for our ISA extension. At present, we are working on frontend annotations and static data-flow analysis that will support necessary code transformations and code generation in the compiler backend. We plan to extend the RISC-V machine code generation such that it correctly handles sensitive data without violating hardware-enforced data-flow rules, e.g., by ensuring that sensitive data is written only to secure memory regions and used in only side-channel safe computations. This work is done within the LLVM compiler framework, and familiarity with and prior experience of working with LLVM is essential.
Prerequisites: Familiarity with the LLVM compiler framework, e.g., on static analysis, code transformation, and/or machine code generation.
Nice to have: prior research experience
Interested students should contact Professor N. Asokan: n.asokan@uwaterloo.ca
For more information, please contact:
Marcia Taylor, marcia.taylor@uwaterloo.ca