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:
How to Apply
Deadline: February 9, 2024 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:
- Read the details above and the information at the links on this page
- Determine which awards you are eligible for
- Contact potential supervisors from the Projects and Supervisors list (see below) or by approaching Computer Science faculty members you would like to work with
- 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
- 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)
IMPORTANT:
- 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 application 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 website)
- 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 2024
Project 1:
Performance evaluation of resource partitioning mechanisms on serverless applications
Abstract: Serverless cloud platforms host multiple tenant applications, each consisting of several small functions executing in one or more containers. The applications of multiple tenants may be colocated on a server, which multiplexes CPU and memory resources among the tenant applications. This sharing can lead to security concerns (namely side channel leaks of sensitive data) as well as high variability in application performance metrics (e.g,. latency and throughput). The goal of this project is to evaluate a resource isolation strategy for serverless platforms that allocates dedicated memory partitions to each tenant application and uses a predictable CPU scheduling strategy based on time division multiplexing (TDM). The project includes (but is not limited to) following tasks:
- Understanding the hardware memory and cache hierarchy, as well as addressing mechanism
- Understanding the operating system page coloring mechanism
- Designing a memory and cache partitioning mechanism using a combination of OS and hardware techniques
- Identifying candidate serverless applications for benchmarking
- Configuring partitions for the serverless application benchmarks
- Empirical evaluation of the application performance and server costs
- Summarizing the results of the project in the form of an end-of-term report and a presentation in the lab
Students interested in working on this project must have done CPSC 213, CPSC 313 and be proficient in C/C++. Prior experience with kernel programming or serverless applications is desirable but not a requirement.
Work Setting:
- On-site (on-campus)
Project 2:
Analyzing microarchitectural side-channel vulnerabilities in serverless applications
Abstract: Many applications deploy serverless functions that may process sensitive information, such as personally identifiable information (PII) or credit card information. Despite isolating function execution in containers and encrypting the communication to/from the functions, function secrets could be leaked via microarchitectural side channels. Specifically, a function of a colocated adversarial application can monitor the execution time and cache access patterns of the "victim" function and infer the victim's secrets. The goal of this project is to identify serverless applications vulnerable to such side channel leaks via systematic side-channel experiments. The project includes (but is not limited to) the following tasks:
- Background study on a class of microarchitectural side-channel leaks, namely cache-timing leaks
- Collecting a dataset of serverless applications for analysis
- Identifying secrets in the serverless applications
- Implementing an automated program analysis tool to analyze serverless applications for secret-dependent execution patterns
- Evaluating a well-known microarchitectural side-channel attack on potentially vulnerable serverless applications
- Summarizing the results of the project in the form of an end-of-term report and a presentation in the lab
Students interested in working on this project must have done CPSC 213, CPSC 313 and be proficient in C/C++. Prior experience with javascript or serverless applications is desirable but not a requirement.
Work Setting:
- On-site (on-campus)
- - -
Project 1:
Byzantine fault tolerance in a Software-Controller Inverted Pendulum
A software-controlled inverted pendulum (see https://en.wikipedia.org/wiki/Inverted_pendulum for reference) is a cyber-physical system that requires continuous control to remain in a stable vertical position. Any problem with the control — software or hardware issues, even transient delays — will cause the pendulum to fall. We consider a software-controlled inverted pendulum as a representative example of more complex control systems in safety-critical applications, like inside cars and drones.
We have developed a testbed (see https://github.com/ubc-systopia/inconcretes/tree/physical_ivp for details) consisting of an inverted pendulum and a fault-tolerant quadruple-modular redundant system to control the pendulum. That is, we use four nodes to control the pendulum, which can tolerate a range of failures in one or more nodes.
However, with multiple nodes, there arises classic distributed systems failure scenarios, such as distributed agreement (consensus) in the presence of faults. These need to be solved in a manner that does not hinder with the resource constraints of the embedded platform (limited memory, limited network bandwidth, strict timing issues, etc.).
Student Responsibilities:
The students will be tasked with primarily low-level systems engineering, after spending some time brainstorming the design. They can expect regular interaction with me (at least weekly) and also support from me in terms how how to proceed with the project, assistance on technical questions, etc. Plus, they will also be able to spend their time in Systopia, have a desk in our lab, and participate in all social and academic group activities in Systopia.
Qualifications:
The goal of this project is to extend our existing work on crash fault tolerance in our cyber-physical testbed to Byzantine fault tolerance. While the research corresponds to designing software systems primarily, and the hardware challenges in our testbed are mostly sorted, we expect the candidates to be comfortable working with the various electro-mechanical components in our testbed. We expect the candidates to ideally have some background on distributed systems, e.g., in the form of CPSC 416. It is preferred, but not expected, that the candidate also possess some knowledge of real-time systems or operating systems scheduling. The software system is built using C++. Hence, C/C++ skills are strongly recommended.
Work Setting:
- Expected on campus, some online work allowed
Project 2:
Redesigning distributed real-time systems for heterogeneous MPSoCs
Heterogeneous embedded platforms, such as the Zync UltraScale+ MPSoC, are increasingly being used to program safety-critical cyber-physical systems applications. We are especially interested in their real-time capabilities, as they possess separate real-time processors (ARM Cortex-R family) in addition to application processors (ARM Cortex-A family). The goal of this project is to identify design patterns for fault-tolerant real-time distributed systems on such heterogeneous processors. Specifically, given an implementation of a fault-tolerant distributed real-time system — such as systems like IGOR (https://par.nsf.gov/servlets/purl/10282881), In-ConcReTeS (https://arpangujarati.github.io/pdfs/rtss2022_paper.pdf), or Cascade (https://haeberlen.cis.upenn.edu/papers/cascade-rtas2020.pdf) — how can we refactor its design to work on a distributed system where each node is a heterogeneous platform?
The project will require understanding and working with open-source implementations of existing research prototypes, redesigning and reimplementing them (if needed), and porting them to the new platforms. The secondary goal will be an empirical evaluation of the new system design against the old one.
Student Responsibilities:
The students will be tasked with primarily low-level systems engineering, after spending some time brainstorming the design. They can expect regular interaction with me (at least weekly) and also support from me in terms how how to proceed with the project, assistance on technical questions, etc. Plus, they will also be able to spend their time in Systopia, have a desk in our lab, and participate in all social and academic group activities in Systopia.
Qualifications:
We expect the candidates to ideally have some background on distributed systems, e.g., in the form of CPSC 416. It is preferred, but not expected, that the candidate also possess some knowledge of real-time systems or operating systems scheduling. Most software systems of interest are built using C++. Hence, C/C++ skills are strongly recommended.
Work Setting:
Expected on campus, some online work allowed
- - -
Project: Unit Tests from Exploratory Tests
Abstract: The gold standard for software testing are scripted unit tests that can be automatically replayed using frameworks such as pytest and JUnit. The advantage of such scripted tests is that they can be run automatically after changes to code, ensuring the changes do not introduce bugs to the existing software system. However, writing unit tests requires some upfront effort from the developer in coding both (1) the input to the unit test and (2) test oracles that check the correctness of the test result.
For software projects where each unit has complicated, stateful inputs, this may pose a significant barrier to writing unit tests. Instead, developers may do something more akin to exploratory testing. In exploratory testing, developers may run a whole end-to-end run of the system, and add logging statements at relevant locations, manually checking whether the logging output “looks-right”. Or, they may manually call functions in an interactive shell, again relying on whether the output “looks-right”.
The goal of this project is to build tooling that helps developers go from exploratory tests to unit tests. The project would involve first collecting benchmarks (i.e., programs) where we may want to derive unit tests from exploratory tests. Then, the project would involve implementing the unit-test extraction tool. A first suggestion is to implement this for python, perhaps as a Jupyter notebook plugin, debugger plugin, or utility that can be used in iPython/the python shell. If time permits, we will also explore how to automatically create semantically meaningful test oracles from the “looks-right” property.
Student Responsibilities:
- Collect benchmark programs on which exploratory testing -> unit testing will be performed
- Investigate the front-end options to design the tool (e.g., Jupyter, python shell, etc)
- Implement the tool in the selected front-end option
- Evaluate the tool’s performance on the collected benchmark programs
Qualifications:
- Experience learning to use third-party code (in order to build the tool), reason about the relevance of programs to the benchmark suite, reason about relevant tests.
Work Setting:
- Expected on campus, some online work allowed
- - -
Dongwook Yoon is seeking undergraduate research interns to join their group for the spring and/or summer of 2024. Three openings:
- Deciphering the Underrepresented Dialogue: Understanding How Women and ESL Users Prompt ChatGPT
- Implementing LLM-Based Tutoring Chatbots in University Settings
- Enhancing AI-Integrated Curriculum in Computer Science and Data Science Courses
The application deadline is Jan 15th (Monday). In-person or hybrid work arrangements are preferred, while online work is possible. To apply, please check the "How to Apply" instructions in this link:
https://docs.google.com/document/d/1iRUvK5wGmIZY7ZKeWg-XWW3P1w1qF5rfMQhnbw2IQ7Y/
If you have already applied, there is no need to re-apply. If you are interested, please send a follow-up email expressing your interest. Various arrangements are possible, including paid RAship, USRA, Honours Thesis, or Directed Studies options.
Please check the project details and qualifications below.
Project 1:
Deciphering the Underrepresented Dialogue: Understanding How Women and ESL Users Prompt ChatGPT
In an era where Large Language Models (LLMs) like ChatGPT are becoming central to our work and learning, it is crucial to understand the diverse ways different demographic groups engage with these technologies. This project aims to bridge the knowledge gap in how women and English as Second Language (ESL) users prompt LLMs.
By conducting a controlled experiment with ESL Women, Native English Speaking Women, ESL Men, and Native English Speaking Men, we will collect and analyze data on how these groups interact with LLMs across a range of tasks. These tasks include generating stories, translating paragraphs, writing code, and summarizing complex texts.
Our comprehensive analysis will integrate both quantitative and qualitative methods, examining task completion times, satisfaction scores, and the socio-cultural nuances in LLM responses. This research will not only provide valuable insights into the inclusivity and fairness of LLMs but also contribute to the broader conversation about AI ethics and responsible technology use.
Student Responsibilities:
- Design and develop a full-stack data collection system to facilitate and record interactions between participants and ChatGPT.
- Recruit and coordinate with participants from different demographic groups, ensuring a diverse and representative sample for the study.
- Facilitate the experiment, guiding participants through a series of tasks with ChatGPT, including story generation, paragraph translation, coding, and text summarization.
- Collect and analyze data using quantitative methods, focusing on metrics like task completion times and satisfaction scores.
- Conduct qualitative analysis to understand the socio-cultural nuances in the prompts and responses of ChatGPT, paying special attention to the differences between demographic groups.
Qualifications:
- Interest or experience in human-AI interaction (HAI), such as prompt engineering
- Interested in the human side, not solely the technology, of human-AI interaction
- Basic web programming skills for developing a full-stack data collection system
- Strong analytical skills, comfortable with quantitative research methods
- (optional) Excellent communication and interpersonal skills for engaging with diverse participants
- (optional) Experience or background in natural language processing (NLP)
- (optional) Experiences in qualitative research method
Project 2:
Implementing LLM-Based Tutoring Chatbots in University Settings
Large Language Models (LLMs) like ChatGPT have the potential to revolutionize the field of education by offering AI-powered, personalized tutoring through interactive dialogues with students. This interdisciplinary research project aims to investigate the implications and effectiveness of deploying LLM-based tutoring chatbots in university contexts, addressing three research questions from Human-AI Interaction, Psychology, and Computational Social Science.
The study involves a participatory design approach with students and instructors to develop LLM-based tutoring chatbots that meet stakeholders' specific needs, mitigate LLM hallucination, overreliance, and cheating, and encourage wider acceptance. Furthermore, the project will examine the impact on teaching-learning environments, instructor-student interaction, and personalized feedback quality.
To evaluate the impact of chatbot usage on students' learning outcomes and academic performance, a series of iterative and incremental deployment studies will be conducted using the UBC campus as a "living lab." The research findings will inform educational workshops, a whitepaper, and policy guidelines, and the developed LLM-based tutoring chatbot will be released as open-source to promote transparency and further research.
Student Responsibilities:
- Develop and maintain a full-stack chatbot tutoring system, integrating LLM technology like ChatGPT for use in university settings.
- Collaborate with students and instructors to understand their needs and preferences, applying participatory design principles to customize the chatbot.
- Implement features in the chatbot to address common LLM issues like hallucination, overreliance, and potential for cheating.
- Conduct both quantitative and qualitative research to evaluate the impact of the chatbot on students' learning outcomes and academic performance.
- Participate in iterative and incremental deployment studies on the UBC campus, collecting and analyzing data to refine the chatbot system.
Qualifications:
- Strong programming skills for developing a full-stack chatbot tutoring system
- Analytical skills or experiences with either quantitative or qualitative research methods
- (optional) Technical skills and experiences in natural language processing
- (optional) Experience or interest in participatory design and user research methodologies.
Project 3:
Enhancing AI-Integrated Curriculum in Computer Science and Data Science Courses
The rapid advancement of AI tools, such as code auto-completion and data visualization assistants, has far-reaching implications for the future of computer science and data science education. This project aims to redesign the curricula of two target courses, CPSC 310: Introduction to Software Engineering, and DSCI 531: Data Visualization, to foster "Automation Resilience" among students through AI-integrated and AI-invariant learning outcomes.
By working closely with instructors, students, and stakeholders, the intern will contribute to key objectives, including adapting course content, promoting AI literacy, combating AI-enabled cheating, and establishing precedents for future curriculum enhancements. By participating in the project, the intern will gain valuable experience in identifying areas for AI tool integration, developing AI literacy tutorials, and designing AI-invariant assessment techniques.
Student Responsibilities:
- Collaborate with instructors and stakeholders to identify and implement AI tool integrations in CPSC 310 and DSCI 531 course curricula.
- Develop and integrate AI literacy tutorials and resources into the courses to enhance students' understanding and responsible use of AI tools.
- Design and implement AI-invariant assessment methods to ensure academic integrity and evaluate students' understanding without reliance on AI tools.
- Contribute to the creation of policy guidelines or best practices for the ethical use of AI tools in educational settings.
- Stay updated with the latest advancements in AI tools relevant to computer science and data science education, ensuring the curriculum remains cutting-edge.
Qualifications:
- Experience or interest in AI tools, such as code auto-completion and data visualization assistants
- Analytical skills or experiences with qualitative research methods
- Excellent communication and collaboration skills
- (optional) Successful completion of CPSC 310 or relevant courses
- (optional) Successful completion of DSCI 531 or data visualization courses
- - -
Project: An Integrated Simulation Environment for Self-Driving Laboratories
A robot arm simulator usually models only the robot arm and does not take into account nearby objects with which a robot arm interacts. These simulators also do not detect physical violations that may occur, such as a robot arm colliding with a nearby object or the platform on which the robot arm is mounted.
Our goal is to develop a 3D model of the dynamic/unknown physical environment surrounding a robot arm on a physical platform (e.g., using Simultaneous Localization and Mapping (SLAM) techniques). The modeling of the environment should include the robot arm, the platform, surrounding walls, and nearby objects of diverse geometries, such as cuboids, half-spheres, cylinders, etc. The modeling should be applicable to most robot arms. Additionally, we aim to develop code that detects collisions between the robot arm and its environment, as well as nearby objects. An extended goal is to encompass multiple robot arms in the same physical environment.
Student Responsibilities:
The student will work most closely with a PhD student, with at least weekly meetings with two faculty members and additional research staff. The student will identify existing techniques for automatically and efficiently modeling a 3D environment and develop a general-purpose framework for interfacing with existing robot arm simulators and the 3D environment.
Qualifications:
- The ideal student will have excellent ability in writing Python and will have completely CPSC 210. Having taken 310 or 425 would be considered a plus.
Work Setting:
- This is an in-person position.
- - -
Project: Improve the Security of the eBPF Framework.
The eBPF framework allows users to submit code to be executed by the Linux kernel (and soon Windows) when specified events occur. The eBPF framework is widely used in industry to observe deployed systems' inner workings and customize their behaviours. However, it has been plagued by the discovery of many vulnerabilities. You will join an ongoing research project to improve the framework's security. You will be expected to work alongside other graduate and undergraduate students.
The project affords the opportunities to learn more about Linux kernel development and to gain familiarity with operating systems development. The project will include exposure to the research process.
Qualifications:
- >=A in CPSC 213 and CPSC 313 needed; >=A in CPSC 436A would be a plus.
- Strong C skills.
- Comfortable with the prospect of going through CPUs’ technical documentation.
- (optional) Kernel development experience.
- (optional) Some familiarity with assembly language (x86 or ARM).
Work setting:
On campus, no remote option