  In this thesis we examine a variety of techniques for reducing the resources
required for fault-tolerant quantum computation. First, we show how to simplify
universal encoded computation by using only transversal gates and standard
error correction procedures, circumventing existing no-go theorems. We then
show how to simplify ancilla preparation, reducing the cost of error correction
by more than a factor of four. Using this optimized ancilla preparation, we
develop improved techniques for proving rigorous lower bounds on the noise
threshold.
  Additional overhead can be incurred because quantum algorithms must be
translated into sequences of gates that are actually available in the quantum
computer. In particular, arbitrary single-qubit rotations must be decomposed
into a discrete set of fault-tolerant gates. We find that by using a special
class of non-deterministic circuits, the cost of decomposition can be reduced
by as much as a factor of four over state-of-the-art techniques, which
typically use deterministic circuits.
  Finally, we examine global optimization of fault-tolerant quantum circuits
under physical connectivity constraints. We adapt techniques from VLSI in order
to minimize time and space usage for computations in the surface code, and we
develop a software prototype to demonstrate the potential savings.
