Resources for Teaching Discrete Mathematics: A Study of Logic and Programming via Turing Machines

During the International Congress of Mathematicians in Paris in 1900 David Hilbert (1862–1943), one of the leading mathematicians of the last century, proposed a list of problems for following generations to ponder [8, p. 290–329] [9]. On the list was whether the axioms of arithmetic are consistent, a question which would have profound consequences for the foundations of mathematics. Continuing in this direction, in 1928 Hilbert proposed the decision problem (das Entscheidungsproblem) [10, 11, 12], which asked whether there was a standard procedure that can be applied to decide whether a given mathematical statement is true. Both Alonzo Church (1903–1995) [2, 3] and Alan Turing (1912–1954) [13] published papers in 1936 demonstrating that the decision problem has no solution, although it is the algorithmic character of Turing’s paper “On Computable Numbers, with an Application to the Entscheidungsproblem” [13] that forms the basis for the modern programmable computer. Today his construction is known as a Turing machine. Let’s first study a few excerpts from Turing’s original paper [13, p. 231–234], and then design a few machines to perform certain tasks.