I. Introduction
The Object Oriented (OO) Journey started with languages like Simula 67, Smalltalk 80, Objective C and C++ (80´s), java (90´s) C# (2000´s), Python, Ruby so on and so forth. It is important to consider that OO coding is not necessarily OO thinking. Literature recommends since the beginning of the OO journey "To become competent in the object-oriented paradigm requires the acquisition of an object-oriented world view, that will not happen overnight" [1]. Starting this century, a debate took place in many academic departments of computer / information science about the best way to approach the teaching: "Should students be exposed immediately to the new paradigm of Object-Oriented Programming (OOP), using a language like C++ or Java, or should they be taught with a more gradual approach?" [2].