Machine learning deals with the issue of how to build computer programs that improve their performance at some tasks through experience. Machine learning algorithms have proven to be of great practical value in a variety of application domains. Not surprisingly, the field of software engineering turns out to be a fertile ground where many software development and maintenance tasks could be formulated as learning problems and approached in terms of learning algorithms. This book deals with the subject of machine learning applications in software engineering. It provides an overview of machine learning, summarizes the state-of-the-practice in this niche area, gives a classification of the existing work, and offers some application guidelines. Also included in the book is a collection of previously published papers in this research area.