Watch What I Do: Programming by Demonstration