Undergraduate Research Assistantship (URA) program

students working on computer

The Undergraduate Research Assistantship 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.

Quick links:


Application deadlines

Term Deadline
Fall 2022 Friday September 30, 2022
Winter 2023 TBC
Spring 2023 TBC

Please note: We will not accept applications past the deadline.

Compensation

  • Students who meet the URA eligibility criteria and are accepted by the URA program will receive a $400 top-up from the School of Computer Science. Supervisors of eligible students must therefore contribute a minimum of $600 for the term.
  • Students who do not meet the URA eligibility criteria may still undertake a URA at a supervisor's discretion but will not receive the School top-up. Supervisors of non-eligible students must contribute a minimum of $1000 for the term.

Eligibility

  • Any student who has completed their second year in the Faculty of Mathematics with a cumulative average (CAV) of at least 80% is eligible.
  • Preference is given to students enrolled in Computer Science major plans.
  • A student can only do one URA per term. A student cannot be on a co-op term while doing a URA.

Note

How to apply

  1. Check eligibility stated above. Make sure you are eligible before taking the following steps.
  2. 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.
  3. Complete the Registration form - Once you complete the Registration form you will be directed to a webpage with the URA Application Form
  4. Complete the URA Application Form (PDF)
  5. Email the form to Marcia Taylor, marcia.taylor@uwaterloo.ca. The Fall 2022 deadline is Friday, September 30, 2022.

The URA Application Form must be fully completed and submitted to receive your URA payment.

A faculty member must sign and fill out the account number on the URA Application Form.

President's Research Award

Please note that if you have a President's Research Award it will be in addition to the $1000 for the term. It can not be used in lieu of salary.

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

 

URA supervisors

Faculty members post openings each term so interested and eligible students can apply. Students can also contact faculty members to see if they are interested in supervising a URA.

The following faculty members have confirmed that they are willing to be contacted by potential URAs. 

Professor Research areas/topics
Omid Abari Internet of Things, Intelligent Connectivity, Ubiquitous Sensing, Wireless Networks, Software-Hardware Systems, Virtual Reality, Smart City 
Samer Al-Kiswany Distributed systems, cloud computing, storage systems, and big data systems
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

Christopher Batty Scientific Computing, Graphics, Physics simulation: liquids, smoke, deformables, etc.
Raouf Boutaba Internet of drones, algorithms, wireless network, high quality coding, programming with Python
Tim Brecht Performance, distributed systems, streaming video services, WiFi networks, Internet of Things, operating systems, networks
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
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 
Jimmy Lin Big data, information retrieval, databases
Anna Lubiw Computational geometry, graph drawing, graph algorithms, and combinatorial optimization
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
Rafael Oliveira Algebra, analysis, combinatorics and complexity theory
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
Jeffrey Shallit Automata theory, formal languages, complexity, number theory, algorithms, algebra
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
Peter Van Beek Machine learning, image processing, artificial intelligence, computational photography
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
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 research projects

Title: Understanding Resource Sharing in Computer Networks

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 decide how to dynamically allocate resource to the traffic flows for different applications in the network.

Finding the right set of algorithms and protocols for network resource allocation given the specific requirements of applications using the network is an important open problem. We are looking for URAs to help us make progress on this problem by studying, analyzing, implementing, and experimenting with some of the most influential existing networking algorithms and protocols.

If you are interested, please email Mina Tahmasbi Arashloo at: mina.arashloo@uwaterloo.ca.


Title: Spectrahedral representations of hyperbolicity cones

Given the algorithmic importance of semidefinite programming, the last two decades have seen increasing interest in characterizing which convex cones are spectrahedral (that is, feasible sets of semidefinite programming). One particular class of convex cones are hyperbolicity cones (defined by hyperbolic polynomials), which has connections to several areas of mathematics.

An outstanding open question – the generalized Lax conjecture – asks whether every hyperbolicity cone is spectrahedral. In [COSW04] and subsequent works, several special classes of hyperbolic polynomials have been studied, and the question of whether such classes of hyperbolicity cones arising from them are spectrahedral remains wide open.

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

  • complex analysis,

  • matroid theory,

  • experience writing rigorous proofs

Applying: 

