https://medium.com/@monocosmo77/understanding-cyber-physical-systems-part2-computer-science-a77b5df42b6a