The LLL algorithm is a polynomial-time lattice reduction algorithm, named after its inventors, Arjen Lenstra, Hendrik Lenstra and LAszlA3 LovAsz. The algorithm has revolutionized computational aspects of the geometry of numbers since its introduction in 1982, leading to breakthroughs in fields as diverse as computer algebra, cryptology and algorithmic number theory. This book consists of 15 survey chapters on computational aspects of Euclidean lattices and their main applications. Topics covered include polynomial factorization, lattice reduction algorithms, applications in number theory, integer programming, provable security, lattice-based cryptography and complexity. The authors include many detailed motivations, explanations and examples, and the contributions are largely self-contained. The book will be of value to a wide range of researchers and graduate students working in related fields of theoretical computer science and mathematics.