Quantum Computing And Communications An Engineering Approach