Some of the most interesting classes I took during college were the artificial intelligence courses. These courses usually took concepts from psychology, sociology, political science, and evolutionary biology, and discussed them in the context of logic, mathematics, and algorithms. It's absolutely fascinating stuff.
The Wikipedia introductions in each of those articles are pretty easy to understand. But in quick, simplified, summary:
Condorcet's paradox explains how it's possible for an election to have no meaningful winner because any choice can be argued against due to a cyclical ordering of choices (think rock-paper-scissors).
The Gibbard–Satterthwaite theorem shows that (for 3 or more choices/candidates) if voters order the candidates by preference and you try to choose a single winner from those preferences, then either (1) someone is a dictator and controls the outcome, (2) some candidate can never win, or (3) voters have an incentive to lie about their preferences in order to influence the outcome (people can game the system).
Arrow's impossibility theorem is similar, but deals with systems that attempt to find a preference order over all candidates rather than a single winner. For a reasonable set of axioms that define a "fair" voting system, there can be no voting system which satisfies all of the fairness axioms simultaneously.
I think these ideas are simply enthralling. We then went over a slew of different voting protocols (ways of casting and counting votes) and showed how they were bound by these concepts.
Our class discussion naturally led to which voting protocol was "most fair." But, necessary in that discussion is also which voting protocol is most fair without being too complex to actually use.
Most of the time when we think about voting in the United States, we're thinking about plurality voting (first-past-the-post or winner-take-all). This is when, trying to get a single winner out of a group of candidates, each voter casts one vote and the candidate with the plurality of votes wins. It happens to be a very simple protocol, but, in the opinion of the class (which I agree with), one of the least fair protocols. Without discussing the technical violations of Arrow's fairness axioms, the reasoning we used was that when there are many candidates with similar levels of support, a large part of the population ends up being unrepresented and, due to this, plurality voting tends to collapse to a two-party system (often where neither candidate is really liked, but only preferred over the other candidate).
In our discussion, we tended to favor approval voting for its simplicity and ability to stave off a collapse to the two-party divisiveness. In approval voting, each voter simply votes for any/all candidates of which they approve. So if there are 4 candidates and you like 3 of them, you vote for all 3. Or if you only like 1, just vote for that one. There now is no reason to collapse into a two-party system because I can vote for all candidates I feel are qualified instead of fearing that the "other person" will win and I therefore must vote for the "most electable" of my actual preferred candidates.
Approval voting, of course, has some of its own problems, but we felt it was certainly more fair than plurality voting and would help solve some of the problems we're experiencing in U.S. politics right now in terms of partisanship, divisive rhetoric, and inviability of third-party candidates.