A Learning algorithm which agrees withe the training data. That is it assigns the right label for all the training data (assuming the functions are deterministic)