Thanks to advances in computational power and miniaturisation, software is increasingly embedded in infrastructures and industrial processes in order to boost efficiency, safety, and production. In this context it is now qualified as cyber-physical to emphasise its usual tight interaction with physical processes (such as velocity, movement, and temperature), and to sign a shift from usual software engineering practices to a more multifaceted view that combines computer science, control theory, and analysis. Actually, there has been important progress in the development of mathematical foundations for cyber-physical systems. Existing results typically take the form of a hybrid process algebra, intuitively adding the notion of a differential equation to an existing, well-established process algebra. However, the fact that computational processes are intermixed with physical ones raises challenging aspects that severely hinder these results as foundations for an engineering discipline of cyber-physical software. Specifically, the latter brings an inherent layer of uncertainty, due to noise in sensors and actuators. Moreover, it requires notions of behavioural distance for realistically comparing two systems in a algebraic, rigorous way. The goal of this project is therefore to develop the mathematical foundations of cyber-physical programming by taking into account the quantitative aspects discussed above: uncertainty and behavioural distance. Note that our goal is not develop a specific programming language for cyber-physical systems, but rather to focus on core, semantic foundations and calculi which will then serve as basis for developing such languages.