How should autonomous vehicles be programmed?