  Optimization underpins many of the challenges that science and technology
face on a daily basis. Recent years have witnessed a major shift from
traditional optimization paradigms grounded on batch algorithms for
medium-scale problems to challenging dynamic, time-varying, and even huge-size
settings. This is driven by technological transformations that converted
infrastructural and social platforms into complex and dynamic networked systems
with even pervasive sensing and computing capabilities. The present paper
reviews a broad class of state-of-the-art algorithms for time-varying
optimization, with an eye to both algorithmic development and performance
analysis. It offers a comprehensive overview of available tools and methods,
and unveils open challenges in application domains of broad interest. The
real-world examples presented include smart power systems, robotics, machine
learning, and data analytics, highlighting domain-specific issues and
solutions. The ultimate goal is to exempify wide engineering relevance of
analytical tools and pertinent theoretical foundations.
