Undergraduate Research Assistantship (URA) program

students working on computer

The Undergraduate Research Assistantship program is a 10-week part-time opportunity for exceptional undergraduate students curious about research during a study term in CS. The URA is an excellent option to prepare a student interested in pursuing full-time research during a co-op term or graduate studies in the future.

Application deadlines

Please note: We will not accept applications past the deadline.
Term Deadline
Winter 2025 TBD
Spring 2024 Friday, May 31, 2024 (Closed)
Fall 2024 Monday, September 30, 2024 (Closed until August)

Questions?

Interested students with questions should first refer to the Research awards FAQ for more information. 

If you have difficulties regarding the applications forms or any parts of the URA process not listed here or on the FAQ, please contact Daniel Huab.

Compensation

As of Fall 2024, URA recipients will receive a minimum of $1,100 / term:

  • The supervisor’s contribution: $650 (minimum)
  • The value of the school top-up: $450

President's Research Award (PRA)

Students who intend to claim the President's Research Award ($1500) for a URA research experience are not entitled to receive any of the CS URA payment ($1100) for the same research experience.

Upon completing the CS URA Application Form you will be prompted to complete the PRA Application.

For more information regarding the President's Research Award please contact Student Awards and Financial Aid directly.

Eligibility

  • Must be enrolled in a program in the Faculty of Mathematics. Preference is given to students enrolled in Computer Science major plans.
  • Must have completed the second year of study (i.e. term of 3A or higher)
  • Must have a cumulative average (CAV) of at least 80%
  • A student can only do one URA per term.
  • A student cannot be on a co-op term while doing a URA.

Students who do not meet the URA eligibility criteria (e.g. not 3A, less than 80 CAV) 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 $1100 for the research term unless the student is claiming a PRA.

International students must have a valid SIN to work in Canada. Please refer to the Student Success Office for more information on applying for a SIN.

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 page.

How to apply

Check eligibility stated above. Make sure you are eligible before taking the following steps.

  1. 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.
  2. Complete the Student Application form
  3. Your supervisor must then complete the Supervisor Application Form

Both the CS URA Student and Supervisor Application Forms must be submitted to receive your URA payment. Upon completing the webforms, you and your supervisor should receive email confirmations containing copies of each forms' responses.

URA supervisor list

Students may contact the faculty members here to see if they have projects that are not listed here but may be interested in supervising a URA for the upcoming term. The following faculty members have confirmed that they are willing to be contacted by potential URA students. 

URA supervisors

Professor Research areas/topics
Omid Abari Internet of Things, Intelligent Connectivity, Ubiquitous Sensing, Wireless Networks, Software-Hardware Systems, Virtual Reality, Smart City 
N. Asokan Systems security

Gladimir Baranoski

Predictive simulation of light and matter interactions aiming at theoretical and practical applications in realistic image synthesis, biophotonics, biomedical optics and remote sensing

Diogo Barradas Network security, privacy enhancing technologies, internet censorship, digital forensics
Christopher Batty Scientific Computing, Graphics, Physics simulation: liquids, smoke, deformables, etc.
Raouf Boutaba Management of networks, systems and services, network virtualization, software-defined networking, Internet of Things, 5G and beyond mobile networks, network security
Peter Buhr C∀ (Cforall) Programming Language and Runtime System
Khuzaima Daudjee Cloud and Big Data Systems
Nancy Day Formal methods, logic, software engineering, software modelling, state diagrams, requirements, specification
Sergey Gorbunov Cryptography, security, blockchains and distributed systems
Roberto Guglielmi Applied mathematics
Xi He Privacy and security for big data management and analysis
Urs Hengartner Security and privacy for smartphones and mobile apps
Jesse Hoey Affective Computing, Health Informatics, Artificial Intelligence
Lesley Istead Computer graphics, image processing, film; natural language processing, machine learning
Craig Kaplan Procedural modelling, 2D computer graphics, ornamental design, Tiling theory and geometry
Martin Karsten Operating Systems, System Software, Networking
Florian Kerschbaum Data science, security, privacy 
Edith Law Human-AI Interaction, Technology for Fostering Human Values
Jimmy Lin Big data, information retrieval, databases
Sihang Liu Computer Systems, Computer Architecture, and Storage Systems
Anna Lubiw Computational geometry, graph drawing, graph algorithms, and combinatorial optimization
Sujaya Maiyya Data privacy, databases, distributed systems
Stephen Mann Graphics, curves and surfaces
Ali Mashtizadeh Operating systems, distributed systems, storage, architecture, compliers
Mei Nagappan Software Engineering: Mining Software Repositories, Mobile App Market Analytics, Software Bots
Naomi Nishimura Graph algorithms, fixed-parameter tractability, combinatorial reconfiguration
Pascal Poupart Machine Learning, Artificial Intelligence, Health Informatics
Gregor Richards Programming languages, dynamic languages, JavaScript, JIT, gradual typing
Ken Salem Databases, distributed systems, cloud computing
Shlomi Steinberg

