Independent Study Projects
We have a number of spots open for independent study projects at the BS and MS level. They are grouped by topic, and you should feel free to suggest projects of your own even if they are not listed on this page.
If you are uncertain about your own skills, consider looking up the resources we have prepared on both the quantum information and programming and software development. These cover skills you would need to succeed at an independent study project. Developing these skills can very much be a part of these independent studies, not something you have to master in advance.
We are also involved with the Google (and Julia) Summer of Code programs (on Clifford circuit simulation and Quantum Optics) and we run a number of open-source bounty programs. Such projects can also be done as independent studies or as paid student jobs, depending on your interest and context. One of the goals of such projects is to introduce more folks to the open-source community, so do not hesitate to reach out if you are a novice.
If you are interested in any of these projects, contact Prof. Krastanov at skrastanov@umass.edu.
You can also see a list of past projects.
Open-Source Contribution Opportunities
Our group is heavily committed to contributing back to the open source community. Here are many ways in which you can join in on the fun and hone your skills.
Bug bounty program
For a detailed listing see the list of all bug bounties. The QuantumSavory open source organization is continuously running bounties for bug fixes and enhancements to the tools we are developing. The goal of this program is three-fold: building community; providing opportunities for novices; creating better software.
Recommended Skills: Comfort with git-based workflows, some knowledge of the appropriate programming language.
Coding projects in Clifford circuit simulation
For a detailed listing see the JSoC page on QuantumClifford.jl. Clifford circuits are a class of quantum circuits that can be simulated efficiently on a classical computer. As such, they do not provide the computational advantage expected of universal quantum computers. Nonetheless, they are extremely important, as they underpin most techniques for quantum error correction and quantum networking. Software that efficiently simulates such circuits, at the scale of thousands or more qubits, is essential to the design of quantum hardware. The QuantumClifford.jl Julia project enables such simulations.
Recommended Skills: Comfort with git-based workflows, some knowledge of the appropriate programming language, and understanding of simple Clifford circuits.
Coding projects in Quantum simulation
For a detailed listing see the JSoC page on QuantumOptics.jl. The most common way to represent and model quantum states is the state vector formalism (underlying Schroedinger's and Heisenberg's equations as well as many other master equations). The QuantumOptics.jl Julia project enables such simulations, utilizing much of the uniquely powerful DiffEq infrastructure in Julia.
Recommended Skills: Comfort with git-based workflows, some knowledge of the appropriate programming language, and understanding of simple Clifford circuits.
Analog Quantum Hardware Simulations
Project related to the detailed wavefunction simulations of quantum hardware.
Library of Quantum Hardware Realizations
The proper description of a piece of quantum computing hardware needs to account for the imperfections of the hardware, namely the noise experienced due to interactions with the environment. Most published works on experimental realizations of quantum registers specify various noise parameters, that one can use to simulate the hardware. This project would entail performing an exhaustive bibliographical study of the literature on experimental realization of quantum computation, and the compilation of a database describing the capabilities of such hardware.
Recommended Skills: Basic knowledge on the description of quantum hardware.
Expander Graphs and LDPC Quantum Error Correction
Projects related to the generation of "Low Density Parity Check" codes for quantum error correction, tangentially related to graph theory and the generation of expander graphs.
Generating Expander Graphs and Error Correcting Codes
Error correcting codes are a group of techniques that permit encoding information in a protected redundant fashion, thus enabling reconstructing damaged records. Error correcting codes are usually represented as a set of linear equations that are fulfilled by the physical bits. These linear constraints can be generated in a variety of ways – particularly good codes have been generated by using expander graphs as a guide to which qubits to be "connected" by a constraint. This project endeavors to generate many such classes of expander graphs and LDPC error correcting codes.
Recommended Skills: Knowledge of linear algebra and some basic group theory and graph theory skills.
Tools for simulation of Quantum Clifford Circuits
Clifford circuits are a class of quantum circuits that can be simulated efficiently on a classical computer. As such, they do not provide the computational advantage expected of universal quantum computers. Nonetheless, they are extremely important, as they underpin most techniques for quantum error correction and quantum networking. Software that efficiently simulates such circuits, at the scale of thousands or more qubits, is essential to the design of quantum hardware. The QuantumClifford.jl Julia project enables such simulations.
GPU accelerated simulator of Clifford Circuits
Simulation of Clifford circuits involves significant amounts of linear algebra with boolean matrices. This enables the use of many standard computation accelerators like GPUs, as long as these accelerators support bit-wise operations. The main complications is that the elements of the matrices under consideration are usually packed in order to increase performance and lower memory usage, i.e. a vector of 64 elements would be stored as a single 64 bit integer instead of as an array of 64 bools. A project could consist of implement the aforementioned linear algebra operations in GPU kernels, and then seamlessly integrating them in the rest of the QuantumClifford library. At a minimum that would include Pauli-Pauli products and certain small Clifford operators, but could extend to general stabilizer tableau multiplication and even tableau diagonalization.
Recommended Skills: Basic knowledge of the stabilizer formalism used for simulating Clifford circuits. Familiarity with performance profiling tools in Julia and Julia's GPU stack, including KernelAbstractions and Tullio.
Pauli Frames for faster sampling
Often, stabilizer circuit simulations are structured as a repeated simulation of the same circuit with random Pauli errors superimposed on it. This is useful, for instance, when studying the performance of error-correcting codes. In such simulations it is possible to run one single relatively expensive simulation of the noise-less circuit in order to get a reference and then run a large number of much faster "Pauli Frame" simulations that include the random noise. By utilizing the reference simulation, the random noise simulations could more efficiently provide samples of the performance of the circuit under noise. This project would involve creating an API for such simulations in QuantumClifford.jl. A useful reference would be the Stim C++ library.
Recommended Skills: Knowledge of the stabilizer formalism used for simulating Clifford circuits. Familiarity with performance profiling tools in Julia.
A Zoo of Quantum Error Correcting codes
Quantum Error Correcting codes are typically represented in a form similar to the parity check matrix of a classical code. This form is called a Stabilizer tableaux. This project would involve creating a comprehensive library of frequently used quantum error correcting codes. As an initial step that would involve implementing the tableaux corresponding to simple pedagogical codes like the Steane and Shor codes, toric and surface codes, some CSS codes, etc. The project can be extended to a much longer one by including work on decoders for some of these codes. A large part of this project would involve literature surveys.
Recommended Skills: Knowledge of the stabilizer formalism used for simulating Clifford circuits.
Left/Right multiplications with small gates
Applying an n-qubit Clifford gate to an n-qubit state (tableaux) is an operation similar to matrix multiplication, requiring O(n^3) steps. However, applying a single-qubit or two-qubit gate to an n-qubit tableaux is much faster as it needs to address only one or two columns of the tableaux. This project would focus on extending the left-multiplication special cases already started in symbolic_cliffords.jl and creating additional right-multiplication special cases (for which the Stim library is a good reference).
Recommended Skills: Knowledge of the stabilizer formalism used for simulating Clifford circuits. Familiarity with performance profiling tools in Julia. Understanding of C/C++ if you plan to use the Stim library as a reference.
Tools for simulation of Gaussian Quantum Optics
Similarly to Clifford circuits, Gaussian quantum optics does not provide computational advantage and is easy to simulate on a classical computer, but it is an important building block of quantum hardware. Gaussian Quantum Information in Rev. Mod. Phys. is a good overview.
Implementing a simple simulator
A gaussian quantum state of multiple oscillators can be represented as a simple matrix containing most of the information about the state of the light in each oscillator. Similarly, various operations, like beam splitters, squeezing, decay, etc, can be represented as linear operations on that matrix. This project would entail creating a convenient API for such operations.
Recommended Skills: Good linear algebra skills.