Quantum Computing and Communication