Elastic bodies can be programmed to take different shapes in different environments using stimulus-responsive anisotropic materials, where the route of shape changes is encoded in the local direction of material anisotropy at every point. In this talk I tackle the key theoretical question underlying many recent efforts to implement this approach — the inverse design problem — namely, given an arbitrary shape, constructing the anisotropy field that would induce it. I show analytical solutions to certain classes of this problem and a numerical algorithm to construct any surface geometry, and I resolve the problem of properly converting these 2D geometries into their destined 3D shapes. Finally, I team up with an experimental group in realizing this scheme by imprinting our numerical solutions into liquid crystalline elastomer sheets. We show success in experimentally producing flat rubber-like sheets that, upon heating, take an arbitrary preprogrammed desired shape, such as a face.