Daniel Fremont is an Assistant Professor of Computer Science and Engineering at UC Santa Cruz. He uses automated reasoning to improve the reliability of software, hardware, and cyber-physical systems, particularly those with machine learning components. He develops algorithms for system design, verification, and testing, as well as theory for the core computational problems underlying them. He leads the development of the Scenic probabilistic programming language for design and verification of autonomous cyber-physical systems, which he has applied to self-driving cars, aircraft, robots, and other systems. Another focus of his work is algorithmic improvisation, a theory allowing systems to use randomness for robustness, variety, or unpredictability with provable correctness guarantees; applications include randomized robotic planning, software fuzz testing, and systematically training machine learning models.