Quantum Computers: Theory and Algorithms