Rendering, computational optics, computer graphics

Chengnian Sun Software testing: program reduction, automated Android app testing, compiler testing
Mina Tahmasbi Arashloo Networked systems, with a focus on software defined networking (SDN), programmable data planes
Justin Wan Scientific computing, computational finance, medical imaging, physics-based simulation
Stephen Watt Algorithms and systems for computer algebra, programming languages and compilers, mathematical handwriting recognition and document analysis
Grant Weddell Database technology for precompiled real-time application
Meng Xu Software Security via Automated Program Analysis and Testing
Hong Zhang Large-scale Data Analytics, Machine Learning Systems, Application and Network Scheduling, Serverless & Cloud Computing
Hongyang Zhang Machine learning, AI security, and trustworthy ML
Yizhou Zhang

Programming languages: designing and implementing new languages, probabilistic programming and intelligence, proof assistants

Jian Zhao Information Visualization, Human-Computer Interaction, Data Science

URA project list

Below you will find a list of research projects that faculty members are actively seeking URA students for the upcoming term. For your convenience, the projects are grouped by the project supervisor's research area

Students are encouraged to browse through all of the projects, even if it seems like you don't have the right background. There are many projects that benefit from a wide range of experiences or a genuine sense of curiosity from its URA students.

If you are a supervisor who would like to add/remove a research project from this list or would like to have it featured in a different research area, please notify Daniel Huab.

Algorithms and complexity research projects

Analysis and Implementation of Network Algorithms and Protocols - Mina Tahmasbi Arashloo

Computer networks have grown into a massive, shared infrastructure, connecting millions of users to thousands of online services. To support all these users and services, networks rely on a multitude of algorithms and protocols, e.g., for packet scheduling, congestion control, routing, load balancing. Together, these algorithms and protocols determine the quality of service that a network can provide to traffic flows for different applications in the network.

Understanding how different algorithms and protocols and their combinations affect network performance, finding the right set of algorithms and protocols given the specific requirements of the applications using the network, and creating robust and efficient frameworks for deploying them in the network are important open problems. We are looking for URAs to help us make progress on these problems by studying, analyzing, implementing, and experimenting with some of the most influential existing networking algorithms and protocols. Prior experience in systems-oriented courses such as Operating Systems and Computer Networks is a plus.

If you are interested, please fill out the Google Form at the following link: https://forms.gle/jvtgp7BdkaVFh3o39

Reformulate the IESO's algorithm - Robert Guglielmi

The objective of this project is to reformulate the IESO’s algorithm to balance supply and demand based on societal gain. Societal gain as defined by this project is the cumulative difference between the carbon intensity (kg CO2e/MWh) consumers are willing to accept for the electricity consumed and that at which generators can produce that electricity. The solution to the reformulated optimization problem will present a different mix of generators and allow the calculation of an implied carbon tax required to achieve the least carbon intensive solution. Another objective of the project is to perform a sensitivity analysis by constraining the solution to varying maximum electricity prices.

The role for the URA student in this project is to take a leading role in the development of the code for the reformulated algorithm. The URA student will work directly with the involved graduate student and supervisor, and will be expected to perform independent research on the IESO market rules. The URA student’s efforts will contribute to the involved graduate student’s thesis.

The student would ideally have a background in CS, or in other programs with a focus on computational skills. The student is expected to master either Matlab or Python, and their optimization packages. The student is expected to be able to work independently and as part of a team. They must be highly motivated, goal-oriented, comfortable with high degree of freedom in their daily work and have excellent written and oral communication skills. The student is expected to have an interest in power grids and utility distribution, or to be willing to learn about them.

If interested, please email Robert Guglielmi.

Efficient computation of generators of special invariant rings - Rafael Oliveira

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).

If interested, please send your resume and transcript to Rafael Oliveira (rafael@uwaterloo.ca)

