Quantum computing is at an inflection point, where 50-qubit (quantum bit) machines have been built, 100-qubit machines are just around the corner, and even 1000-qubit machines are perhaps only a few years away. These machines have the potential to fundamentally change our concept of what is computable and demonstrate practical applications in areas such as quantum chemistry, optimization, and quantum simulation.

Yet a significant resource gap remains between practical quantum algorithms and near-term machines. Programming, compilation and control will play a key role in increasing the efficiency of algorithms and machines to close this gap.

I will outline the grand research challenges in closing this gap, including programming language design, software and hardware verification, defining and perforating abstraction boundaries, cross-layer optimization, managing parallelism and communication, mapping and scheduling computations, reducing control complexity, machine-specific optimizations, and many more. I will also describe the resources and infrastructure available for tackling these challenges.