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.