My research focuses on understanding and developing computational methods for learning from small and large samples of complex, high dimensional data. Learning is considered key for understanding human and machine intelligence. A computational scheme able to acquire knowledge and decision making skills cannot simply memorize the data. Rather, it must be able to learn, that is to efficiently process and summarize the flood of available information coming from sensory/data acquisition systems. At its core, learning is an inference problem from random, high dimensional, noisy data. I am interested into the principles that allow to learn from small as well as massive samples of data and into the computational schemes that implement these principles. I pursue these questions using analytical, numerical and probabilistic tools, within a multidisciplinary approach drawing concepts and techniques primarily from computer science but also from statistics, engineering and applied mathematics. Applications in robotics, computer vision and computational neuroscience motivate the computational learning schemes I study and provide a natural ground to test their properties.