Abstraction
When we interact with our computers, we use our mouse, keyboard, or even a touch screen. We don't tell it the actual zeros and ones, it needs to understand something. But wait, we actually do. We just don't ever have to worry about it. We use the concept of abstraction to take a relatively complex system and simplify it for our use. Use abstraction everyday in the real-world and you may not even know it. If you've ever driven a car, you don't use to know how to operate the transmission or the engine directly. There's a steering wheel, pedals, maybe a gear stick. If you buy a car from a different manufacturer, you operate it in pretty much the same way, even though the stuff under the hood might be completely different. This is the essence of abstraction. Abstraction hides complexity by providing a common interface. The steering wheel, pedals, gear stick engages in our car example. The same thing happens in our computer. We don't need to know how it works underneath the hood. We have a mouse and a keyboard we can use to interact with it. Thanks to abstraction, the average computer user doesn't have to worry about the technical details. We'll use this under the hood metaphor throughout the program to describe the area that contains the underlying implementation of a technology. In computing, we use abstraction to make a very complex problem, like how to make computers work easier to think about. We do that by breaking it apart into simpler ideas that describe single concepts or individual jobs that need to be done, and then stack them in layers. This concept of abstraction will be used throughout this entire course. It's a fundamental concept in the computing world. Another simple example of abstraction in an IT role that you might see a lot is an error message. We don't have to dig through someone else's code and find a bug. This has been abstracted out for us already in the form of an error message. Symbol error message like file not found, actually tells us a lot of information and saves us time to figure out a solution. Can you imagine if instead of abstracting an error message our computer did nothing and we had no clue where to start looking for answers. Abstraction helps us in many ways that we don't even realize.