Quantum Computing An Introduction