  The field of quantum computing is at an exciting time where we are
constructing novel hardware, evaluating algorithms, and finding out what works
best. As qubit technology grows and matures, we need to be ready to design and
program larger quantum computer systems. An important aspect of systems design
is layered abstractions to reduce complexity and guide intuition. Classical
computer systems have built up many abstractions over their history including
the layers of the hardware stack and programming abstractions like loops.
Researchers initially ported these abstractions with little modification when
designing quantum computer systems and only in recent years have some of those
abstractions been broken in the name of optimization and efficiency. We argue
that new or quantum-tailored abstractions are needed to get the most benefit
out of quantum computer systems. We keep the benefits gained through breaking
old abstraction by finding abstractions aligned with quantum physics and the
technology. This dissertation is supported by three examples of abstractions
that could become a core part of how we design and program quantum computers:
third-level logical state as scratch space, memory as a third spacial dimension
for quantum data, and hierarchical program structure.
