CS 394P: Automatic Programming