Working in the LCI Lab

Research Award Opportunities

One of the most valuable research experiences for an undergraduate student is to be a research assistant. Each year, the department receives a number of research awards that help provide funding for an undergrad student to spend 16 weeks over the summer working full time in one of the department’s research labs, often with the opportunity to publish their work (see examples of previous projects.) This kind of research experience is highly sought after by graduate programs. 

All applicants must confirm their eligibility to apply and to work. You must have all necessary requirements prepared (ex. Social Insurance Number and permits).

International students must have a valid Social Insurance Number and be eligible to work on campus for the duration of the award (ex. in the summer). you will be required to provide any necessary details and documentation upon accepting the award (SURE or WLIUR). This is necessary for processing and payment. If you are offered an award but do not meet this criteria, you will not be able to accept. For questions about eligibility, please speak with an International Student Advisor.

Award Categories

The positions are available to 2nd, 3rd, and 4th year students with strong academic records. You'll find more information about the awards available, including eligibility requirements below. Watch for in-class and email announcements from the department for details and deadlines.

NSERC USRA - NSERC Undergraduate Student Research Award

SURE - Science Undergraduate Research Experience Award

WLIUR - Work Learn International Undergraduate Research Award

See the following links for more details:


UBC Careers Site

How to Apply 

Deadline: February 20, 2021 at 4:00 PM

New Application Requirement: all applicants are required to apply with a confirmed supervisor. The list of projects and supervisors will be posted on this page, and you can use this to approach any of the supervisors listed. However, you aren't limited to the projects and supervisors listed below. We encourage you to directly contact professors you would like to work with to find a match. Many professors will be happy to talk to you about the opportunity to hire students at a subsidized wage. You can find our faculty directory here. For some additional tips, please see the UBC Careers page.

Required Steps:

  1. Read the details above and the information at the links on this page
  2. Determine which awards you are eligible for
  3. Contact potential supervisors from the Projects and Supervisors list (see below) or by approaching Computer Science faculty members you would like to work with
  4. Once you have a confirmed supervisor, submit the online application webform by the stated deadline (the webform will become available before the deadline):
    • Before submitting, please ensure that you have read over the online guidelines, eligibility requirements, and webform instructions carefully
    • Make sure to read all of the instruction text in the webform, there may be important details noted below each field
  5. When the department is informed of how many awards are available, a departmental adjudication committee will rank the applications. All applicants will then receive a decision. If you are selected for an award, you will then receive an email with instructions to submit a new webform to provide additional information/documentation:
    • When you are applying: please read the webform carefully to ensure you are prepared to accept by providing these details
    • (Your supervisor will also be contacted for required information)


  • All students should complete the NSERC Form 202 on the NSERC USRA website by clicking "On-line System Login" or, if you are a first-time user, "Register"
  • All students should upload a PDF of the completed NSERC Form 202 to the online aaplication webform
  • DO NOT submit the application on the NSERC website until you have been accepted for the award and instructed to do so (at the end only students awarded for NSERC USRA will submit the application to NSERC wesite)
  • Instructions on how to complete the forms can be found on the NSERC USRA website 

Questions? For further details, please visit the UBC Student Services website or the NSERC USRA website and review the information and links provided, as these will likely give you the answers to your questions. If you would still like additional assistance, please see our Advising Webform instructions to see if you are eligible to submit a webform request. 

Projects and Supervisors: Summer 2021

Aastha Mehta

Project 1. PanCast: Listening to Bluetooth Beacons for Epidemic Risk Mitigation

Contact tracing is an important part of an epidemic mitigation strategy. During the ongoing COVID-19 pandemic, there have been burgeoning efforts around the world to develop and deploy smartphone apps to expedite contact tracing and risk notification. These apps rely on various technologies ranging from QR-code scanning to GPS tracking and pairwise Bluetooth exchanges between individuals in prolonged proximity of each other. Unfortunately, these apps have not yet proven to be sufficiently effective due to low adoption rates, privacy concerns, and low accuracy in predicting infection risk. Indeed, B.C. has not adopted the Candian national COVID Alert app due to some of these very reasons.

We propose PanCast, a privacy-preserving and inclusive system for epidemic risk assessment and notification that scales gracefully with adoption rates, utilizes location and environmental information to increase utility without tracking its users, and that can also be effective in identifying superspreading events. To this end, PanCast utilizes Bluetooth encounters between beacons placed in strategic locations (e.g., where superspreading events are most likely to occur) and inexpensive, zero-maintenance, small devices that users can attach to their keyring. PanCast allows healthy individuals to use the system in a purely passive "radio" mode, and can assist and benefit from other digital and manual contact tracing systems. Finally, PanCast can be gracefully dismantled at the end of the pandemic, minimizing abuse from any malevolent government or entity.

