The needs of future digital data and computer systems are expected to be two to three orders of magnitude larger than for today's systems, to take account of unprecedented amounts of heterogeneous hardware, lines of source code, numbers of users, and volumes of data. Ultrascale computing systems (UCS) are a solution. Envisioned as large-scale complex systems joining parallel and distributed computing systems, which can be located at multiple sites and cooperate to provide the required resources and performance to the users, these technologies will extend individual systems to provide the resources that are very much needed. Based on the research work in the COST Action IC 1305 Network for Sustainable Ultrascale Computing (NESUS) this book presents important results and methods towards achieving sustainable UCS. The authors present a wide range of emerging programming models that facilitate the task of scaling and extracting performance on continuously evolving platforms, while providing resilience and fault-tolerant mechanisms to tackle the increasing probability of failures throughout the entire software stack. These methods are needed to achieve scale handling, better programmability and adaptation to rapidly changing underlying computing architecture, data centric programming models, resilience, and energy-efficiency.