Day to day we do lots of repetitive tasks that consist of finding and extracting stuff from files, doing some input-output transformations or formatting text. Most of these repetitive tasks require simple scripts or programs to be solved. Developers can write such programs with ease but what about millions of users that can't but still need to get the job done? Program Synthesis tries to tackle such problems by giving the user a way to generate (learn) a program for them using input-output examples. Correctly executed program synthesis can automate lots of tedious tasks and even take you places you never imagined.