Foundations of Quantum Programming, Second Edition provides a systematic exposition of the subject of quantum programming. Emphasis is placed on foundational concepts, methods, and techniques that can be widely used for various quantum programming models and languages. The book describes how programming methodologies developed for current computers can be extended for quantum computers, along with new programming methodologies that can effectively exploit the unique power of quantum computing. In addition, this resource introduces a chain of quantum programming models from sequential to parallel and distributed programming in the paradigm of superposition-of-data to the paradigm of superposition-of-programs. Final content presents a series of logical and mathematical tools for verification and analysis of quantum programs, including invariant generation, termination analysis, and abstract interpretation.