Algorithm and Mechanism Design in Decision-making Environments