CSC 544 is a graduate course on the theory of computation. I approach this course from a historical perspective, beginning in the late 19th and early 20th century with David Hilbert's "Programme" and some earlier foundations from Georg Cantor, Bertrand Russel, Gottlob Frege, and others. From there, we work through Gödel's results on the incompleteness of axiomatic systems, Church and Turing's notion of undecidability, and then through modern notions of complexity theory (Cook, Levin, Karp). Along the way, we show the equivalence of several important models of computation: Church's Lambda Calculus, Turing's eponymous machines, Péter's recursive functions, and Post's tag machines (also known as rewrite rules). We wrap up with a brief coverage of quantum computation.