My research focuses on the design of quantum error correction protocols for fault-tolerant quantum computing. The development of full-scale quantum computers is hindered by the fact that qubits are constructed using inherently unstable quantum systems such as photons, ions, or electrons. As it stands, the most advanced quantum logic gates are over a trillion times less reliable than a typical transistor gate in a modern CPU! The goal of quantum error correction is to devise robust architectures that allow quantum computers to function reliably despite such qubit imperfections.At the Quantum Software Lab, I investigate how quantum error correction protocols can be incorporated into the quantum computing software stack. My work involves the design of efficient and flexible algorithms, as well as the development of automated compilation routines that translate high-level descriptions of quantum algorithms into fault-tolerant circuits. Such tools enable quantum software developers to precisely determine the resources required to run their algorithms, and therefore more objectively assess whether quantum advantage is achieved over classical methods.