We describe an integrated system for programming part-mating and contact tasks using simulation. A principle goal of this work is to make robotic programming easy and intuitive for non-trained users. Using simulation, an operator can specify part placement and contact motions by simply “putting things where they belong’, without resorting to textual descriptions. We describe the simulation system, which models objects as polyhedra and emulates collision and contact interactions in combination with a simplified “operator-friendly” dynamics. The combination of contact simulation and graphical fixtures enables the operator to easily manipulate this virtual environment using a simple 2D mouse. We also describe the program generation system, which takes the operator’s action sequence and transforms it into a set of robot motion commands which realize the prescribed tasks.