# 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.

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.

## 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.