Undergraduate Research Assistantship (URA) program

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

Please note: We will not accept applications past the deadline.
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.

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.

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.

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

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

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