Your browser **doesn't support the features required** by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest **Chrome**, **Safari** or **Firefox** browser.

**CIS 115**

Lecture 6: Universal Computers

**Herman Hollerith**

Image Source: Wikipedia

**Punched Cards**

Image Source: Wikipedia

**Hollerith Tabulating Machine**

Image Source: Wikipedia

Image Source: Wikipedia

Image Source: Wikipedia

Image Source: Wikipedia

**IBM Type 285**

Image Source: Wikipedia

**Mark I**

Image Source: Wikipedia

**Eniac**

Image Source: Wikipedia

**Top Secret Rosies**

Female Computers in WWII

Available at Hale Library

**What is a Universal Computer?**

A universal computer can simulate ANY other real-world computer given infinite time and infinite memory

**Alan Turing**

Image Source: Wikipedia

**Turing Machine**

Image Source: Wikipedia

**Turing Machine Instructions**

- Move Left 1
- Move Right 1
- Write 0
- Write 1
- If 0, Go to #
- If 1, Go to #
- Go to #
- Stop

**Turing Machine Example**

Start with 2 items on a tape

- If 1, go to #5
- Move left
- If 0, go to #9
- If 1, go to #6
- Move Left
- Move Left
- Write 1
- Stop
- Move Left
- Write 0
- Stop

∨ Or

**Turing Machine Example**

Start with 2 items on a tape

- If 0, go to #7
- Move left
- If 0, go to #8
- Move Left
- Write 1
- Stop
- Move Left
- Move Left
- Write 0
- Stop

∧ And

**John Von Neumann**

Image Source: Wikipedia

**Von Neumann Architecture**

Image Source: Wikipedia

Assignments

- Read and be prepared to discuss:
*Pattern on the Stone*Chapter 5: Algorithms & Heuristics

- Blog 3: Algorithms Due 2/17 10PM
- Scratch Bank Project - Due 2/12 10PM

**Blog 3: Algorithms**

Think about something that you do every day. That one thing probably is composed of many smaller steps, which you have to perform in the correct order. How would you describe those steps to someone unfamiliar with the action? How would you describe them to a robot that can follow your actions? While we may not think of it in this way very often, most of our daily lives could be expressed as an algorithm. Choose a few examples of actions you perform often, and write about how you would express them as algorithms. Some things to consider:

- Could a computer system be built to follow this algorithm easily?
- Are there algorithms you perform daily that would be very difficult for a computer?
- Is the algorithm you use the fastest one? Are there real-world limitations that prevent you from doing it faster?
- If the algorithm you use the most efficient one (the least number of steps) or simply the one that you learned first?
- How do you share your “algorithms” with others so they can follow along?

**Scratch Turing Machine**

- Download the starter file from KSOL
- Build a 3-State, 2-Symbol Busy Beaver in Scratch
- Record the final state and output of the Turing Machine

**Lists in Scratch**

Get an Item |

Set an Item |

**Turing Machine Blocks**

**Turing Machine - Invert Bits**