I think that the choice should be random. There are too many things to consider when making a decision like this (how many people are in the car, are there a lot of kids, which car and its passengers are likely to get hurt the most, etc.). And what about the motorcycle scenario? Is it fair to hit someone wearing a helmet because they have a higher survival chance? But that is also punishing them, for doing the right thing. The best option is to make it random. This is only fair because then the company won't fully be responsible for the crash. Also, if consumers knew that autonomous cars were programmed to hit a certain kind of car, they wouldn't buy it. And what would happen if the choice is between two SUVS or mini coopers? Then, the only way to decided who to hit would be random.
As I mentioned before, I think random decisions is the most reasonable option. It will avoid conflict, lawsuits, and recalls. A random system mimics a human's reaction. There would be so much debate if the software was being programmed to hit a certain person or vehicle. It is not only illogical, but it's unfair because you can't please everyone.
No, the driver should not be responsible. If the car is really autonomous, any accident it caused by the car- and the only reason it would happen would be a manufacturing problem. Therefore, the company should pay.