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 students interested in pursuing full-time research or students who are considering graduate studies.
Application deadlines
Term | Deadline |
---|---|
Winter 2025 | Friday, January 31 |
Spring 2025 | TBD |
Fall 2024 | Closed. |
Questions?
Interested students with questions should first refer to the Undergraduate research FAQ for more information on eligibility, finding supervisors, and more.
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.
Full-time research assistantships
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.
How to 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 Student Application form.
- 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
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.
Artificial intelligence and machine learning research projects
Breaking Defensive Image Watermarking - Urs Hengartner
Reports regarding the misuse of Generative AI to create deepfakes are frequent. Defensive watermarking enables Generative AI providers to hide fingerprints in their images and use the fingerprints later for deepfake detection. In our research, we have shown that for many state-of-the-art watermarking schemes, it is possible to remove fingerprints from watermarked images, which makes it much harder to detect an image as a deepfake. In this URA, you should study some additional state-of-the-art watermarking schemes and examine whether they are also vulnerable to our attack.
Interested students should have significant programming and machine learning background. Expertise with TensorFlow and PyTorch is also required. If you are interested, please email your CV and unofficial transcript to urs.hengartner@uwaterloo.ca.
Developing an app that uses DNNs for tree crown detection to support forest conservation - Srinivasan Keshav
Deep learning is revolutionising ecological remote sensing for scientists. But can this technology provide real impact in the hands of local practitioners deep in threatened rainforests?
Detectree2, a deep learning computer vision Python package, automatically maps trees from aerial (drone or aircraft) imagery. It can support conservation by identifying threatened species, mapping habitat and assessing tree health. While it is growing in popularity among the scientific community, its potential to deliver impact by supporting practitioners in the field is unrealised. We would like to combine Mask R-CNN technology and trained models into an easy-to-use app that can be used anywhere in the world to allow local practitioners and communities to collect valuable data support conservation in near real time.
Skill requirements:
- App development (android or web application)
- Experience with geospatial dataset and deep learning desirable
Selected applicants will work with Dr. James Ball, a postdoctoral research fellow at the University of Cambridge, under the guidance of Prof. S. Keshav who is a faculty member at the University of Cambridge and is an adjunct professor at UW.
Diffusion Language Models - Yuntian Deng
This project investigates diffusion-based language models as an alternative to traditional autoregressive models, which generate text sequentially from left to right. Diffusion language models employ an iterative denoising process: they start with a sequence of mask tokens and progressively replace them with appropriate words until the full sequence is generated.
The project is based on a fully developed idea from my PhD advisor, Prof. Alexander Rush, and builds upon the approach presented in Simple and Effective Masked Diffusion Language Models (PDF). Specifically, it will incorporate inter-word dependencies inspired by concepts introduced in Cascaded Text Generation with Markov Transformers (PDF). The work will involve implementing the idea and conducting experiments, with the ultimate aim of producing a publication in a machine learning or natural language processing conference.
I am looking for a motivated student with strong programming skills to collaborate on this project. I will work closely with the student. Interested students may visit my personal website or contact me via email.
Building out an Experimental Infrastructure for Human-AI Collaboration - Ana Crisan
This URA will help to develop a computational infrastructure for prompting, retrieving, and storing, responses from large language models (LLMs) and humans. Their work will support the development of a broad experimental infrastructure for examining human-AI collaboration across a variety of application contexts. An ideal candidate should be a capable full stack developer, versed in front-end (e.g., Java Script, React, Svelte, Vega-lite, etc.), back-end (PostGreSQL, Duckdb, Docker, etc.), and data analysis (Python), languages and frameworks.
Interested students should review recent projects on INSIGHT LAB webpage and contact Dr. Crisan with a statement of interest and the subject line "W25 URA applicant { student name }".
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.
Computer graphics research projects
Neighbours and surrounds of simple polyforms - Craig Kaplan
A polyform is a shape constructed by gluing together copies of some simple units, as in the glued-together squares that make up Tetris pieces. I am interested in finding shapes that tile the plane in interesting ways, by searching exhaustively over sets of polyforms and computing their tiling properties one by one. In this project I'd like to use Knuth's classic "Dancing Links" algorithm to enumerate all possible ways that a polyform can be surrounded by copies of itself, both as a useful independent tool and as a possible way to accelerate downstream tiling computations. Time permitting, there are other practical and theoretical questions I'd like to address related to a polyform's neighbours neighbours and its surrounds.
The project will involve working with heavily templated C++ code, so fluency in C++ is a must. The work is not really about core computer graphics techniques (though it often results in pretty pictures); interest in algorithms, computational geometry, and discrete math would be beneficial. Interested students may contact Craig Kaplan.
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
Dealing with Control-Flow-Integrity Violations - N Asokan
Control Flow Integrity (CFI) mechanisms provide defense for code-reuse attacks and control flow hijacking by locally detecting corruption of pointers to so-called "control data" (e.g., return addresses or function pointers) that affect the execution path of a program. While effective, most state-of-the-art approaches abort execution when a violation is detected, preventing the hijacked code from continuing. This creates a challenge in real-time systems where timely execution of tasks can be critical. Current approaches for CFI in real-time systems often prioritize either availability or security, leaving gaps in post-detection strategies to balance these trade-offs.
In this project, we will work on developing a method that simultaneously addresses the needs of availability and security during post-detection of CFI violations in real-time systems. This project requires programming knowledge (with C and Assembly). Experience in digital design (with Verilog or VHDL) is a plus. The URA will work with a postdoctoral researcher to devise a system that can isolate critical components and guarantee their availability until the vulnerability can be remediated.
If you are interested in this URA, please email N. Asokan (n.asokan@waterloo.ca) with an unofficial transcript and a resume.
Assessing the security implications of generative AI applications - Sihang Liu
Generative AI applications are becoming widely used today. Examples include large language models (LLMs) for text generation and diffusion models for image/video generation. These models are powerful but at the same time can lead to security issues. Prior work has shown that the token length in ChatGPT messages can leak the message. This project aims to explore security vulnerabilities of generative AI applications, e.g., through side-channel attacks.
We are looking for self-motivated students with security and machine learning backgrounds, and strong programming capabilities (C, C++, and Python). For more information, please contact sihangliu@uwaterloo.ca, and send an unofficial transcript and your CV/resume.
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
Human computer interaction (HCI) research projects
Interacting with visual representations of time-oriented data in augmented reality - Matthew Brehmer
This URA project will compare egocentric vs. exocentric / world-anchored positioning of time-oriented data in mobile augmented reality. Candidates should have experience working with frameworks such as Apple's ARKit or Google's AR Core, prototyping with tools like Reality Composer or Unity, and implementing gesture- and / or proxemic-based interactions.
Interested students should review recent projects on Prof Matt Brehmer's website and contact him with a statement of interest and the subject line "W25 URA applicant { student name } for Mobile AR project".
Semantically-resonant inline information graphics for text-based conversations - Matthew Brehmer
This URA project will build upon our recent research [*] dedicated to fostering engaging communication around data on (primarily) text-based conversation platforms (e.g., Slack, Teams, Discord) with support for composing evocative pictographic representations. Candidates should be comfortable building interfaces with frameworks / libraries such as Svelte, React, or Vue, and have a basic familiarity with information design conventions. Experience in applied natural language processing and / or conducting research with human participants would also be an asset.
Interested students should review recent projects, and especially the two projects linked 👇 on Prof. Matt Brehmer 's website and contact him (mbrehmer@uwaterloo.ca) with a statement of interest and the subject line "W25 URA applicant { student name } for Inline Infographics project".
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.
Supporting Virtual Reality State Change and Transitions - Zachary McKendrick
We are currently seeking research collaborators for The VR Thresholding Protocol, a research project investigating the experience of user state change and transitioning into and back out of immersive virtual reality (VR). Using the v1 prototype as a starting point we are looking for a URA to implement the next phase of the protocol and (potentially) test its viability with a small user study. If selected, the successful URA will help design and develop an environment and digital 'host' to guide participants through the Thresholding process and attach the process to the start and end of an existing VR game/environment.
Experience with Unity Game Engine (or Unreal) and VR/AR development is required. Familiarity with motion capture is an asset as is previous experience conducting research with human participants (though this is not necessary).
Interested applicants should apply online and email Dr. Zachary McKendrick, MFA with a (brief) statement of interest.
Programming languages research projects
A New Programming Language with Effect handlers: Implementation and Application - Yizhou Zhang
Effect handlers are a powerful language abstraction: they subsume a variety of control-flow features such as coroutine iterators and async/await, and they can be applied to domains such as probabilistic programming and automatic differentiation. Recently, a team of researchers at Waterloo have created Lexa, a new programming language supporting effect handlers. This URA project focuses on enhancing Lexa's compiler implementation and building cool applications in Lexa.
Prior experiences with compiler construction are required.
To join the project, reach out to Yizhou Zhang with your unofficial transcript and resume.
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
Systems and networking research projects
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.
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