Quantum computing theory