1. Welcome aboard!

1.1 Two Major Themes of the Book

  • The notion of abstraction
  • The importance of not separating in your mind the notions of hardware and software

1.2 Computer

  • It directs the processing of information
  • It performs the actual processing of information

1.3 Core Ideas About Computing

Idea 1: All computers (the biggest and the smallest, the fastest and the slowest, the most expensive and the cheapest) are capable of computing exactly the same things if they are given enough time and enough memory. That is, anything a fast computer can do, a slow computer can do also. The slow computer just does it more slowly. A more expensive computer cannot figure out something that a cheaper computer is unable to figure out as long as the cheap computer can access enough memory. (You may have to go to the store to buy disks whenever it runs out of memory in order to keep increasing memory.) All computers can do exactly the same things. Some computers can do things faster, but none can do more than any other.

Idea 2: We describe our problems in English or some other language spoken by people. Yet the problems are solved by electrons running around inside the computer. It is necessary to transform our problem from the language of humans to the voltages that influence the flow of electrons. This transformation is really a sequence of systematic transformations, developed and improved over the last 50 years, which combine to give the computer the ability to carry out what appears to be some very complicated tasks. In reality, these tasks are simple and straightforward.

The idea of a universal computational device is due to Alan Turing. Turing proposed in 1937 that all computations could be carried out by a particular kind of machine, which is now called a Turing machine.

Alan Turing

Turing proposed that every computation can be performed by some Turing machine. We call this Turing's thesis.

There are some things that can't be computed!

1.4 Computation is very "mechanical"

1.5 Levels of Transformation

1.5.1 Problems

1.5.2 Algorithms

1.5.3 Language

1.5.4 ISA

1.5.5 Microarchitecture

1.5.6 Circuits

1.5.7 Devices