Cyber-physical systems are computer systems that interact with the physical world. Examples of such systems are autonomous cars, robots, medical devices, etc. These systems contain embedded software and hardware components that access physical data through sensors, compute and communicate, and affect the physical system through actuators. While they can enable many beneficial applications, their design presents many challenges because of their complexity and safety requirements. We describe some major challenges in developing high-assurance cyber-physical systems in a cost-effective manner.