  To successfully execute large-scale algorithms, a quantum computer will need
to perform its elementary operations near perfectly. This is a fundamental
challenge since all physical qubits suffer a considerable level of noise.
Moreover, real systems are likely to have a finite yield, i.e. some non-zero
proportion of the components in a complex device may be irredeemably broken at
the fabrication stage. We present a threshold theorem showing that an
arbitrarily large quantum computation can be completed with a vanishing
probability of failure using a two-dimensional array of noisy qubits with a
finite density of fabrication defects. To complete our proof we introduce a
robust protocol to measure high-weight stabilizers to compensate for large
regions of inactive qubits. We obtain our result using a surface code
architecture. Our approach is therefore readily compatible with ongoing
experimental efforts to build a large-scale quantum computer.