To know more about the project, visit can participate in this project by getting involved in building a prototype of the PanCast system using Bluetooth devices and a deployment of the system in a small part of the university campus. If you are interested, reach out to


Alex Summers

Project 1. Extensible parsing and type-checking for Prusti

The Prusti project (a collaboration between UBC and ETH Zurich) aims to provide modular, code-level verification tools for Rust, a modern systems programming language. The combination of Rust's advanced ownership type system and user-defined specifications makes it possible to provide scalable and efficient formal verification for a wide variety of program properties, including allowing programmers to express their intentions and check that their code will always live up to these.

Prusti’s specification language includes a large subset of Rust itself, but adds additional features such as logical quantifiers and connectives. This creates a tension in the handling of parsing and type-checking of specifications: to avoid duplicating unnecessary code we would like to reuse the compiler’s existing parser and type-checker, but this cannot be applied to specifications in general. The current solution implemented leads to ad hoc restrictions and can cause poor error reporting for incorrect inputs

Tasks: In this project you will develop and implement an approach for parsing and type-checking a generalisation of Prusti’s current specification language, allowing for inputs which mix and match both Rust statements and Prusti-specific features while simultaneously reusing the Rust compiler’s existing codebase for parsing and type-checking the Rust aspects of the input. If successful, this will provide a significant improvement to the generality and usability of the Prusti verifier.

Qualifications: Prior experience with Rust and/or compiler implementation are advantageous but not essential; expertise with imperative programming of some kind is needed.

Project 2. Automated Debugging for SMT Solving

SMT solvers have a wide variety of applications across Computer Science, including program analysis and synthesis tools, automated planning and constraint solving, optimisation problems and software verification. Advanced tools such as program verifiers are often built around SMT encodings of their problems. However, designing these encodings to perform reliably and fast is a challenging task. In recent work, we developed the Axiom Profiler tool to serve as a debugging tool for quantifier-rich SMT problems.

Tasks: In this project, you will work to extend the Axiom Profiler to provide new automated techniques for helping a user to zoom in on, diagnose and solve inadequacies in their SMT encodings.

Qualifications: Prior experience with SMT Solvers, visual tools and/or formal reasoning is an advantage, but is not essential; expertise with imperative programming of some kind is needed.

Project 3. Sufficient preconditions for panic-freedom of Rust functions

The Rust programming language is a relatively-new systems language, designed to be a more-robust alternative to C++ and similar languages. The Prusti project (a collaboration between UBC and ETH Zurich) aims to provide modular, code-level verification tools for Rust, allowing programmers to attach specifications to functions describing e.g. how they should be called (preconditions). An important property of Rust code is panic-freedom: a “panic” in Rust is a runtime exception, and one would typically like to rule out such program behaviours at compile time. Prusti offers to possibility to statically prove that *for calls to a function satisfying its precondition*, the function’s body cannot cause panics. In general, however, this requires annotating functions with preconditions strong enough to rule out potential panics.

