USER INTERFACE REQUIREMENTS

 

  1. Freshmen should learn about the process of constructing a program (edit, compile, execute, debug)
  2. Animation should help freshmen visualize the process of program execution.
  3. Program should allow testing of a program
  4. Program should make it easier to input commands into a TM
  5. Program should make it easy to manipulate multiple programs and multiple tapes per program.
  6. TM is used to convey the nature of a finite state machine:
    1. Instructions of the TM are executed in a linear sequence
    2. The three components of the instruction are mechanically executed in sequence to comprise an uninterruptible instruction cycle.
    3. Each state has a logical meaning (it exists to accomplish some step of the program)
    4. Every instruction of a TM is a potential branch instruction (change of state)
    5. Loops exist within a state (row loop: search) and among states (state loops)
    6. One state is the halt state and every program should eventually transition to that state.
    7. There is a tape alphabet (user friendly) and a program alphabet (programmer friendly) and all programmer symbols should disappear before the TM halts.
    8. There should be statistics kept about machine operations and a report available.
    9. There should be diagnostic error messages.
    10. The number of states or the number of symbols is arbitrary.
  7. The program is not simply the sequence of instructions, but is the movement of the process through the states of the program in the anticipated manner.   Thus the state of the machine and the goal or purpose of that state in the sequence of states should be emphasized as the program executes.
  8. The program should be interactive:
    1. Start, pause, resume, reset,
    2. Begin executing at any state and any tape position.
    3. Step mode, forward or backwards (reset to a former state and tape position).
  9. Since the program focuses attention on different aspects of teaching about manipulating TMs, there should be multiple windows used to support different functions.