There's a famous problem in computer science called the Two Generals' Problem. It follows two Roman camps on opposite sides of a valley, claimed by enemies. Each can send a scout to the other to decide when to attack---which is necessary because if either attacks alone he is guaranteed to lose---but there is no guarantee the scout will arrive. Clearly, one message cannot guarantee consensus between the two. But neither can thirty---or a billion. 

This is an attempt at global consensus in a distributed system, and is still an unsolved problem so far as such a problem can be ``solved.'' However, algorithmic approaches are rapidly becoming more important as global consensus is intimately intertwined with novel technologies. These start with the internet and routing paths (even though they're both about 60 years old), torrent software, the TOR network, server redundancy in commercial applications, and the holy grail of distributed computing: cryptocurrency. % Are all of them necessary? If so, long sentence.

For all of our subtopics, we want to understand the systems and practical applications, so we will survey existing literature on these topics and user computing tools/mathematical approaches to analyze alternative systems for some of the listed applications.

%We want to review existing literature on the topic as well as practical applications of those principles (e.g. Bitcoin's consensus algorithm and its failures),\footnote{$^1$}{\link{https://bitcointalk.org/index.php?topic=702755.0}} so we will use a variety of sources, primarily academic in nature, as well as use computing tools and/or combinatoric algorithms to understand how effective (or ineffective) certain systems are at achieving different tasks, like the several routing algorithms available to ISPs and different cryptocurrencies' consensus and hash algorithms (like between Monero and Bitcoin).
