Partial evaluation reconciles generality with efficiency by providing automatic specialization and optimization of programs. Proceeding from a gentle introduction for reaching state-of-the-art techniques, this book covers the entire field of partial evaluation. It provides simple and complete algorithms and demonstrates, via examples, that specialization can increase efficiency considerably. This book is intended for final year undergraduate and postgraduate courses in advanced programming languages, partial evaluation and program transformation.