Algorithms for Near-Term and Noisy Quantum Devices