Machine learning is the study of how to build computer programs that improve their performance
at some task through experience. The hallmark of machine learning is that it results
in an improved ability to make better decisions. 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.