The Principles of Quantum Computing