  Differential privacy is a formal, mathematical definition of data privacy
that has gained traction in academia, industry, and government. The task of
correctly constructing differentially private algorithms is non-trivial, and
mistakes have been made in foundational algorithms. Currently, there is no
automated support for converting an existing, non-private program into a
differentially private version. In this paper, we propose a technique for
automatically learning an accurate and differentially private version of a
given non-private program. We show how to solve this difficult program
synthesis problem via a combination of techniques: carefully picking
representative example inputs, reducing the problem to continuous optimization,
and mapping the results back to symbolic expressions. We demonstrate that our
approach is able to learn foundational algorithms from the differential privacy
literature and significantly outperforms natural program synthesis baselines.
