The course will provide the fundamentals of machine learning to the students. The following main difference will be introduced: 1) prediction Vs. classification and 2) supervised against unsupervised approaches. For each of such categories, the state of the art algorithms will be presented and discussed following a logic scheduling that goes from simple issues to the most recent advances in data analytics and deep learning. The course foresees both lab. sessions and exercises that will allow to implement the algorithm presented during the theoretical classes. Limits and characteristic of each algorithm will be deeply analysed.