Quantum computing aims to utilize quantum properties of matter to efficiently solve problems that classical computing systems would take too long to solve. This course reviews modern quantum computing architectures and algorithms for these platforms. We focus on mapping of optimization and machine learning problems onto Noisy-Intermediate-Scale Quantum (NISQ) architectures and also discuss how to leverage state-of-the-art classical simulation methods for quantum-inspired algorithms. We review several modern NISQ architectures and associated software interfaces, we analyze performance for optimization and statistical sampling. We survey current literature to review and implement methods for mapping optimization and machine learning problems onto NISQ architectures and modern simulators and use them to solve and study example problems.