In the practical world of computing, it is rather uncommon that a program, once it performs correctly and satisfactorily, remains unchanged forever.
A good designer must rely on experience, on precise, logic thinking and on pedantic exactness. No magic will do.
But active programming consists of the design of new programs, rather than contemplation of old programs.
Clearly, programming courses should teach methods of design and construction, and the selected examples should be such that a gradual development can be nicely demonstrated.
My duty as a teacher is to train, educate future programmers.
Nevertheless, I consider OOP as an aspect of programming in the large that is, as an aspect that logically follows programming in the small and requires sound knowledge of procedural programming.
My duty as a teacher is to train, educate future programmers.
My being a teacher had a decisive influence on making language and systems as simple as possible so that in my teaching, I could concentrate on the essential issues of programming rather than on details of language and notation.