
RescueBot.
A Java command-line program built on the trolley dilemma. After a disaster, RescueBot must choose which group of people and animals to save, and the user's choices are audited against those of a built-in decision algorithm.
Highlights

Design.
Humans and animals extend a shared Character class and are grouped into locations within each scenario. Scenarios are read from a CSV file or generated at random, with custom exceptions for bad rows, field values and number formats, and command-line flags for the scenario file, the log file and help.

Decisions.
In judge mode the user chooses where to send the robot in each scenario. In run mode the algorithm decides, always picking the location with the most humans. Each session reports the share of every characteristic that was saved, and an audit compares the user's choices with the algorithm's from the saved log.

Ethics.
Saving the most humans means the algorithm always matches or beats the user on human survival. But it ignores age, health, occupation and whether people were trespassing, and it leaves smaller groups to bear the harm. The reflection argues that a fairer algorithm must weigh more than a headcount.