  As robots interact with a broader range of end-users, end-user robot
programming has helped democratize robot programming by empowering end-users
who may not have experience in robot programming to customize robots to meet
their individual contextual needs. This article surveys work on end-user robot
programming, with a focus on end-user program specification. It describes the
primary domains, programming phases, and design choices represented by the
end-user robot programming literature. The survey concludes by highlighting
open directions for further investigation to enhance and widen the reach of
end-user robot programming systems.