Lower bounds for Locally Correctable Codes over fields of characteristic zero - Rafael Oliveira

Error correcting codes are ubiquitous in computer science, both in theory and in practice. In recent years there has been growing interest in constructing error correcting codes which have local properties, as these codes can be used to safely store large amounts of data, while enabling users to efficiently recover small amounts of data without querying the entire codeword. Despite much progress made in the construction of error correcting codes with high rate and distance, many challenges still remain on whether such powerful codes exist with the additional local properties mentioned above.

The goal of this project is to prove that error correcting codes which have the ability of being locally corrected cannot have high rate and distance, when the base field is of characteristic zero.

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 PMATH 347),
  • coding theory
  • quantum information theory
  • experience with writing rigorous proofs

If interested, please send your resume and transcript to Rafael Oliveira (rafael@uwaterloo.ca)

Artificial intelligence and machine learning research projects

Model Serving Systems for LLMs - Hong Zhang

We are witnessing an explosion of large language models (LLMs). The latest models such as GPT-4 have achieved unprecedented performance in various tasks such as code generation, text classification, and problem reasoning. However, serving LLM-based applications, i.e., deploying trained LLMs on a compute cluster and conducting model inference for incoming user requests, presents challenges in system design. GPT-4, for example, can take seconds to tens of seconds to generate responses, causing suboptimal user experiences for many interactive applications. Second, serving LLMs requires expensive hardware accelerators (e.g., GPUs) and results in high resource consumption. For instance, ChatGPT is estimated to cost over $700,000 per day to operate. Moreover, scaling LLM-based applications to meet the demands of large user bases can be challenging. Deploying the current ChatGPT model to power every Google search would require a cluster of over four million A100 GPUs. To address these problems, this project aims to design an LLM serving system with high utilization, low latency, and good scalability.

Interested students are expected to have programming capabilities (C, C++, and Python) and systems background (e.g., CS 350). Familiarity with LLM structures (or other ML models), and programming capabilities with TensorFlow or PyTorch can be a plus. For more information, please contact honzhang@uwaterloo.ca with your CV/resume.

Security and Privacy of Machine Learning - Hongyang Zhang

I am interested in working with (multiple) undergraduate students on the topic related to security of machine learning. Students will implement a brand-new idea to conduct training/test-time defenses and attacks of machine learning, such as adversarial attack, backdoor attack, watermarking, poisoned attack, etc.

Working with team members and me, the aim is to publish a paper in a top ML or security conference. Students with combined machine learning and security/cryptograph/encryption backgrounds are highly encouraged to contact me and apply.

Excellent students will get my strong recommendation letter and the opportunity of joining my research team for MMath and Ph.D. study. There might be weekly discussions.

Prerequisites: Experience with Python and PyTorch. Received a high grade in CS480/680. Basic understanding about AI security.

For more information, please contact Professor Hongyang Zhang at: hongyang.zhang@uwaterloo.ca.

Data-driven Security and Reliability in 5G Networks - Raouf Boutaba

This project focuses on data-driven approaches to secure 5G network services (i.e., eMBB, mMTC and URLLC). In this project, the URAs will be tasked to generate realistic datasets for benign 5G traffic and varying attack scenarios that could lead to compromised 5G services. The datasets generation will be carried out in our emulated and/or in-lab 5G testbed environment. The URAs will also leverage generative adversarial networks to up-scale the datasets, while ensuring that the statistical distribution of the generated datasets is preserved. Furthermore, the URAs will explore machine/deep learning techniques for early detection of attacks, including zero-day attacks, on 5G services using the generated datasets.

Interested students should contact Raouf Boutaba at: rboutaba@uwaterloo.ca with an unofficial transcript and a resume.

xApp implementation for 5G Open RAN control - Raouf Boutaba

In mobile networks, radio access networks (RANs) have been traditionally deployed in vendor-specific and closed architectures. This makes it difficult to manage and control the network and integrate new services. To address these, Open RAN, a service-oriented software-based architecture has been proposed based on the softwarization of different RAN elements. Open RAN introduces the radio intelligence controller (RIC), a centralized abstraction that allows for enhancing traditional RAN functions with intelligent closed-loop control powered by machine learning (ML). To this end, customized RAN control applications (called xApps) are deployed on RIC and communicate with RAN components to manage different aspects of the network including the radio resource allocation. The student is expected to study existing open-source RIC frameworks and contribute to the development of xApps and ML algorithms for RAN control. The student will also have the chance to integrate and test xApps with our in-lab 5G testbed.

