Social choice becomes easier on restricted preference domains such as single-peaked, single-crossing, and Euclidean preferences. Many impossibility theorems disappear, the structure makes it easier to reason about preferences, and computational problems can be solved more efficiently. In this survey, we give a thorough overview of many classic and modern restricted preference domains and explore their properties and applications. We do this from the viewpoint of computational social choice, letting computational problems drive our interest, but we include a comprehensive discussion of the economics and social choice literatures as well. Particular focus areas of our survey include algorithms for recognizing whether preferences belong to a particular preference domain, and algorithms for winner determination of voting rules that are hard to compute if preferences are unrestricted.