Abstraction - Automation
Abstraction
Abstraction is the process of hiding details that are not essential for a problem to be solved. This can be interpreted as removing indirectly relevant data repeatedly until a complex problem (function) becomes a series of simpler problems (functions) which can easily accomplish the same larger problem (function) in a more efficient & simpler way.
Procedural and functional abstraction can simplify the problem by allowing use of existing functions without an understanding of how they work. This type of abstraction also allows a computer scientist to reference a function that is currently non-existent, if they know its purpose but not how to achieve it, meaning that that part of the problem can be solved later or left to another computer scientist without delaying work on the rest of the solution.
Data abstraction hides irrelevant data and how it is stored from the interface.
Automation
Automation is the process of building models of real world objects to solve a problem. Models can be made by including only details that are relevant to the problem and discarding those that are irrelevant or have only minor effects. Using the model, an algorithm can then be designed to solve and automate the problem.