Interested students should contact Raouf Boutaba at: rboutaba@uwaterloo.ca with an unofficial transcript and a resume.

Machine Learning Approach to Numerical Computation - Justin Wan

Machine learning has become a powerful tool for solving application problems such as computer vision, NLP, medical diagnosis and finance. Recently, it has also been used for solving complex equations that arise in graphic simulations, science and engineering. This project will explore machine learning techniques in numerical computation. The role of the undergrad student will include studying of research papers, implementation of numerical methods, and coding. Background in CS 370 (or equivalent) and/or ML is desirable.

My research team embraces the values of equity, anti-racism, and inclusion. Student applicants who have been historically disadvantaged and marginalized, including those who identify as Indigenous peoples (e.g., First Nations, Métis, Inuit/Inuk), Black, racialized, people with disabilities, women and/or 2SLGBTQ+, are encouraged to apply for this position.

Interested students should contact Justin Wan: Justin.wan@uwaterloo.ca

Machine Learning for IoT applications - Omid Abari

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

Computer algebra and symbolic computation research projects

Symbolic Execution for a Smart Contract Language - Meng Xu

Symbolic execution is an automated way of finding and exploiting vulnerabilities in a program. This technique seems particularly suitable for smart contracts, which are small in code size and simple in semantics.

In this project, we seek to implement a prototype symbolic executor for the Move language. The high-level workflow is:
1. Given a seed test (e.g., a script in Move),
2. Execute the script, collect path constraints, and measure how many paths are not covered in the Move modules
3. If there are uncovered paths, try to generate a new test that toggles an if-else condition
4. Repeat the above process until there is no more paths that can be explored based on the setup and structure of the given seed test.

Once the prototype is ready, we might want to work on more advanced topics such as handling loops and cross-module symbolic execution.

Interested students should contact Prof. Meng Xu at: meng.xu.cs@uwaterloo.ca

Computer graphics research projects

Rendering and Wave Simulations - Shlomi Steinberg

Simulations of complex wave phenomena brings together fascinating topics in physics and computer science. Such simulations have many diverse applications: like simulation of electromagnetic radiation, for example for propagation of RADAR or cellular signals in real-world environments; simulations of optical medical devices; as well as accurate light transport and rendering in computer graphics.

This project involves research and development of relevant tools, implementing simulation software (like path tracers), and performance analysis of algorithms or methods. Students are expected to have strong programming skills, and ideally some knowledge of computer graphics (e.g., CS488), optics or electrodynamics. Interested students should contact Shlomi Steinberg (steinberg@uwaterloo.ca).

Climate Change Effects on Snow & Vegetation Interactions - Gladimir Baranoski

In this project, a student will assist our research group to collect fundamental data and scientific information for our ongoing research on variations of light transmission through snow elicited by climate changes, and their impact on the vegetation cover of boreal and alpine regions. Moreover, the student will also conduct computer simulations related to this research using the online version of our spectral light transport model for snow.

Interested students should have experience with data processing and plotting in Matlab. For more information, please contact Prof. Gladimir Baranoski at:gvgbaran@gmail.com

Hyperspectral Data Acquisition for Light Transport Simulations - Gladimir Baranoski

It is a well-known fact that a well-designed light transport model is of little use without reliable supporting datasets. These include biophysical data (e.g., refractive indices and absorption coefficients) and specimen characterization data (e.g., thickness and pigment concentrations) to be used as input, as well as evaluation data (e.g., reflectance and transmittance curves) to be used in the assessment of its predictive capabilities. Although one may assume that such datasets are readily available, especially for ubiquitous materials such as plants, human tissues and soils, in reality this is not case. In fact, a common constraint shared by all these datasets is scarcity. Oftentimes, the search for such datasets becomes the bottleneck of research projects. The Natural Phenomena Simulation Group (NPSG) is looking for undergraduate students interested in acquiring hands on experience on this important aspect of scientific research and in contributing to some of our projects, which include, for example, the detection and analysis of subsurface targets in terrestrial and extraterrestrial terrains and the screening of medical conditions.

Interested students should be familiar with fundamental numerical analysis concepts and have experience in using Matlab. Experience with applied optics and computer graphics will be taken into account, but it is not required.

Interested students should contact Prof. Gladimir Baranoski at: gvgbaran@gmail.com

