Programming by demonstration, an end-user development technique for teaching a computer or a robot new behaviors by demonstrating the task, believes that a humanoid robot is supposed by its nature to adapt to new environments and that the robot requires the ability to continuously learn new skills and adapt the existing skills to new contexts.
In computer science, programming by demonstration (PbD) is an end-user development technique for teaching a computer or a robot new behaviors by demonstrating the task to transfer directly instead of programming it through machine commands. As a humanoid robot is supposed by its nature to adapt to new environments, not only the human appearance is important but the algorithms used for its control require flexibility and versatility. Due to the continuously changing environments and to the huge varieties of tasks that a robot is expected to perform, the robot requires the ability to continuously learn new skills and adapt the existing skills to new contexts. 
