  Resilient cyber-physical systems comprise computing systems able to
continuously interact with the physical environment in which they operate,
despite runtime errors. The term resilience refers to the ability to cope with
unexpected inputs while delivering correct service. Examples of resilient
computing systems are Google's PageRank and the Bubblesort algorithm.
Engineering for resilient cyber-physical systems requires a paradigm shift,
prioritizing adaptability to dynamic environments. Software as a tool for
self-management is a key instrument for dealing with uncertainty and embedding
resilience in these systems. Yet, software engineers encounter the ongoing
challenge of ensuring resilience despite environmental dynamic change. My
thesis aims to pioneer an engineering discipline for resilient cyber-physical
systems. Over four years, we conducted studies, built methods and tools,
delivered software packages, and a website offering guidance to practitioners.
This paper provides a condensed overview of the problems tackled, our
methodology, key contributions, and results highlights. Seeking feedback from
the community, this paper serves both as preparation for the thesis defense and
as insight into future research prospects.