If you are interested and have the prerequisites for this project, please send the following to Rafael Olivira by email at rafael@uwaterloo.ca:

  • Transcript

  • Resume

Please find the original project posting by going to https://cs.uwaterloo.ca/~r5olivei/project/spectrahedral-cones/


Title: Security and Privacy of Machine Learning

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.


Title: SPLITSnow Sensitivity Analysis

In this project, a student would help our research group to improve the usability of our spectral light transport model for snow (SPLITSnow) which serves as a virtual testing platform for both computer graphics and remote sensing researchers. More specifically, this project will involve a systematic assessment of the impact of variations in the model parameters on its predictions. To conduct this project, the student will be granted access to the online version of SPLITSnow in order to perform the required simulations.

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


Title: High-Performance User-level Threading 

The libfibre project builds an nimble user-level threading runtime system for existing OS platforms, such as Linux and FreeBSD. The objective of the project is demonstrating the performance potential of user-level threading for highly concurrent applications. Several development and evaluation activities are suitable for URAs in the context of this project, such as fine-tuning synchronization operations, testing alternative kernel interaces, or adding auxiliary functionality. A URA candidate should be interested in system-level software and runtime internals, have experience with C/C++ programming, and be familiar with the typical POSIX system call interface. Knowledge of kernel internals would be an additional asset.

If you are interested, please email Martin Karsten at: mkarsten@uwaterloo.ca.


Title: Music on a Whim

I’m interested in working with an undergrad over the summer to conceptualize and design a platform that enables amateur classical musicians to get together to play music in ephemeral ensembles and unusual settings.  As part of this research, the URA will conduct a set of need-finding interviews with music professionals and students, then based on the findings, design and develop a prototype website.  We are looking for a URA who is skilled in design, curious about people, and have some experience in classical music.   

Prerequisites: HTML, CSS, Javascript, Python

Interested students should contact Professor Edith Law: edith.law@uwaterloo.ca 


Title: Reflecting on Online Climate Change Videos

The goal of this project is to understand the effects of watching and reflecting on digital content about climate change. The URA will get to participate in all stages of this project, including

i) helping to carry out studies (remotely on MS Teams),

ii) analyzing collected data using mixed-methods (quantitatively and qualitatively), and

iii) helping to write a paper that will be submitted to a major Human-Computer Interaction (HCI) conference.

Contribution towards this project can lead to being an author on the resulting paper.

The ideal candidate would be someone interested in mixed-methods HCI research. Moreover, this candidate would be excited about non-programming aspects of HCI, i.e., conducting interviews with participants, aggregating data, triangulating findings from quantitative and qualitative analyses, presenting results in a paper. We are looking for someone with a critical mindset that constantly questions how the project is designed, carried out, possible areas of improvement, and interesting insights from the data. Furthermore, any knowledge of statistical tests and/or qualitative analysis is a plus (but not required). You do NOT have to be in Computer Science, or from the Math faculty. You also do not have to be in-person on campus to be part of this project.

We are looking for one URA for Spring 2022. If you are interested, please contact Edith Law at edith.law@uwaterloo.ca in April or early May 2022.


Title: Computer simulation of many object collisions 

In physical-based animation, it is often necessary to simulate collisions and interactions of rigid body objects. It is of particular interest if the number is large and they may have arbitrary shapes. The modelling equations are nonlinear and difficult to solve. In this project, we will investigate advanced computational techniques that are accurate and efficient. The role of the undergrad student will involve studying of research papers and implementation of numerical methods using C/C++. Background in computer graphics is desirable but not necessary.

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


Title: Computation Over Encrypted Data 

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.


Title: Front end for a digital greenhouse application 

At Intelligent Connectivity lab (ICON Lab), we have developed a system that uses battery-free sensors to monitor the moisture level of plants in a greenhouse. Our sensors are already deployed in a greenhouse in Ontario. Our technology enables greenhouses to maintain suitable moisture levels not only to improve plant productivity and quality but also to save up to 25% of irrigation water. We are looking for a URA who can build a browser-based front end to this system that would allow a greenhouse manager to monitor the greenhouse in real-time and water the plants only when it is required.

