Quantum software and algorithms research
The QSAR group works on designing and implementing the software that
enables us to write and run algorithms on quantum computers. It was
established in 2022 in the Department of Electrical and Computer
Engineering at UBC, and is a part
of Quantum BC.
Group members work on a broad array of research projects which
typically fall into one of the following categories: quantum software
and compilation, noise characterization and mitigation, and quantum algorithm
Software and compilation
Quantum compilation is the process of translating a high-level
description of a quantum algorithm into a set of instructions that
is executed on hardware. It's a process with many moving parts
that typically involve solving computationally hard problems.
Areas of investigation include:
- Developing automated compilation tools that scale into the
100s of qubits or more
- Optimizing techniques for cutting and partitioning large
- Exploring how machine learning and can help us select the
best compilation techniques and devices for an algorithm
- Leveraging differentiable quantum programming
to learn how to compile quantum circuits, and do so in a
way that preserves differentiability
Ultimately, we are interested in doing the "hard part" (such as
the optimization process in the gif below), so that users of quantum
software don't need to worry about what happens under the hood, and
can focus instead on writing quantum algorithms.
Noise characterization and mitigation
In order to improve the operation of our quantum computers, we
need good tools to learn about and characterize their behaviour, and
quantify how well they work. We are interested in:
- Designing adaptive methods for quantum tomography that can learn to characterize and mimic the behaviour of processors
- Applying noise characterization and calibration data to improve compilation and algorithm execution
- Optimizing the application of error mitigation processes and exploring how they interact with algorithmic components such as compilation and gradient computation.
Compared to classical computing, there are relatively few known
quantum algorithms, and even fewer that will one day achieve the
substantial speedups needed to solve life-sized problems.
group works on both co-designing and implementing software that
facilitates our reasoning about algorithms, and exploring how it can be used
to develop new algorithms and applications.
Projects our members are working on include:
- Developing qutrit and qudit simulation tools for the
open-source framework PennyLane
- Exploring the use of higher-level quantum systems like
qutrits and qudits for variational algorithms
- Applying quantum computing and quantum machine learning to
problems in nuclear, particle, and condensed-matter
- Development and implementation of new differentiable quantum
- Abhishek Abhishek (MASc student)
- Gabe Bottrill (undergraduate researcher)
- Gideon Uchehara (co-supervised PhD student)
- Mushahid Khan (PhD student)
For prospective graduate students
I am no longer accepting applications from prospective graduate
students for a Fall
2023/Winter 2024 start.
For UBC undergraduate students
Due to an influx of new graduate students in Fall 2023, I will
not be accepting undergraduates for either thesis or directed
studies courses in Fall 2023 and Winter 2024 terms. Please check
back at a later date for information about Summer 2024 positions.
Group code of conduct
All QSAR group members are expected to uphold the following codes of
professional and scientific conduct. The text below is partially
based on CoCs of the
The CoC was last updated on 2022-12-11. As a group, we will review
and update it together on at least a yearly basis (in particular,
following an influx of new members) so that everyone
has the opportunity to contribute their ideas.
- You work with the group, not for the group.
All group members, regardless of their academic status, are
independent researchers in training. Everyone comes with their own skill
set and experience, and contributes their unique perspective to the work
that we do. We work together and do not compete with each other.
- Be professional with everyone. Treat other group members
and your shared space with respect. Ensure everyone has the chance
to speak during group meetings, and be mindful of interrupting or
talking over others. Our work hours are flexible, so be considerate
of the time and schedules of your colleagues. When you are
collaborating with others, giving a talk, or at a conference, you
are out representing our group. Conduct yourself in the same
professional manner as you would within the group, regardless of
where you are and who you are with, and follow the CoCs in place at events.
- Harassment will not be tolerated. There is zero
tolerance for exclusionary comments or jokes, threats, or
violent behaviour or language. Offensive behaviour or comments of
any kind relating to gender, gender identity and expression, sexual
orientation, disability, mental illness, neuro(a)typicality,
physical appearance, body size, age, race, ethnicity, religion,
lifestyle choices, etc. are not welcome in our group. Please do not take
photographs of others, share their work, or post
personally-identifying information online without their explicit
- Ask for help when needed, and provide it willingly.
Everyone is here to learn, so ask lots of questions! When you
receive questions, respond to them respectfully without putting the
other person down; focus on helping the other person learn how to do
something, rather than simply doing it for them. Be mindful of
people's time: if your question is something a quick online search
will resolve, do so before reaching out.
- Provide constructive feedback. Feedback is meant to help
someone improve. Identify errors when they occur, and make direct
and honest suggestions where appropriate (including to the group
lead!). Make feedback about the work, not the person. This includes
discussions about the work of others.
- We share our data and code. We post preprints on
the arXiv so that our work is available to everyone. We publish our source
code and data under permissive licenses on GitHub or other
code-sharing platforms. We also prioritize the use of open-source
libraries in our work, and contribute back to them when
- We conduct our work with integrity. Never falsify,
make omissions, or otherwise manipulate your code or data. Our work
should be reproducible by others in the field, and we should provide
all that is needed to enable that.
- We collaborate. This includes with other research groups
at UBC and beyond,
companies, and online communities. We treat
confidential information obtained during collaborations with utmost
care. If you wish to establish collaborations with an external
party, great! Please initiate a discussion with the group lead
- We provide proper attribution. Always cite your sources and
images in your written work and presentations, even if that source
is yourself. When using external libraries in your project, make
sure to check the licenses.
- It's okay to make mistakes. Everyone makes them, this is
how we learn. It is important to be open and honest about them,
accept responsibility, and we will work together to resolve