An Introduction to Quantum Computing for Non-Physicists