You are here

Undergraduate Research Assistantship (URA) program

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

Faculty members post openings each term so interested, eligible students can apply. Students can also contact faculty members if they are interested in specific research areas to see if a URA opportunity might be available.

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.

Winter 2016 positions

Title: Investigating Distributed Consensus Protocols

I am looking for a URA to investigate protocols for distributed consensus/commit in the context of transaction processing for distributed data management.  The task would be to identify and classify different protocols under a consistent taxonomy and to implement and test these protocols to understand their performance differences.

Interested students should email Khuzaima Daudjee at kdaudjee@uwaterloo.ca


Title: Software Modelling Tools

We are looking for 2-3 URAs to contribute to the development of tools for editing, transforming, and analyzing software models.
 
The tool suite is based on a mix of Sirius, Eclipse, GME, Xtext, Ecore, and ML technologies, and aims to (1) ease the task for creating models and (2) enable automated analysis of models to identify inconsistencies, interactions, and errors. 
 
Tasks include
1) Creating a front-end parser for a language that supports class diagrams, feature models, and state-machine models. The parser will build data-structures that capture elements, relationships, and properties of the parsed models.  Applicants for this task should be familiar with Java-based parsing technologies.
 
2) Enhancing an existing translator that transforms state-machine models into the SMV language.  Applicants for this task should be strong Scheme programmers who are interested in picking up experience programming in ML.
 
3) Integrating a suite of tools (editors and transformations) such they they can be invoked from within the Eclipse framework.  Applicants for the task should have a strong background in Eclipse development.
 
Interested students should contact Prof. Jo Atlee jmatlee@uwaterloo.ca
 

Title: Efficient Algorithms for Covering Problems

We are looking for a URA to work on a project related to geometric covering problems on polygons. More precisely, we are given a polygonal shape as input and the goal is to cover the polygon with some particular geometric objects so as to optimise an objective (e.g., to minimize the number of objects used). Such geometric problems have applications in wireless sensor networks, image processing, VLSI design and so on.
 
The goal of this project is to consider different types of covering objects (e.g., visibility regions) and design efficient algorithms for solving these problems. Moreover, for the "hard" variants of these problems, we consider designing approximation algorithms.
 
Ideal applicants have passed either CS 240 or CS 234 and have a solid background in algorithm design and data structures. Moreover, familiarity with algorithm design techniques (e.g., dynamic programming, or divide and conquer) is desirable.
 

The project will be supervised by Dr.Saeed Mehrab smehrabi@uwaterloo.ca interested students can contact him or Prof. Biedl biedl@uwaterloo.ca


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 https://www.cs.uwaterloo.ca/~uhengart/publications/spsm15.pdf

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 email Urs Hengartner urs.hengartner@uwaterloo.ca


Title: Information Security

I have two URA projects for senior undergraduate students interested in cryptography and information security. 

Students will investigate scalability and performance of some of the cutting-edge encryption methods in various mobile and cloud environments. Students will also have an opportunity to design and work on implementations of state of the art functional encryption algorithms. 

The ideal candidate took a course in information security, and has experience with C/C++, at least one database system and a mobile platform. 

Interested students should contact: Sergey Gorbunov sergeyg@mit.edu


Title: Shatter Client for iOS

Shatter is a framework that allows a user's devices to jointly perform cryptographic operations such that the impact of a lost or stolen device remains limited. For example, you need both your watch and your smartphone to initiate an encrypted IM session. A thief stealing your smartphone will not be able to impersonate you. Shatter is implemented in Java and currently runs on Android, Android Wear, and Linux. The goal of this URA is to port Shatter to iOS.

Ideal applicants are experienced iOS developers. Cryptography background would also be an asset.

Interested students should contact: Urs Hengartner urs.hengartner@uwaterloo.ca


Title: Flix function verification using Leon

Flix is a domain-specific language for declaratively expressing and
solving program analysis problems being developed at Waterloo. Part of
Flix is a simple functional language. In order for a Flix program to be
well-defined, its functions must obey certain properties. One example
of such a property is monotonicity: for all inputs x, y such that x <=
y, the output f(x) must be <= f(y). Leon is a program verifier that can
prove such properties automatically for many programs.

