One possible escape from the Gibbard-Satterthwaite theorem is computational complexity. For example, it is NP-hard to compute if the STV rule can be manipulated. However, there is increasing concern that such results may not reflect the difficulty of manipulation in practice. In this tutorial, I survey recent results in this area. The Gibbard Satterthwaite theorem proves that, under some simple assumptions, a voting rule can always be manipulated. A number of possible escapes have been suggested. For example, if we relax the assumption of an universal domain and replace it with single peaked preferences, then strategy free voting rules exist. In an influential paper [1], Bartholdi, Tovey and Trick proposed that complexity might offer another escape: perhaps it is computationally so difficult to find a successful manipulation that agents have little option but to report their true preferences? Many voting rules have subsequently been shown to be NP-hard to manipulate [3]. However, NP-h...