Prerequisites: Familiarity with front-end design. Familiarity with Rasberry Pi and Azure IoT platform is a plus. 

Interested students should contact Professor Omid Abari: omid.abari@uwaterloo.ca


Title: Machine Learning for IoT applications 

At Intelligent Connectivity lab (ICON Lab), we are looking for URAs who are interested in working at the intersection of ML and IoT. Past research performed by ICON lab’s URAs have resulted publications in the best conferences, giving them opportunities to join grad schools in top universities.

Prerequisites: Experience with Python. Familiarity with Tenserflow, PyTorch or Keras is a plus.

Interested students should contact Professor Omid Abari: omid.abari@uwaterloo.ca


Title: What does WiFi networks reveal about our life?

At Intelligent Connectivity lab (ICON Lab), we are looking for URAs who are interested in doing research on WiFi networks. In this project, we are interested to learn what we can learn about our life style from the patterns of WiFi packets. Past research performed by ICON lab’s URAs have resulted publications in the best conferences, giving them opportunities to join grad schools in top schools.

Prerequisites: Experience with C and Python programming. Interests in designing systems. Familiarity with WiFi and wireless networks is a plus.

Interested students should contact Professor Omid Abari: omid.abari@uwaterloo.ca


Title: IoT networks for Digital Twins 

A digital twin is a digital replica of any physical entity. To achieve digital twin vision, we require to enable internet connectivity to billions of things. At intelligent Connectivity lab (ICON Lab), we are developing new wireless technology to enable this vision. We looking for URAs who are interested in working with hardware and designing new type of hardware. Past research performed by ICON lab’s URAs have resulted publications in the best conferences, giving them opportunities to join grad schools in top schools.

Prerequisites: Experience with RF and PCB design. Familiarity with wireless systems is a plus.

Interested students should contact Professor Omid Abari: omid.abari@uwaterloo.ca


Title: Flescqa - scalable lightweight analysis of large software systems

Flescqa is a project that aims to provide scalable lightweight analysis of large software systems. Information about software are extracted from different artifacts (e.g., source code, build code, models) and are stored in a Neo4J graph database for further processing. Neo4J’s native query language, Cypher, supports interesting queries over software data, and is generally easy to use and generally scales well over this data. However, there are some queries (e.g., path-dependent queries) that require care to avoid performance blow-up in cases where the query requires an infeasibly large number of intermediate paths.

We are looking for a URA who is interested in advanced databases, query languages, declarative languages, and software analysis to explore query patterns or a general methodology for executing arbitrary path-dependent graph queries at scale. Advanced work would include performance analysis or implementing this methodology as a Cypher-based evaluator for a declarative language (e.g Datalog).

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


Title: Using a probabilistic programming language to model and solve machine learning tasks

Probabilistic programming languages (PPLs) are emerging as a powerful technology for model-based machine learning. This project pushes the boundaries of what is possible with probabilistic programming when combined with deep learning. In particular, students will use a PPL to express interesting machine learning problems, and use neural networks to approximate solutions to those problems.

We are looking for ambitious students with the following skills:

  • Solid experience in deep learning and reinforcement learning
  • Familiarity with deep learning frameworks
  • Basic knowledge of probabilistic programming
  • Ideally (though not required), familiarity with a probabilistic programming language such as Pyro

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


Title: Security and Privacy in Machine Learning

More and more applications use machine learning to derive insights from large data collections.  However, this process is susceptible to several security and privacy threats.  For example, the data collection may contain sensitive, private information that may still be derived from the model or the learning and inference process.  We work on several projects that help ensure that such threats are contained.  We work on devising improved attacks that demonstrate that protection mechanisms are not as successful as they claim to be or processes that are assumed to be safe are not.  We also work on defense mechanisms that provide better protection based on the latest developments in cryptography, differential privacy, and machine learning.  Our work involves designing algorithms, developing prototypes, mostly in Python, and evaluating their performance and security.

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


Title: C∀ (Cforall) Programming Language and Runtime System

