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. You use abstraction every day in the real world, and you may not even know it. If you've ever driven a car, you don't need to know how to operate the transmission or the engine directly. There's a steering wheel, some 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, and gauges in our car example. The same thing happens in our computer. We don't need to know how works underneath the hood. We have a mouse and a keyboard we can use to interact with it. Thanks to abstractions, the average computer user doesn't have to worry about the technical details. We'll use this under the hood e metaphor throughout the program to describe the area that contains the underlying implementation of the 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. One other 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. A simple 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.