This book is concerned with the models of quantum computation. Information processing based on the rules of quantum mechanics provides us with new opportunities for developing more efficient algorithms and protocols. However, to harness the power offered by quantum information processing it is essential to control the behavior of quantum mechanical objects in a precise manner. As this seems to be conceptually difficult at the level of quantum states and unitary gates, high-level quantum programming languages have been proposed for this purpose.The aim of this book is to provide an introduction to abstract models of computation used in quantum information theory. Starting from the abstract models of Turing machine and finite automata, we introduce the models of Boolean circuits and Random Access Machine and use them to present quantum programming techniques and quantum programming languages.Table of Contents: Introduction / Turing machines / Quantum Finite State Automata / Computational Circuits / Random Access Machines / Quantum Programming Environment / Quantum Programming Languages / Imperative quantum programming / Functional Quantum Programming / Outlook