Quantum Algorithms, Architecture, And Error Correction