Use for questions about teaching quantum computing in computer science questions. Don't use for questions about quantum computing itself - those questions belong on another site, probably Mathematics, Physics, or Computer Science.

Quantum computing is a method of computing making use of quantum mechanical effects to make the solving of some problems more efficient.

Theory

As a classical computer is composed of bits, which can be 0 or 1, a quantum computer is composed of quantum bits, or qubits. They can be 0, 1, or anywhere inbetween. Because quantum computing is based on quantum mechanics, much of the math behind quantum computing can be represented using linear algebra. The inbetween states can thus be represented as linear combinations of the basis states $|0\rangle$ and $|1\rangle$, so a state $|\psi\rangle$ of a qubit can be written $|\psi\rangle = \alpha|0\rangle+\beta|1\rangle$.

Since states of qubits can be represented as vectors, the gates applied to them can be represented as linear transformations, or matrices. As all gates in classical computing can be constructed from a few gates, all gates in quantum computing can be constructed from single-qubit gates and the controlled-NOT or CNOT gate. Single qubit gates include the NOT gate, the Hadamard gate, phase shift gates, and others.

Construction

Circuit-based

There are many different ways to construct a quantum computer, called realizations. Among these include various forms of optical quantum computing, using photons to represent qubits and optical components such as phaseshifters, beamsplitters, and sometimes nonlinear components like Kerr media and Fabry-Perot cavities.

Another popular type is ion trap quantum computing, which uses ions trapped by complex electromagnetic fields. Lasers manipulate the state of the ions, which act as qubits. Another type is nuclear magnetic resonance computing, which uses the spins of nuclei to represent qubits. Besides these, there are many other types of quantum computing, using quantum dots, superconduction, or other methods.

Another important consideration is noise and decoherence. Due to these, error-correction schemes have been created to account for changes in qubits' state.

Adiabatic

Another type of quantum computing is adiabatic quantum computing, which is very different from the types described so far. It finds the minima of systems to find the solution. This could be useful in problems such as the traveling salesman problem.

Usefulness

While you will never use a quantum computer to check your email, several algorithms have been created which make quantum computers impressively useful, such as Shor's algorithm, which can find the prime factorization of numbers in polynomial time, revolutionizing the field of cryptography. Grover's algorithm can more efficiently search databases.