I was talking to one of my friends about OOPS. While talking to him, a question suddenly flashed in my mind about OOPS and more specifically about abstraction - how can you teach abstraction and the methods to be used to abstract ideas. In order to answer this question, we need to understand the real meaning of abstraction - "a concept or idea that is not associated with any specific instance". In other words, it is our ability to take our learning to higher level so that it becomes independent of specific instances.
Let us try to understand whether it is possible to teach abstraction with a help of simple mathematical addition. 1 + 1 = 2, 1 + 3 = 4, 6 + 5 = 11. Each of these additions are specific instances of addition. When we are learning "addition", we focus more on "+" (and put it in long term memory, yep that is abstraction) and we just remember the numbers until we solve the problem. Once the problem is solved, we just forget the numbers (short term memory). When we are early stages of learning, we tend to believe that specific instance is ultimate truth. When we practice, we face many types of similar problems and start to change our perspectives. The change of perspectives is critical that leads abstraction. With practice, we are programmed to abstract concepts (eg: addition).
So, i tend to believe that abstraction is directly proportional to practice and more specifically the number of "wow" moments that you create on specific subject and i agree if someone says "abstraction cannot be taught but can only be felt or facilitated".