Cryptography, security, and privacy (CrySP) research projects

Computation Over Encrypted Data - Florian Kerschbaum

Cryptography can protect data in rest and during transit. However, keeping data encrypted during computation is still often too inefficient. There exist cryptographic techniques such as homomorphic encryption and secure multi-party computation but they require careful application in order to be practically efficient. We work on several projects that apply these techniques, such that the computational overhead is reduced, e.g., by performing some computations on plaintext data, combining different cryptographic primitives or optimizing the protocols to reduce the performance bottleneck, e.g., communication cost. We focus on applications for big data, such as private set intersection, private information retrieval or private inference over data models, because these applications are already deployed in industry. We build cryptographic protocols using different toolkits and libraries, such as Microsoft's SEAL or MP-SPDZ, which are usually written in C++.

If you are interested in this URA, please email Florian Kerschbaum (florian.kerschbaum@uwaterloo.ca) with an unofficial transcript and a resume.

Security and Privacy in Machine Learning - Florian Kerschbaum

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.

Data systems research projects

Fast Matrix Multiplication for Database Query Processing - Xiao Hu

I am interested in working with undergraduate students on a research project that aims to apply fast matrix multiplication techniques to speed up the processing of database analytical queries. This research has practical applications in social network analysis, statistical inference, visualization, graph mining, and machine learning over relational data.  Students will be able to learn about the latest breakthroughs in fast matrix multiplication for query processing from the theoretical aspects and develop efficient algorithms that can be implemented in practical database systems. 

I am looking for self-motivated students with strong programming capabilities (C, C++, and Python) and basic knowledge of algorithm design. For more information, please contact xiaohu@uwaterloo.ca with your transcript and CV/resume.  
 

A Dashboard for an Internet Censorship Observatory - Diogo Barradas

ICLab is a global and longitudinal Internet censorship measurement platform that collects data on censored webpages around the world since 2016. ICLab makes use of commercial VPNs as vantage points on multiple countries to detect censorship activity based on DNS manipulation, TCP packet injection, and the serving of “blockpages”.

Currently, however, ICLab is only able to archive raw measurement data for posterior analysis and lacks the ability to provide non-technical users with a data visualization dashboard that facilitates an easy exploration of the platform’s measurements as new data is collected.

The goal of this project is to design and develop an ICLab visualization dashboard, based on web technologies, that enables a user-friendly exploration ICLab measurement data (e.g., at a country and measurement type granularity).

Interested students should have practical experience with information visualization technologies (e.g. React-D3, Plotly Dash, etc.) and relational databases (SQL). For more information, please contact Prof. Diogo Barradas at dbarrada@uwaterloo.ca and send an unofficial transcript and a resume.

Cloud and Distributed Big Data Systems - Khuzaima Daudjee

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

Building privacy-preserving data systems - Sujaya Maiyya

Data privacy is becoming one of the major challenges of the tech industry. With many applications outsourcing their data storage needs to third party cloud vendors such as Amazon AWS or Google Cloud Platform, the lack of trust in third party storage services aggravates the privacy challenges. While encrypting an end user's data forms the first layer of protection against the loss of data privacy, many recent attacks have shown that the access patterns on encrypted data reveal sensitive information. For example, the duration and frequency with which an oncologist accesses (encrypted) data can reveal the type of a patient’s cancer (e.g., based on the frequency and intervals of chemotherapy treatments). In this project, we will explore efficient techniques to hide the data access patterns from an adversary and integrate these techniques in building a privacy-preserving datastore.

A URA candidate would begin the project by reading the necessary background research papers, will be actively involved in research meetings, and will be involved in implementing the newly designed data system

If interested, please email Sujaya Maiyya at: smaiyya@uwaterloo.ca

Flexible, lightweight extensible scalable code query analysis - Omid Abari

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 graph database for further analysis and visualization of analysis results. As such, the project includes work on (1) parsers (e.g., Clang) to extract from the AST "facts" about the parsed artefact, (2) experimenting with a graph database, queries, and strategies to optimize queries, (3) implementing and evaluating ways of visualizing analysis results. The ideal background is someone who has experience and interest in working with parsers or advanced databases or information visualization (e.g., REACT, D3).

If you are interested, please email Jo Atlee at jmatlee@uwaterloo.ca

Enhancing a Main-Memory DBMS - Grant Weddell

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

Human computer interaction (HCI) research projects

Intelligent and Interactive Visualization Techniques - Jian Zhao

