- Abstraction enables greater complexity and generality in hardware and software
- It involves hiding implementation details behind interfaces
- Moving tasks from hardware to software increases abstraction
- Number representations
- Character encoding schemes
- Floating point math
- Graphics rendering
- Encryption/decryption
- e.g. number representations moved from hardware circuits to software libraries
- Abstracting these tasks in software increases flexibility and portability
- Higher levels of abstraction allow focusing more on the problem vs the hardware