This book bridges the gap between two communities that could have an enormous impact on each other if techniques and knowledge were properly shared between them. They are the Artificial Intelligence Machine Learning community and the Software Agent community. Although some books from both camps tackle the area of overlap in individual chapters, this is the first to provide a comprehensive tutorial-style reference on how to apply techniques and practices from each discipline to solve common problems. The question of how to program the ability to learn into agents and multi-agent systems is becoming vitally important in a world where the magnitude and complexity of available information is too overwhelming for human users to get to grips with, where we will rely more and more on agent technology to carry out every day tasks.