Over the last decade, Approximate Message Passing (AMP) algorithms have become extremely popular in various structured high-dimensional statistical problems. Many of the original ideas of AMP were developed in the physics and engineering literature and have recently been extended for use in computer science and machine learning. In this tutorial the authors give a comprehensive and rigorous introduction to what AMP can offer, as well as to unifying and formalizing the core concepts within the large body of recent work in the area. They lead the reader through the basic concepts of AMP before introducing the concept of low-rank matrix estimation. The authors conclude by covering generalized models. To complete the picture for researchers, proofs, technical remarks and mathematical background are also provided. This tutorial is an in depth introduction to Approximate Message Passing for students and researchers new to the topic.