HomeRésuméOpen SourceWorkBlog

Thesis

During my senior year as an undergraduate student at Tufts University, I chose to work on an honors thesis in the Computer Science department. The thesis is available online in the Tufts archives.

Abstract

A Turing machine is capable of computing anything that a modern computer can, but how? A high-level algorithm is fine as a demonstration, but the higher-level the algorithm given is, the harder it is to translate into specific states and transitions needed to configure a Turing machine to perform the same computation. I first present a series of shortcuts to make a Turing machine easier to program, proving at each step that no new computational functionality is added by showing how to simulate the shortcut. I then demonstrate how a single-taped Turing machine can be used to simulate a multi-taped Turing machine, and how a multi-taped Turing machine allows a program to keep track of additional internal state in a simple manner. Finally, I present a detailed explanation of how to configure a Turing machine, and how to identify the specific states and transitions needed, so that when the input to the machine is code in the programming language Brainfuck, the machine executes that code.

Files

Errata

Please let me know if you find any mistakes.