Create a Turing Machine Simulation

Introduction

A Turing machine is a mathematical model of computation describing an abstract machine that manipulates symbols on a strip of tape according to a table of rules. Despite the model's simplicity, it is capable of implementing any computer algorithm. (Wikipedia)

Project #0

Who was Alan Turing?

Describe the "theoretical" parts that make up a Turing Machine. Are there any real world limitations?

Project #1

Create a Turing Machine in Python. Hard code the algorithm that controls the machine's operation. (Ask the instructor for the algorithm.)

Display the state of the machine for every step the algorithm takes.

Project #2

Allow the user to code an algorithm in Python. Have your Turing Machine simulation import the file. This allows the user to experiment with various algorithms without changing the simulation's code.

Hint:
  1. create a Python file that defines the algorithm
  2. depending on what the simulation expects, the file should contains functions and/or classes
  3. use a standard name for the file name and function and class names
  4. Import the file
  5. to use different a algorithm create a new file with the containing same function and class names

Note: You need to create user documentation on creating an algorithm and using the simulation. In other words, how to connect the user's algorithm and the simulation.

Links

Turing machine simulator

Turing Machine (University of Cambridge)

Busy Beaver #4 Turing Machine Simulation (YouTube)

Turing Machine Simulator -- Instructions

CSE104, Lec 2: Turing machine simulations (YouTube)

Turing Machine (written Javascript)
See https://www.turingsimulator.net/github for the source code.

TMSL (TURING MACHINE SIMULATION LANGUAGE)
Language Manual and Project Report