# Abstraction

Source: https://wisconsin.twango.dev/sp25-cs252/reference/abstraction

# Abstraction

Abstraction manages complexity by focusing on some attributes

Solving a problem on a computer is a systematic sequence of transformations between levels of abstraction

## Levels of Abstraction

### Problem Statement

- High level description in a natural language
- Ambiguous, imprecise, and even inaccurate

### Algorithms and Data Structures

- Software design, featuring step by step procedures and information organization
- A precise sequence of effective steps and a representation of the information those steps use.

### Program

- Statements that are organized into modules (functions, source files, classes, etc.)
- Variables containing data (arrays, structures, objects)
- High level languages - structured in a logical manner (control flow, loops, etc.)

### Instruction Set Architecture (ISA)

- Compiling and assembling programs into machine code (instructions that the computer can perform and data types the computer can understand)
- Low level languages - instructions are simple and direct

### Micro Architecture

- Detailed processor implementation

### Circuits

- Logic gates and low level components

### Devices

- Transistors, diodes, etc.

Related: [[lectures/lecture-02]], [[lectures/lecture-03]], [[lectures/lecture-04]], [[lectures/lecture-05]]

## Source

Original retained in wisconsin-legacy.