The C∀ project is an open-source project extending ISO C with modern safety and productivity features, while still ensuring backwards compatibility with C and its programmers. C∀ is designed to have an orthogonal feature-set based closely on the C programming paradigm (non-object-oriented) and these features can be added incrementally to an existing C code-base allowing programmers to learn C∀ on an as-needed basis. In many ways, C∀ is to C as Scala is to Java, providing a research vehicle for new typing and control-flow capabilities on top of a highly popular programming language allowing immediate dissemination. There are many small development and evaluation activities within the C∀ project suitable for URAs. A URA candidate should be interested in programming languages and associated runtime internals with experience in C/C++ programming. Hence, interested students need to have taken CS350 and ONE of CS343, CS442, or CS444 as the material in these courses is used extensively in all URA projects.

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


Title: Efficient computation of generators of special invariant rings

Since Hilbert's seminal works on invariant theory, which laid foundational results for modern commutative algebra and algebraic geometry, and Mumford's seminal work on geometric invariant theory, much progress has been made on the computational aspects of invariant theory. Despite all of the progress made in this past century, many open questions still remain on the efficient computation of a generating set (or of a separating set) of invariant polynomials. The goal of this project is to make progress in efficiently computing a generating set of invariant polynomials for special group actions, which have profound applications in fundamental theoretical problems in computer science.

The ideal URA should have a solid command of linear algebra (equivalent of MATH 245, or MATH 235), with a solid command of basic abstract algebra (such as the material from PMATH 347) and some programming experience being a plus.

Programming will be done using Macaulay (no prior experience with this language required).

Interested applicants please follow directions at https://cs.uwaterloo.ca/~r5olivei/#undergrad-research


Title: Intelligent Connectivity for the Internet-of-Things

Although interest in connected devices has surged in recent years, barriers still remain in realizing the dream of the Internet of Things (IoT). The main challenge in delivering the IoT systems stems from a huge diversity in their energy, scalability, and data-rate constraints. The ICON lab at the Cheriton School of Computer Science is conducting research to address these challenges. The student will do research on designing new connectivity and sensing systems for virtual reality and smart home applications. 

We are looking for students with one or multiple of the following skills:

  • Experience with C/C++ programming, and interests in designing systems
  • Familiarity with Micro-Controller, Raspberry Pi or FPGA programming 
  • Hardware design (familiarity with PCB design would be a plus)
  • Research experience in wireless networks and systems

Interested students should email Omid Abari: omid.abari@uwaterloo.ca


Title: Wrist-worn hand and finger gesture recognition study

The HCI lab at the Cheriton School of Computer Science is looking for a student interested in user study in hand and finger gesture interaction using wrist-worn sensors. The project requires excellent coding skills and some experience with hardware prototyping Additional experience with Arduino / Processing / User study is appreciated, but not necessary.

If you are interested, please email Keiko Katsuragawa at kkatsura@uwaterloo.ca.


Title: High-Performance User-level Threading 

The libfibre project builds an nimble user-level threading runtime system for existing OS platforms, such as Linux and FreeBSD. The objective of the project is demonstrating the performance potential of user-level threading for highly concurrent applications. Several development and evaluation activities are suitable for URAs in the context of this project, such as fine-tuning synchronization operations, testing alternative kernel interaces, or adding auxiliary functionality. A URA candidate should be interested in system-level software and runtime internals, have experience with C/C++ programming, and be familiar with the typical POSIX system call interface. Knowledge of kernel internals would be an additional asset.

If you are interested, please email Martin Karsten at: mkarsten@uwaterloo.ca


Title: Cloud and Distributed Big Data Systems

If you are a senior undergraduate student interested in working with large scale distributed systems that involve managing big data and storage in the cloud to achieve scalability and deliver good performance, please e-mail Khuzaima Daudjee at: kdaudjee@uwaterloo.ca

 

Title: Enhancing a Main-Memory DBMS

We are looking for up to three students to fill URA positions to work on a main-memory database management system. The system is mainly coded in common lisp, but also has components written in C, Bison, Flex and csh. It is a "compiling" DBMS that has a simple extensible runtime and operates by translating SQL-like data manipulation requests directly to C code that interfaces with this runtime. The underlying data model is a generalization of the relational data model in which, among other things, arbitrary inheritance hierarchies may be declared.

During the course of the project, students will increase their familiarity with a range of topics, among which: semantic data modelling, query optimization, A* search, transaction compilation, legacy data integration, rule-based translation and source code synthesis.

