top of page
Search

Importance of Abstraction in STEM

  • Writer: Emircan Tepe
    Emircan Tepe
  • Jul 22, 2023
  • 7 min read

Updated: Aug 30


Do you know that any person who completed an average high school education knows more than Newton, who is accepted as one of the greatest scientists of all time by many people? We are humans living in the 21st century, we, as humans, continued to learn about our universe, invented/created things since Newton. This resulted in us knowing more than him, but this also leads to things being more complex than ever. How do you deal with this much information?


As a way of dealing with this much information, I will talk about abstraction and its importance in STEM. For those who do not know what STEM means, it is an abbreviation used to refer to Science, Technology, Engineering, and Math, which are very close fields to each other.


There exist huge amounts of information in STEM areas. Just imagine one of the sub-fields of STEM, for example, let’s take Computer Engineering. (It would be fair for me to give examples from my profession.)


In a usual Computer Engineering curriculum, you are responsible for 20-25 different required courses in 6-8 semesters depending on the country. These courses range from circuit theory to object-oriented design, from network design to algorithm analysis. Not very surprisingly, every course has its own sub-fields, each of which is probably being worked on by different researchers/companies worldwide.


Moreover, these sub-fields are not very distinct, meaning that one has to touch other fields as well if one would like to have a broad knowledge about the concepts, put something new in the area, or even be able to understand clearly.


Take Machine Learning as an example. If you are insisting on being an expert, at some point in your journey, you will need at least to understand complex mathematical expressions, which will make you have to work on linear algebra, multivariable calculus, and probability theory.


In these circumstances, several questions come to mind, as follows:

  • How to learn all these concepts?

  • Is it meaningful to learn all these concepts?


And, more importantly than these two questions, how can we learn something in detail, or if we think that we are working as a group (that is usually the case in 21st century, at least it should be) how can we take part in building something new in a company or a research group?


That is where abstraction term comes into play. I have come across the term abstraction many times in different courses, books, and sometimes in blogs. Every time I read about abstraction; I feel I stepped one level deeper into it in terms of understanding, and started to understand its importance, especially when it comes to using it.


Let’s make clear things by taking help from definitions (That is something I always do, taking help from definitions), abstraction is basically dealing with essential parts while ignoring its inessential parts. As formally, described as follows; “we (humans) have developed an exceptionally powerful technique for dealing with complexity. We abstract from it. Unable to master the entirety of a complex object. We choose to ignore its inessential details, dealing instead with a generalized, idealized model of the object -- we consider its ‘essence’.”[1]


When reading the book named “Object-oriented analysis and design with applications” by Grady Booch, I also saw another important publication by Miller in the field of psychology back in 1956. It is a very famous paper, not only in psychology, but as important as taking a place in a software engineering book.


Although what the paper claimed was falsified as time passes since 1956, the rhetoric of the paper continued to stay same, and still protects its importance. Its name is “The Magical Number Seven, Plus or Minus Two”[2] and it basically claims that a person can store 7(+-2) chunks of information at the same time in its short-term memory. (Chunk means that most basic unit of information in a context.)


More importantly, the paper also states that, “the span of absolute judgment and the span of immediate memory impose severe limitations on the amount of information that we are able to receive, process, and remember. By organizing the stimulus input simultaneously into several dimensions and successively into a sequence of chunks, we manage to break (or at least stretch) this informational bottleneck.”


This is the abstraction.


We just ignore inessential parts and focus on what matters. We divide the complexity into manageable parts, chunks, levels, or however you would like to call it.


Let’s take an example.


Imagine that you need to learn all the inner details of a car to be able to drive it. In the first look, one can say that it could only be driven by its creators, but believe me, this is not possible for even the creators. They, say engineers, do not know all the parts, they created the car using abstraction. For example, the firing part could be designed by three different teams, each of which has different responsibilities. Including these different tasks in these three different groups, the produced part should also communicate with other parts to be able to provide the consistency in the overall car.


What we see when it comes to driving a car is an application of abstraction. We, drivers, do not have to know all the details of a car. How? Look at the below figure.


Abstraction figure[3], [I created, sorry for my bad design 😊]
Abstraction figure[3], [I created, sorry for my bad design 😊]

All one needs to understand is the things located on the right side of the figure. Ignore unessential parts, instead focus on essential parts that one can manage all the underlying parts.


This example is a well-known example in the context of the object-oriented programming paradigm, and I believe it is very useful to understand the concept. On the other hand, one may ask that “In this example, we do not create or build anything, it just makes it easier to use a complex product. What is your point?” Yes, that is right to say, then let’s take another example.


Imagine that you are a computer engineer who is working at a rocket company, producing rockets to send vehicles to space, and let the group you are in be responsible for providing information from the rocket to the vehicle, which causes the vehicle to take decisions. The following may be important questions to ask:


  1. Which information should be sent?

  2. How to get the information?

  3. How fast the information to be delivered?

  4. Is there a need to store any information?


Goes on…


These are questions that potentially need to be asked, but here are some questions that are irrelevant for this task:


  1. What is going to be done with the information I provided? (You really need to deal with complex math?)

  2. How is the sensor designed to capture the needed information? (Do we really care?)

  3. Can you explain the theory of relativity and how it impacts space travel? (Not directly relevant to the task of providing information from rockets to vehicles.)


Goes on…


Here we again apply an abstraction method to simplify the process and the task, and maybe make it possible to produce a rocket at the end of the day by many different groups/people by using abstraction.


I will give one more example. It will be a widely used programming technique, Interfaces.

An interface is an application of abstraction methodology. It simplifies the process again but in a different way. It focuses on what question instead of how question. For example, imagine a computer consisting of many different materials, transistors, CPU (and different cores in it), RAM, keyboard, monitor, and top of them, software.


How does this system work collaboratively? The answer is interfaces. It creates a communication channel between these different parts.


Please look at the below figure. You will see that there are only function definitions, but never how it is implemented. An interface never cares about the how question, but only what question (what data should I provide, and what I will get in return?). This makes things simpler for programmers.


 Created using codesnap and ChatGPT
 Created using codesnap and ChatGPT

Now look at the below figure. This is the answer to our how question. You will see our functions are now only maintained with their name and what it does, but also with how.


 Created using codesnap and ChatGPT
 Created using codesnap and ChatGPT

In conclusion, abstraction plays an important role in every discipline (I have seen until now) thanks to the complexity we have to create. I’m sure that there are still many topics to talk about, and many examples to give about abstraction. The last point of my blog is to ensure that we are using such a concept in our work. I can say many use it, being aware or not. Being aware that we use abstraction in our everyday life (not have to be in science) will increase our ability to understand the concepts more easily. Even if that does not work, knowing that what we do behind of the scene is always essential, at least for me.


Best regards to all readers… I'm always open to any feedback and discuss more about any topic I write about in my blog.


Stay well!


References


 
 
 

Comments


bottom of page