This text draws on the research developments in three broad areas: linear and integer programming, numerical analysis and the computational architectures which enable speedy, high-level algorithm design. Since the 1990s, a new body of research within the field of optimization research has emerged, which seeks to develop good approximation algorithms for classes of linear programming problems. This work has roots in fundamental areas of mathematical programming and is also framed in the context of the modern theory of algorithms. The result of this work has been a family of algorithms with solid theoretical foundations and with growing experimental success. This book examines these algorithms, starting with some of the very earliest examples through to the latest theoretical and computational developments.