Ideal applicants will have a solid background in algorithms and data structures, and a particular interest in program translation. Experience with programming in a functional style would also be an asset.

Interested students should contact Grant Weddell: gweddell@cs.uwaterloo.ca


Title: Interactive visualization techniques for data science

This URA project will be related to the design, development, and evaluation of interactive visualizations that support the general data science workflow: from exploratory data analysis, then to model development and interpretation, and finally to insight communication and storytelling. An idea candidate should be comfortable in web app development (e.g., JavaScript, NodeJS, JQuery, D3, Boostrap) and data analytics (e.g., Jupyter Notebook, Python, numpy, scipy, pandas, tensorflow, pytorch).

Interested students should view a list of current and past projects on Prof. Jian Zhao’s webpage: http://www.jeffjianzhao.com and submit an application: https://bit.ly/2tphwWK  


Title: Semantic Mining of Mathematical Text

Extracting semantic information from natural language text is recognized as an important problem in artificial intelligence, and there are many developed techniques. The present project is to extract semantic information from mathematical text. It is the long-term goal of the “International Mathematical Knowledge Trust” to capture the mathematical knowledge represented in the complete research literature of mathematics. There are several levels of semantic information, from general keyword spotting all the way to formalizing the mathematical statements in a language such as CoQ or Lean. The present project will perform n-gram analysis on the abstracts of mathematical article reviews provided by ZB-Math.

Interested students should contact Stephen Watt: smwatt@uwaterloo.ca


Title: Deep Learning for Handwriting Feature Recognition

One successful method for recognizing handwritten characters is based on representing them as parametric curves (x(s), y(s)) where x(s) and y(s) give the x and y positions of the pen as a function of arclength.   Expressing x(s) and y(s) as truncated Legendre series or Legendre-Sobolev series has proven quite successful for recognition. These series use orthogonal polynomials as the basis, rather than monomials s^k.  Recognition methods using proximity of coefficient vectors has proven quite successful. The present project is to explore how accuracy can be improved by using coefficient vectors to train neural networks for recognition.

Interested students should contact Stephen Watt: smwatt@uwaterloo.ca


Title: Machine Learning of Handwriting using Chebyshev-Sobolev Approximation

One successful method for recognizing handwritten characters is based on representing them as parametric curves (x(s), y(s)) where x(s) and y(s) give the x and y positions of the pen as a function of arclength. So far, expressing x(s) and y(s) as truncated Legendre series or Legendre-Sobolev series has proven quite successful. These series use orthogonal polynomials as the basis, rather than monomials s^k. This project will be to explore whether recognition can be improved using the Chebyshev and Chebyshev-Sobolev polynomials as basis functions.

Interested students should contact Stephen Watt: smwatt@uwaterloo.ca


Title: Algorithms for Symbolic Polynomials

Computer algebra systems, such as Maple, are very good at performing algebraic operation on polynomials with terms of fixed degree, but are much weaker when exponents involve variables. A new class of algorithms work with so-called “symbolic polynomials”, which are polynomial-like objects where the exponents are themselves integer valued polynomials, e.g.  x^(n^2+3n) – 5y^(2n-1). The present project will develop or enhance an existing Maple package for algorithms on symbolic polynomials, including polynomial greatest common divisors and factorizations.   Experience with Maple is required.

Interested students should contact Stephen Watt: smwatt@uwaterloo.ca


Title: Handwriting Neatening

Just as face averaging can be used to produce faces that are perceived as attractive, character averaging can be used to produce attractive characters written in a user’s own distinctive style. Representing handwritten characters as a particular type of feature vector allows this averaging to be well-defined and efficient. This can allow handwriting samples to be adjusted for uniformity of size, slant, pressure, etc. The present project will involve developing a tool to mark up character samples. Experience with Typescript and Node.js will be an asset to the URA candidate, and experience with calligraphy will be a plus.

Interested students should contact Stephen Watt: smwatt@uwaterloo.ca


Title: Suggestion Systems for Handwriting Recognition