This URA project will be related to the design, development, and evaluation of interactive visualizations that facilitate human-data and human-AI interaction. An idea candidate should be comfortable in full-stack development (e.g., JavaScript, NodeJS, React, D3.js, Boostrap), data analytics (e.g., Python, numpy, scipy, pandas), and machine learning (e.g., tensorflow, pytorch, LLMs). 

Interested students should view a list of current and past projects on Prof. Jian Zhao’s webpage and submit an application online.

Front end for a digital greenhouse application - Omid Abari

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

Wrist-worn hand and finger gesture recognition study - Keiko Katsuragawa

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.

Programming languages research projects

A Compiler for Probabilistic Programs - Yizhou Zhang

Probabilistic programming languages (PPLs) are powerful means for expressing probabilistic models and performing inference on them. We are working on the design and implementation of a new PPL to tackle the challenge of scalable probabilistic inference through an innovative compiler framework. This research synthesizes important ideas from compilers, statistics, combinatorics, and artificial intelligence, with a wide range of real-world applications.

The student should have experience writing compilers, a solid understanding of probability and statistics, and strong programming skills.

Interested, competent students can reach out to Yizhou Zhang at yizhou.zhang@uwaterloo.ca.
 

Building Certified Compilers with a Proof Assistant - Yizhou Zhang

It is imperative that compilers be correct; compiler bugs invalidate application-level correctness guarantees. In this project, the student will use the Coq proof assistant to certify the correctness of compilers for a family of C-like languages.

The student should have prior experiences with compilers and proof assistants. The student should be able to quickly learn and adapt to mechanizing proofs similar to those in CompCert.

To join the project, reach out to Yizhou Zhang at yizhou@uwaterloo.ca with your unofficial transcript and resume.

Writing a Compiler for the Familia Programming Language - Yizhou Zhang

Familia is a language design that promises a lot of polymorphism and extensibility in a lightweight, type-safe package. This project is aimed at materializing all this expressive power by creating a compiler for Familia. In particular, students will implement compiler passes transforming Familia code into lower-level languages.

We are seeking ambitious students who have compiler-hacking experiences and, ideally, are familiar with LLVM.

Interested students should contact Yizhou Zhang: yizhou.zhang@uwaterloo.ca

C∀ (Cforall) Programming Language and Runtime System - Peter Buhr

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. Hence, interested students need some programming-language/systems background, for example, have taken one of CS350, CS343, CS442, CS444, or learned the equivalent material from some other place, like a work term or project involvement.

If you are interested, please email Peter Buhr at: pabuhr@uwaterloo.ca

Software engineering research projects

Carbon Emission Mitigation for Datacenter Applications - Sihang Liu

The rapid growth of datacenters, driven by the increasing demand for AI/ML applications, has led to significant energy consumption and severe carbon emission issues. Consequently, there is an urgent need to incorporate carbon awareness into data center design and applications. The carbon footprint of datacenter applications is variable, depending on the energy sources powering the data centers and the hardware platforms executing the workloads. This project aims to reduce the carbon footprint of data center applications by optimizing datacenter applications to match the most suitable hardware platforms and making them better utilize green energy sources. 

We are looking for self-motivated students with strong programming capabilities (C++ and Python), ML backgrounds, and experience with distributed systems. For more information, please contact sihangliu@uwaterloo.ca, and send an unofficial transcript and your CV/resume.  

Hardware Support for Large-scale ML Applications - Sihang Liu

Recent advancements in ML techniques, such as large-language models (LLMs), revolutionized natural language processing and understanding. At the same time, these large-scale ML applications pose new challenges. One of the main aspects is the demand for computation capabilities. For example, serving LLM costs more than ten times as compared to conventional web search. This URA project aims to improve the performance of large-scale ML applications through hardware support, such as designing accelerators for ML applications and optimizing their memory systems.

Interested students are expected to have programming capabilities (C, C++, and Python) and computer hardware and systems background (e.g., CS 350 and 450). For more information, please contact sihangliu@uwaterloo.ca, and send an unofficial transcript and your CV/resume.

Systems and networking research projects

Cloud and Distributed Big Data Systems - Khuzaima Daudjee

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

High-Performance User-level Threading - Martin Karsten

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.

What does WiFi networks reveal about our life? - Omid Abari

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

IoT networks for Digital Twins - Omid Abari

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

Intelligent Connectivity for the Internet-of-Things - Omid Abari

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.