In theory, quantum computers can be used to efficiently factor numbers, quadratically speed up many search and optimization problems, and enable currently impossible physics simulations. At first, quantum states appeared to be too fragile for implementing large quantum computers. Fortunately, because of theoretical advances in quantum error correction and fault tolerance, there are now no fundamental obstacles to realizing quantum computers. However, building quantum computers is difficult. Current experiments can barely achieve adequate control of two quantum bits. Nevertheless, the gap between theoretical and practical quantum computing is closing. In what follows, I give a brief explanation of what quantum computers are, explain why we believe that arbitrarily large quantum computations can be accurately implemented in principle, and survey the experimental state of the art and main implementation challenges.