The goal of this URA is to connect Flix with Leon and write a translator
from Flix functions to Leon functions, so that the Flix system can use
Leon to verify the necessary properties of Flix functions.

Both Flix and Leon are implemented in Scala. The applicant must be
willing and able to read and write Scala code.

Interested students should contact Ondrej Lhotak olhotak@uwaterloo.ca


Title: WeBike Project

I am looking for two URAs to work on the WeBike project, a fleet of 31 electric bikes that have been extensively instrumented to produce about 300 MB of data every day ( http://blizzard.cs.uwaterloo.ca/iss4e/?page_id=3661 )  
1. Web architect
    This student will enhance an existing flask-based website, with a MySQL backend, that provides data analytics to project participants. The goal is to improve the site's performance and usability. Prior experience in Python and MySQL is necessary; a background in Flask is desirable.

2. Motorola 360 waatch integrator
    The WeBike platform has an embedded Samsung Galaxy that has been paired with a Motorola 360 watch. This student will continue work on this integration and make collected data available to participants on their personalized website (see above). Prior experience in Android programming is necessary; a background in embedded systems is desirable.

Interested students should contact Prof. S. Keshav keshav@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: White balancing algorithms in computational photography

Many interesting computational problems arise in digital photography. Some of the problems involve the basic functionality of a camera such as automatic focusing, automatic white balancing, and automatic exposure. Other problems extend the capabilities of the camera such as high dynamic range (HDR) imaging and panoramic imaging. This URA involves research in white balancing algorithms for computational photography.

Requirements: C++ programming experience, interest in photography

Desirable, but not essential: Knowledge of algorithms, artificial intelligence, machine learning, graphics.

Interested students should email Professor Peter van Beek vanbeek@cs.uwaterloo.ca


Title: Computational Finance using GPU/Multi-core Systems

One or more URAs are required for the project. Option pricing is one of the central activities in computational finance. In practice, it is important that one can obtain the solutions fast and accurate. The research project is to explore new computing technology in order to solve the equations from computational finance fast, and ideally in real time. The project will particularly focus on GPU/Multi-core implementation of the computational methods in finance.

Students working in this project are preferred to have background in: calculus and linear algebra, numerical computation, and programming experience in C/C++. They will be involved in: 1) GPU implementation (e.g. CUDA, OpenCL) of numerical methods for computational finance, and/or 2) user interface with Excel spreadsheet. Students are expected to write up the final results including the documentation of the code developed.

Interested students should email Professor Justin Wan justin.wan@uwaterloo.ca


Title: Computational Finance on Android and iOS Devices

One or more URAs are required for the project. Option pricing is one of the central activities in computational finance. In practice, it is important that one can obtain the solutions fast and accurate. The research project is to explore new computing technology in order to solve the equations from computational finance. The project will particularly focus on implementation of the computational methods on Android and iOS devices. Smart phones have been popular portable devices which possess an excellent user interface as well as increasing computing power. This project is to investigate the possibility of solving finance equations using smart phones rather than the traditional PCs.

Students working in this project are preferred to have background in: calculus and linear algebra, numerical computation, and programming experience in C/C++. They will be involved in: 1) implementation of numerical methods for computational finance on Android or iOS devices, and 2) user interface. Students are expected to write up the final results including the documentation of the code developed.

Interested students should email Professor Justin Wan justin.wan@uwaterloo.ca


How do I apply?

Both of these forms must be fully completed and returned to Simone Paull in MC 4036, Please email spaull@uwaterloo.ca 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.

Casual or Additional Pay Request form

  • For Dates Worked, enter the start and end dates (the first school day and last non-exam day).

Note: International students must have a Social Insurance Number (SIN) along with an *expiry date* to be paid. To get a SIN:

  • A faculty member must fill out and sign the linked in memo.
  • The student must take a valid passport, study permit, and the completed memo and application form to a Service Canada Centre. For the application form and instructions, see http://www.servicecanada.gc.ca/eng/sin/apply/how.shtml

For more information, please contact:

Simone Paull
Office: MC 4036
Phone: (519) 888-4567 ext. 36826
Email: spaull@uwaterloo.ca