On-line handwriting recognition with tablet or phone has the advantage that it is not necessary for the system to present a unique recognition result. It is possible to present a set of best guesses and have the user accept the top result or make a correction. This means that a user’s acceptance and correction history can be used to continuously train and individualize the recognition. This project is divided in two parts: the first is to explore methods to evolve the support set of symbol samples as character suggestions are accepted and rejected. The second is to understand to what degree handwriting “styles” can be used to predict preferred forms of symbols, i.e if a writer draws one character in a certain way, can this be used to predict how they will write other characters. Experience with Typescript and Node.js will be an asset to the URA candidate.

Interested students should contact Stephen Watt: smwatt@uwaterloo.ca


Title: NAN-Boxing for Read-Free Javascript Code

Programming language interpreters, such as those for Javascript, typically allocate data objects in memory augmented with header words that describe the object type and size. This means that type testing, array bounds checks and other operations require following a pointer and reading memory.   This is much slower than register-to-register operations. One technique that is used to improve performance is so-called “NAN-boxing” which encodes pointers in the “not-a-number” space of floating point numbers. This project explores the performance gains that can be made by encoding additional information with the pointer, including certain values and size information. A URA candidate should be familiar with at least one systems level programming language, such as C/C++, and working with program-managed memory.

Interested students should contact Stephen Watt: smwatt@uwaterloo.ca


Title: Learner Modelling for On-Line STEM Education

On-line education is undergoing a transformation in which the traditional “repeat until you get the quiz right” model is starting to be replaced with multiple pre-programmed paths with detours. This project will explore using machine learning techniques on quiz data to identify classes of learners with correlated learning needs. This can allow individualized coaching by the on-line instruction system, and steer students toward explanations given in terms they have shown they understand.  A URA candidate should have experience with, or be willing to learn about, R or python and SVMs.

Interested students should contact Stephen Watt: smwatt@uwaterloo.ca


Title: Improving the Walnut Software for Proving Theorems in Combinatorics on Words

Walnut is free software, written in Java, and described at https://cs.uwaterloo.ca/~shallit/walnut.htm to prove theorems in combinatorics on words.  I am looking for a URA with very good Java skills, who can implement some additional capabilities in the system.

Prerequisites: Familiarity with finite automata, graph algorithms, linear algebra, and good Java skills.

Interested students should contact Prof. Jeffrey Shallit: shallit@uwaterloo.ca


Title: Hyperspectral Data Acquisition for Light Transport Simulations

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


Title: Optimization of Skin Spectral Color Reproduction

Skin appearance attributes, such as color and translucency, result from complex light interaction processes. Distinct trends can be observed in the rendering of skin appearance. At one end of the spectrum, efforts have been directed toward the fast generation of believable images for a large variety of artistic and entertainment applications, from movie effects to video games. At the other end of the spectrum, different initiatives have been aimed at the generation of images with the highest possible level of biophysical correctness so that they can be employed in medical and scientific applications such as the screening of diseases and the assessment of the efficacy of sunscreens and cosmetics. Among these initiatives, one can include the development of predictive appearance. The simultaneous realization of high levels of appearance fidelity and performance is usually problematic since researchers often have to sacrifice one to get the other. In this project, we will focus on a strategy aimed at conciliating these seemingly conflicting goals, and the Natural Phenomena Simulation Group (NPSG) is looking for a student with a solid background in numerical analysis and computer graphics techniques as well as experience with Matlab to assist us in this pursuit.

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


Title: Visualization of Reflective-Refractive Scattering Phenomena

Reflective-refractive scattering phenomena are among the most ubiquitous and intriguing light and matter interactions found in nature. In this project, we intend to employ rendering techniques to visualize unusual manifestations of this phenomena aiming at educational and scientific applications. The Natural Phenomena Simulation Group (NPSG) is looking for a student with a solid experience and strong interest in realistic image synthesis, particularly in the implementation of physically-based ray tracing algorithms, to collaborate with us in this project.

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


Title: Symbolic Execution for a Smart Contract Language

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


Title: Writing a Compiler for the Familia Programming Language

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


Full-time research opportunities

Questions?

For more information, please contact:

Marcia Taylor, marcia.taylor@uwaterloo.ca

URA quick facts

Learn all of the benefits of a URA, what it is and why you should apply.