Computers are devices that take inputs, process and store data, output results
Input devices are things like keyboards, mice, touchscreens, cameras etc. They take inputs from people and the physical world and turn them into electrical digital signals for the computer.
Output devices are things like screens, printers, speakers, etc. They take data produced by the processor and produce physical outputs for users.
Storage Devices can be classified as Primary, Secondary and Off-line results. Primary Storage holds the data that the computer can immediately work with. It includes Registers, Cache, RAM and ROM. Secondary Storage is the larger capacity storage that stores things that can be loaded into memory such as applications, user data, the operating system, it is mostly HDDs and SSDs. Off-line storage can be added and removed from the computer, such as CD, DVD, BluRay, External drives, etc.
Processors: the main processor is the CPU. However, it is extended by things like FPUs, GPUs and TPUs.
Homework: Classify storage devices as Solid State, Magnetic and Optical. Unpack the acronyms of the different processors and explain their uses.
When a program is being executed, the CPU performs the fetch-decode-execute cycle, which repeats over and over again until reaching the STOP instruction.
Summary of the fetch-decode-execute cycle
The instructions in memory are written in binary Machine Code/Language. This is a Low Level Language that is the only language machines can speak and is particular to each class of CPUs, but it is not easy for humans to read.
There is a more human readable Low-level Language called Assembly that uses mnemonics for the operators and labels for data and jump point addresses that makes programming at this low level easier. The assembly is turned into machine code by an assembler before it can be run.
Exercises: Little Man Computer and some mini-challenges. [ In class we looked at A+B, B-A, A-B, max(A, B), min(A, B) ]
It is not easy to program at this level, so High Level Languages were invented to help create programs. We will use Python in this course, but there is a multitude of different languages that have different histories and use cases. High-level languages need to be turned into machine code before they can run, and roughly speaking, they are either Compiled into an executable machine code file or Interpreted and executed line-by-line.
Our programs' logic will be recorded using Pseudocode, a language that can be used for describing programs and algorithms at a high level that does not require the details and strict syntax of a real language.