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.

Fall 2016 positions

Title: Turning Brain Waves into Sounds

 
We are looking for URAs who are interested in joining our research effort on a project about classification of brain activity. In particular, our group is building a hybrid human-machine system for the accurate and scalable classification of brain activity. To this end, we leverage the combined intelligence of machines, experts and non-expert crowd workers (see http://crowdeeg.ca/).
 
Detecting low-level features in bio signals based on visual inspection is a complex task which requires substantial experience to be able to contribute sufficiently accurate annotations. One approach to facilitate the interpretation of bio signals is to turn time series of brain (EEG), muscular (EMG) or heart (ECG) activity into sounds (e.g., music), a technique referred to as sonification. We are looking for URAs interested in designing, implementing and evaluating a crowdsourcing platform for engaging sound engineers to sonify medical time series data. The idea is to boost the learning curve, motivation and accuracy of crowd workers in order to streamline the overall classification process.
 
Applicants should come with a genuine interest in human-computer interaction research, sharing our enthusiasm for machine learning and crowdsourcing topics. The work involves research on building and evaluating an innovative sonification interface for crowdsourcing brain waves patterns. A solid understanding of web technologies like JavaScript, HTML5 and CSS is required. Also, some basic experience with Python will be helpful, but is not required. We very much welcome applications from research-oriented students who share our goal of turning this work into a scientific publication.
 
Interested students should contact Dr. Edith Law (edithlaw@uwaterloo.ca) or Mike Schaekermann (mschaeke@uwaterloo.ca).
 

Title: Perceptions and Effectiveness of Crowd-training Instructors

I am looking for a URA to pursue research in the area of training for crowdsourcing. Crowdsourcing is a form of online distributed computing where tens, hundreds, or thousands of people (i.e., workers) perform a specific task in exchange for monetary compensation. The vast majority of crowdsourcing tasks train workers by supplying them with a set of static training examples. However, this form of training likely insufficient for many complex tasks that either require domain-specific expertise or are composed of many sub-tasks. In this project, we are interested in investigating the effectiveness of a training tool that allows a worker, or set of workers, to be taught by a recording of a person that the workers deceptively believe to be present. We are specifically interested in understanding (1) how workers perceive their instructor and (2) how the effectiveness of the instruction changes with the perception of the instructor. The goal of this project is an academic publication. 

This work will be mostly research-oriented with occasional web development. Applicants should have solid knowledge of web-based programming (e.g. JavaScript), a scripting language (e.g. Python), and be comfortable with reading and writing academic publications. Knowledge of web frameworks (e.g. Django) is also useful. Although not necessary, an understanding of statistics and experimental design is desired.  

Interested students should contact Dr. Edith Law (edithlaw@uwaterloo.ca) or Alex Williams (Alex.Williams@uwaterloo.ca).


Title: Algorithms for geometric covering problems

We are looking for a URA to work on a project related to geometric guarding and covering problems. More precisely, we are given a polygon or a set of points as input and the goal is to cover the input with some particular geometric objects (e.g., visibility regions, disks or squares) so as to optimize an objective (e.g., to minimize the number of covering objects used). This is a well-studied problem in Computational Geometry, which has applications in wireless sensor networks and robotics. The goal of this project is to study the complexity of several variants of these problems by showing the hardness or designing efficient algorithms; for the NP-hard variants of these problems, we consider designing approximation algorithms.
 
Applicants must have a solid background in algorithm design and data structures, and should have passed CS 341 (or equivalent); CS 466 is helpful. Also, knowledge of LaTeX is required.
 
Interested applicants should contact Saeed Mehrabi (smehrabi@uwaterloo.ca) or Dr. Therese Biedl (biedl@uwaterloo.ca).

Title: Online Algorithms for List Colouring of Graphs

I am looking for a URA to pursue research in online list colouring algorithms of graphs which are close to being planar. In online algorithms the input is revealed piece by piece. The task is to properly colour the graph so that every vertex receives a colour from a fixed list. The goal of this work is to study the proof techniques for list colouring problems and transfer these into the online setting. The focus is on graphs that are close to being planar. Namely, we should investigate graphs that can be drawn with at most two edge crossings, but there are options of extending the work to other graph classes such as 1-planar graphs as well.

This is a theoretical work which will involve no coding. Applicants should have solid knowledge of algorithms, be comfortable with reading and understanding mathematical proofs and also being able to write some. A course similar to CS240 is desired. Background in approximation and online algorithms is not necessary. Knowlegde of LaTeX is expected.

Interested students should contact Martin Derka (mderka@uwaterloo.ca) or Dr. Therese Biedl (biedl@cs.uwaterloo.ca).


Title: A standard data structure library 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 library of standard data structures in the
functional language to be used in Flix programs. The Flix system
is implemented in Scala. No Haskell or Scala experience is specifically
necessary, but the URA will require programming in a functional
language.

Interested students should contact Ondrej Lhotak olhotak@uwaterloo.ca


Title: Drawing Halin-graphs with small width

I am looking for a URA to work on a graph drawing problem.  There are many results about how to draw a tree (rooted or not) such that one of the dimensions (say the width) is quite small, perhaps even optimum.  In this project, I would like to look on which of these techniques can be used to draw tree-like graphs with small width.  I am particularly interested in the Halin-graphs, which are graphs obtained by taking a tree (sometimes restricted to a binary tree) and connecting the leaves in a planar cycle.

This is a theoretical project, consisting of reading some existing papers and then modifying the algorithms.   Applicants should have a solid background in algorithm design, and must be comfortable in developing and writing proofs of correctness of algorithms.  Knowledge of LaTeX is required.

Interested students should contact Dr. Therese Biedl (biedl@uwaterloo.ca).


Title: Pricing Models for Cloud Services


Cloud service providers such as Amazon charge fees for using different machines instances from their infrastructure-as-a-service offering.  I am looking for a URA to study current pricing models and to analyze and propose a new model for cloud pricing.  A strong background in statistics/applied math is required. 

Senior undergraduate students should email Khuzaima Daudjee at kdaudjee@uwaterloo.ca


Optimizing Shortest Paths Queries in Graph Databases

 
We are looking for 1 URA to contribute to an ongoing project studying different optimization techniques to speed up shortest paths queries in graph databases. Graphs, consisting of a set of nodes, edges and data on the nodes and vertices, are the fundamental abstraction for representing many types of data in the real world. Examples include social networks, such as Facebook's or LinkedIn's data, the web graph, such as Google and Yahoo's data, protein to protein interactions in biological data, and molecule interactions in chemical data, among others. Graph databases are software that allow users to store, manage, and query such graph data. One of the fundamental queries in graph databases ask to find short (or shortest) paths between a pair of nodes. For example, when a user A is viewing a user B's profile in LinkedIn, user A is shown the shortest path that is connecting user A to user B. In order to facilitate such applications, it is important to be able to answer shortest paths queries very quickly.
 
I am looking for a student to investigate several optimizations for several variants of shortest paths queries. The tasks include implementing these optimizations in a graph database called Neo4j and running experiments to measure how much these optimizations improve queries.
 
Interested students should contact Semih Salihoglu at semih.salihoglu@uwaterloo.ca.
 

Database for Specialized Optometric Records

Data collected by specialized optometric equipment is available as comma-separated files, which are currently manipulated through spreadsheet software to produce patient-specific clinical reports. Through previous URAs, we have built a web interface and relational database backend for managing data collected from one of the optometric measurement devices. We’d like to continue to design and implement a federated database system that provides access to such data repositories in a clinical setting.

The first task for this URA is to extend the front end to provide informative data visualizations and to produce comparative reports. We also wish to extend the database to support additional optometric devices, adapting the relations and creating software to load spreadsheet data into the database and produce additional reports.
The computer science aspects of the work will be supervised by Prof. Frank Tompa (CS).  Prof. Kristine Dalton (Optometry) will provide sample data and help to specify the content and user-interface requirements of the project.
Familiarity or experience with using Python, the Django framework, MySQL, and GitHub is a definite asset.

For more information please contact Dr. Frank Tompa (fwtompa@uwaterloo.ca)


Title: Cache Management for Graph Database Systems

I am looking for a senior URA to study caching protocols in graph database systems.  The task would be to understand existing cache management protocols for an open source graph database system such as Neo4j and to then design, implement and test an improved cache management scheme for graph database workloads. 

Senior undergraduate students interested and comfortable with working and building systems (operating systems, distributed systems, database systems) should email Khuzaima Daudjee at kdaudjee@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: 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: 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: 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


Title: Computational Graphics using GPU/Multi-core Systems

One or more URAs are required for the project. Physically-based animation requires solving complex equations, which is often the computational bottom neck. The research project is to explore new computing technology in order to solve the equations from physically-based animation fast, and ideally in real time. The project will particularly focus on GPU/Multi-core implementation of the computational methods.

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 GPU implementation (e.g. CUDA, OpenCL) of advanced numerical methods. 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.

International Students need an SIN # to work in Canada

Please refer to the Student Success Office for this information:

https://uwaterloo.ca/international-students/social-insurance-number

For more information, please contact:

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