In a preference aggregation setting, a group of agents must jointly make a decision, based on the individual agents’ privately known preferences. To do so, the agents need some protocol (or mechanism) that will elicit this information from them, and make the decision. Examples of such mechanisms include voting protocols, auctions, and exchanges. In most real-world settings, preference aggregation is confronted with the following three computational issues. First, there is the complexity of executing the mechanism. Second, when standard mechanisms do not apply to or are suboptimal for the setting at hand, there is the complexity of designing the mechanism. Third, the agents face the complexity of (strategically) participating in the mechanism. My thesis statement is that by studying these computational aspects of the mechanism design process, we can significantly improve the generated mechanisms in a hierarchy of ways, leading to increased economic welfare.