This tag is for all questions on using and teaching abstraction, such as data abstraction. It is also appropriate for questions related to using abstraction to build and improve program structure, i.e. functional abstraction.

Data and Program abstraction are fundamental concepts. Even choosing appropriate names for methods and functions can fall under this tag. Questions of higher level vs lower level thinking patterns are especially welcome.

Note that abstraction can work at both a high level (classes, objects, functions) and a low level (abstracting away details of machine implementation).