Introduction to quantum computing with Q# and QDK This book introduces the fundamentals of the theory of quantum computing illustrated with code samples written in Q# a quantum specific programming language and its related Quantum Development Kit. Quantum computing (QC) is a multidisciplinary field that sits at the intersection of quantum physics quantum information theory computer science and mathematics and which may revolutionize the world of computing and software engineering. The book begins by covering historical aspects of quantum theory and quantum computing as well as offers a gentle algebra based introduction to quantum mechanics specifically focusing on concepts essential for the field of quantum programming. Quantum state description state evolution quantum measurement and the Bell’s theorem are among the topics covered. The readers also get a tour of the features of Q# and familiarize themselves with the QDK. Next the core QC topics are discussed complete with the necessary mathematical formalism. This includes the notions of qubit quantum gates and quantum circuits. In addition to that the book provides a detailed treatment of a series of important concepts from quantum information theory in particular entanglement and the no cloning theorem followed by discussion about quantum key distribution and its various protocols. Finally the canon of most important QC algorithms and algorithmic techniques is covered in depth from the Deutsch Jozsa algorithm through Grover’s search to Quantum Fourier Transform quantum phase estimation and Shor’s algorithm. The book is an accessible introduction into the vibrant and fascinating field of quantum computing offering a blend of academic diligence with pragmatism that is so central to software development world. All of the discussed theoretical aspects of QC are accompanied by runnable code examples providing the reader with two different angles mathematical and programmatic of looking at the same problem space. .