You are here

Undergraduate Research Assistantship (URA) program

The Cheriton School of Computer Science offers enrichment opportunities to exceptional students through the Undergraduate Research Assistantship (URA) program to earn $600 a term for part-time research with a faculty member. The money is paid once near the end of the term.

Eligibility | How to apply

Current URA positions

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 are available to supervise URA students.

Professor Research areas/topics
Samer Al-Kiswany Distributed systems, cloud computing, storage systems, and big data systems
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
Robin Cohen Artificial Intelligence
Khuzaima Daudjee Cloud and Big Data Systems
Nancy Day Formal methods, logic, software engineering, software modelling, state diagrams, requirements, specification
Maura Grossman High-Stakes Information Retrieval, IR Evaluation, Electronic Discovery, Technology-Assisted Review, Privacy-Preserving IR
Urs Hengartner Security and privacy for smartphones and mobile apps
Jesse Hoey Affective Computing, Health Informatics, Artificial
Ihab Ilyas Data Management, Big Data Integration and Quality, Large Text Data Sources, Applying Machine Learning to Big Data Curation
Craig Kaplan Procedural modelling, 2D computer graphics, ornamental
design, Tiling theory and geometry
Martin Karsten Operating Systems, System Software, Networking
Florian Kerschbaum Searching and computation on encrypted data
Edward Lank HCI, gestural interaction, intelligent interfaces, public display interfaces, design of technology
Kate Larson Artificial Intelligence, Multiagent Systems, Electronic Commerce, Game Theory
Ondrej Lhotak Programming  languages, program analysis, compilers, Scala, type systems
Jimmy Lin Big data, information retrieval, databases
Stephen Mann Graphics, curves and surfaces
Mei Nagappan Software Engineering: Mining Software Repositories, Mobile App Market Analytics, Software Bots
Naomi Nishimura Graph algorithms, fixed-parameter tractability, combinatorial reconfiguration
Jeff Orchard Computational Neuroscience, neural networks
Pascal Poupart Machine Learning, Artificial Intelligence, Health Informatics
Gregor Richards Programming languages, dynamic languages, JavaScript, JIT, gradual typing
Semih Salihoglu Problems in large-scale data processing with a focus on graph data
Ken Salem Databases, distributed systems, cloud computing
Jeffrey Shallit Automata theory, formal languages, complexity, number theory, algorithms, algebra
Peter Van Beek Machine learning, image processing, artificial intelligence, computational photography
Dan Vogel HCI, applied computer vision for realtime interaction, mid-air gestures, touch input, novel interaction techniques
Justin Wan Scientific computing, computational finance, medical imaging,
physics-based simulation
Grant Weddell Database technology for precompiled real-time applications


Any student who has completed their second year in the Faculty of Mathematics with an average 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.

URA research projects

Title: Search Over Encrypted Data

Data outsourced to the cloud is susceptible to theft by hackers or malicious insiders. Encrypting data before outsourcing and retaining the key can protect it against such theft. However, encrypted data can no longer be easily searched. Sending the data to the client for searching is too expensive. Instead, we aim to search directly over the encrypted data at the server. Based on recent results we plan to implement the first strongly encrypted, relational databases that can be queried using a large subset of SQL. Breaking into the cloud storage will no longer suffice.

We are looking for multiple students contributing to the design, implementation and evaluation of a first prototype of this encrypted database. Ideally, you can program well in a systems-oriented language such as C/C++ and have good working knowledge of database architecture.

If you are interested, please contact Florian Kerschbaum at

Title: Internet of Drones (IoD)

Internet of Drones (IoD) is an Air Traffic Controller architecture for drones. It is what it takes to finally make drone package delivery (say your groceries) and other applications possible. We are actively pushing toward completing our simulator and our physical demonstration with many drones involved.

We are looking for highly motivated, ambitious team players who want to work on a project that breaks new ground. If you're that person, we encourage you to join us and help by working on the software development for the simulator and if our progress allows, controlling of the real drones via our algorithms through wireless network. We are looking for talented students who can produce high quality code and are proficient in programming with Python. 

Interested and eligible students should email Prof. Raouf Boutaba with the subject line “URA applicant for IoD” along with your unofficial transcript and CV.

Title: Physical modelling of lace patterns using knot tightening

Ridgerunner is a C++ software library developed by the Knot Theory group at the University of Georgia. It takes an arbitrary knot and shortens the length of the strands until they collide with one another. This technique has been used to identify isomorphic knots. The library approximates a strand using a polygon and minimizes the length of the polygon subject to an infinite family of differentiable constraint functions. The goal of the current project is to adapt Ridgerunner to render a class of alternating braids which represent a 500 year old fibre art form known as bobbin lace.
The first step of the project is to understand the algorithm used in Ridgerunner and how it compares to traditional simulated annealing approaches. One concern is how much out-of-plane movement occurs with this tightening approach. For bobbin lace, we will need to “nail” the endpoints of threads down to the plane.
The second step is to convert a lace graph into a set of braid words and use the software to tighten the threads simulating the tension applied by a lace maker. The Ridgerunner library will probably be too slow to handle most lace patterns; however, the thread positions for lace patterns are fairly stable after just two rows. We will try to modify the library to consider only local forces.
The final step of the project is to introduce immovable polygons into the model to represent the pins used by lacemakers. The immovable objects will limit the amount of tightening that can occur.

Related reading:

Interested students should contact Dr. Veronika Irvine (

Title: A relational query evaluation backend for Flix

Flix is a domain-specific language for declaratively expressing and
solving program analysis problems being developed at Waterloo. It
consists of two sub-languages: a Datalog-like declarative constraint
language, and a Haskell-like functional language. The goal of this
URA is to implement a new query evaluation backend for the relational
constraint language. The Flix system is implemented in Scala. This
position requires some experience with Scala and an interest in database
query evaluation.

Title: Extending the Scala DOT calculus

Dependent Object Types (DOT) is a core calculus for formally specifying
the type system and semantics of the Scala language. Its soundness proof
has been checked with Coq. The goal of this URA is to specify more Scala
features, such as traits, in DOT and prove them sound with Coq. This
position requires some experience with Coq and is particularly suitable
for students who did well in CS 245E or CS 798 Software Foundations.

Interested students for both of these titles should contact Ondrej Lhotak

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.

kdaudjee [AT]

Title: Privacy Vulnerabilities on Android

We have developed an app that analyzes the network traffic of all apps on a smartphone in order to detect leakage incidents, where an app sends sensitive user information across the network

In a previous URA, a UI that informs users of leakage incidents was added to the app.

The first goal of the proposed URA is to thoroughly test the app and UI with several applications and address any issues that may arise so that the app can be released on Google Play. The second goal is to add additional features to the app, such as providing more detailed information about leakage incidents or coming up with simple ways to distinguish between legitimate and illegitimate leakage incidents.

Android development experience is required.

Interested students should contact: Urs Hengartner

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

How do I apply?

Both of these forms must be fully completed and returned to Simone Paull in MC 4036, Please email to arrange a time.

A faculty member must sign and fill out the account number on both the URA form and the Casual or Additional Pay Request form.

International Students need an SIN # to work in Canada

Please refer to the Student Success Office for this information:

For more information, please contact:

Simone Paull
Office: MC 4036
Phone: (519) 888-4567 ext. 36826


Enrichment opportunities

Check out additional ways to grow your research opportunities and further your experience.

Find out more about all of the ways that you can enrich your studies.

URA Quick Facts

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