The foundation of many significant fields of contemporary technology, including bioinformatics, computational neuroscience, communication, signal processing, data mining, machine learning, pattern recognition, and cryptography, is information theory and inference, which are taught together in this fascinating textbook. The theory is introduced in the book along with some applications. Practical communication systems like arithmetic coding for data compression and sparse-graph codes for error-correction are taught alongside information theory. Applications to neural networks, convolutional codes, clustering, independent component analysis, and so on are developed alongside inference techniques, such as variational approximations, Monte Carlo methods, and message-passing algorithms. The book is unique in that it covers the most recent error-correcting codes, such as digital fountain codes, turbo codes, and low-density-parity-check codes, which are the standards for disk drives, satellite communications, and data broadcast in the twenty-first century. The book is well-illustrated, has over 400 exercises with detailed solutions, worked examples, and is perfect for both undergraduate and graduate courses as well as self-study. Additionally, it offers professionals in fields as diverse as computational biology, financial engineering, and machine learning an unmatched entry point.