Tasks: In this project, we will first analyse existing codebases (published on to identify how many functions can already be proven panic-free by Prusti with no preconditions (for example, because if-conditions in the code conservatively check for problematic cases before a panic can be caused). For the remaining functions, we will investigate how complex and difficult (or not) the task is of providing sufficient specifications for Prusti to be able to show panic-freedom. As a result, we should understand better the question of how rich a function’s specification needs to be in practice to at least eliminate these basic kinds of runtime errors.

Qualifications: Prior experience with Rust and/or compiler implementation are advantageous but not essential; expertise with imperative programming of some kind is needed.

Project 4. A standard library for Rust verification

The Prusti project (a collaboration between UBC and ETH Zurich) aims to provide modular, code-level verification tools for Rust, a modern systems programming language. The combination of Rust's advanced ownership type system and user-defined specifications makes it possible to provide scalable and efficient formal verification for a wide variety of program properties, including allowing programmers to express their intentions and check that their code will always live up to these. Prusti’s verification is function-modular, meaning that calls to other functions are reasoned about via their specifications; for this reason, it’s necessary to provide good specifications for commonly-used standard library functions.

Tasks: In this project, we will work on equipping as much of the Rust standard library as possible with suitable Prusti specifications. This will exercise some relatively new features of the verifier, and will likely uncover the need for further extensions. Furthermore, we’ll investigate whether it’s clear that a single specification is suitable/convenient for all clients of a library, or whether we need support for specifications of different levels of complexity, depending on the usage and application.

Qualifications: Prior experience with Rust and/or formal reasoning about programs are advantageous but not essential; expertise with imperative programming of some kind is needed.


Dongwook Yoon

Project 1. Ethics in Human Surrogates and Virtual Humans

Human surrogates (HSs, a.k.a virtual humans), what was once a sci-fi fantasy, is becoming a reality thanks to advances in deep fake, speech synthesis, and robotics technology. A virtual reunion of a South Korean mother and a virtual recreation of a deceased daughter was a particularly dramatic event. While many of these efforts are well intended, there are unforeseen blind spots that could cause dire consequences. A recent example being the fake Obama speech video created using AI video tools. While these advances push the boundaries of technology, we know very little about its unintended and long-term implications to individuals and society. It is quintessential to engage with the ethical issues of HSs research, asking critical research questions: How do experts and public stakeholders perceive the costs and benefits of HSs? How do we define boundaries and off limits of ethical issues in HSs? How do these users and stakeholders think of the use and adoption of HSs? Through these questions, we look to provide an ethical framework and guidelines to inform the ethical considerations for future research in HSs. We will (1) read books and research papers on technology ethics and (2) run a qualitative study interviewing researchers and practitioners in AI, Robotics, and Computer Graphics.

- Passionate in ethics and equity issues in socio-technical systems.
- Ability to deeply engage with academic literature and articulate in presenting ideas
- (optional) Experience or strong interest in qualitative methods, such as conducting semi-structured interviews

Please apply by January 27. For application details please check the following link:

Project 2. Learning to Play a Song with Online Videos: Strategies and Challenges of Musical Instrument Learners

Learning to play a musical instrument by watching Youtube videos is becoming increasingly popular. Especially in situations such as the COVID-19 pandemic, playing a musical instrument is a meaningful way to spend time in isolation, as it promotes self-development and helps reduce anxiety and depression. These videos offer easy access to tutorials by expert musicians (or even the original artists, like how the famous guitarist, Carlos Santana, teaches his own song!) and diverse teaching styles (you can find an instructor who matches your taste). In this project, we will study how people learn musical expressions on YouTube and what are their specific challenges in doing so. Our findings will establish a basis for designing an intelligent interface (e.g., a browser plugin for Youtube) to help the learners find videos that are suitable for their learning styles and goals, utilize the videos effectively, and monitor their progress systematically.

- Successful completion of the HCI courses (e.g., CPSC 344 or 544)
- (optional) Interests in musical instruments and musical experience
- (optional) Experience in front-end web development

Please apply by January 27. For application details please check the following link:

Project 3. Enhancing Pull Request Interface with Interactive Referencing Features

The productivity of software engineering practices are increasingly dependent on the efficacy of cooperative work between multiple stakeholders. Pull Request (PR) is an important software development lifecycle tool that these stakeholders use to contribute changes, feedback, and suggestions into their shared software codebase. Discussing a PR involves referring to the code changes within the PR itself and also the underlying context (e.g., who made the changes, for what, associated documentation, system logs, etc.). It is time- consuming and error-prone for developers to refer to and understand such contextual system elements embedded in the textual discussion threads. To save developer time and prevent potential miscommunication, we need a better PR interface that helps the stakeholders create and access the references around the PR. Our approach is to make the references interactive and recommended. To this end, we will: (1) Build a taxonomy of references in PR by qualitatively analyzing diverse PR dataset available online, (2) Apply the taxonomy to a large number of PRs and identify patterns in how code elements are referenced, and (3) Design a new traceable PR discussion interface based on our empirical findings.

- Strong technical skills including OOP, data structures, and algorithms.
- (optional) Deep experience in front-end web development
- (optional) Successful completion of the introductory HCI courses (e.g., CPSC 344 or 544)

Please apply by January 27. For application details please check the following link:


Helge Rhodin

Project 1. Egocentric motion capture

In recent years, there has been tremendous progress in video-based 6D object pose and human 3D pose estimation, even from head-mounted cameras [Related work]. They can now both be done in real time but not yet to the level of accuracy that would allow the capture how people interact with other people and with objects, which is a crucial component of modeling the world in which we live. For example, when someone grasps an object or shakes someone else’s hand, the position of their fingers with respect to what they are interacting with must be precisely recovered if the resulting models are to be used in see-through AR devices, such as the Hololens or consumer-level video see-through versions.
Key to this project is the accurate modeling of contact points and the resulting physical forces between interacting hands and feet with the surrounding. The hardware setup will be a mobile head-mounted camera, building upon our egocentric motion capture work (EgoCap) [Related work]. The goal of this project is to use inertial measurement units (IMUs) and deep learning to sense ground contact and relative positions.

Related work:
EgoCap: Egocentric Marker-less Motion Capture with Two Fisheye Cameras. Helge Rhodin, Christian Richardt, Dan Casas, Eldar Insafutdinov, Mohammad Shafiei, Hans-Peter Seidel, Bernt Schiele, and Christian Theobalt. SIGGRAPH Asia 2016

Project 2. Gravity for scale estimation in multi-view reconstruction

This project aims at reconstructing objects and camera geometry by exploiting the Newton's equations of motion and gravity. Estimating metric scale from image or video recordings is a fundamental problem in computer vision and important for determining distances in forensics, autonomous driving, person re-identification, and structure-from-motion (SfM). In general, object size and distance cancel in perspective projection---which makes the problem ill-posed.
The main idea is to use the omnipresent gravity on earth as a reference 'object'. Newton's second equation of motion dictates that the trajectory of an object is a parabola, a function of time, its initial speed and position, with the curvature determined by the acceleration induced by constant external forces. This project build upon our earlier work on estimating a person’s height by relating acceleration in the image and to gravity on earth [Related work], as sketched in the inset. By contrast, the aim of this project is to use similar principles for multi-view reconstruction, for structure from motion and automatic camera calibration.

Related work:
Gravity as a Reference for Estimating a Person's Height from Video. Didier Bieler, Semih Günel, Pascal Fua, and Helge Rhodin. ICCV 2019

Project 3. Learning anthropometric constraints for monocular human motion capture

In recent years image-based human motion capture (MoCap) has progressed immensely with varying applications in e.g. movie production, sports analytics, virtual reality systems, games, human computer interaction, and medical examinations. Nowadays marketable software in these fields requires sophisticated motion capture studios and expensive measurement devices which strongly limits its applicability. This project aims to achieve human MoCap using only a single RGB camera to enable MoCap in the wild.
Since a video taken by a single camera contains no depth information, additional assumptions on the scene need to be made. Fortunately, the human body satisfies several constraints: bones lengths limits to specific values, symmetry of opposing body parts, joint angle limits etc. Depending on your interest different machine learning approaches will be applied to learn these constraints from image data.

Related work:
RepNet: Weakly Supervised Training of an Adversarial Reprojection Network for 3D Human Pose Estimation, Bastian Wandt, Bodo Rosenhahn, CVPR 2019


Ivan Beschastnikh

Project 1. Privacy-preserving ML on health data

To train multi-party ML models from user-generated data, users must provide and share their training data, which can be expensive or privacy-violating. We are exploring ways to augment state-of-the-art approaches, like federated learning, with better security/privacy.

And, we are developing brand-new distributed ML approaches that do away with centralization. We are collaborating with researchers in the UBC medical school and VGH, and patient groups in the city to come up with technologies that are sensitive to user's privacy constraints and solve real problems. Our work is open source and aims to provide practical alternatives to today's systems that provide minimal privacy guarantees to patients. We are looking for 1-2 students who have a background in ML, databases, networks, or distributed systems. If you're interested in technologies to improve healthcare, then this project is for you! To learn more about our work, visit


Kevin Leyton-Brown

Project 1. Deep learning for branch prediction in SAT solvers

Designing efficient algorithms for solving the boolean satisfiability (SAT) problem is crucial for practical applications such as scheduling, planning, and software testing. Machine learning is an important tool in algorithm design for SAT, however SAT practitioners have yet to exploit the representational power of deep learning. We propose to train a neural network to learn to make variable ordering decisions for the widely used CDCL-style SAT solvers.

CDCL SAT solvers search for a solution in a tree-like fashion, where decisions are made to iteratively partition the search space. Existing heuristics for deciding how to partition the search space don't use machine learning to leverage the structure of the internal solver state. We propose to use Monte-Carlo Tree Search (MTCS) reinforcement learning to train a neural network policy to map from internal solver state to partitioning decisions in order to minimize the number of steps required to prove SAT/UNSAT.

Most of the student's work will involve software development and setting up large computational experiments for:

Improving efficiency of Monte-Carlo tree search for generating training data Training neural networks to learn policies for CDCL SAT solver Amortizing cost of queries to neural nets over many consecutive decisions

The student should have basic understanding of machine learning concepts and should be competent in C++ (for SAT solver) and python (for ML). Knowledge of deep learning (pytorch), cluster computing, statistics, and CDCL SAT solvers will be an asset.

Please contact Chris Cameron at if interested and to set up a time to talk.