From Procedures to Objects: What Have We (Not) Done?
Jorma Sajaniemi, Marja Kuittinen
Abstract: Programming education has experienced a shift from imperative and procedural programming to object-orientation. This shift has been motivated by educators’ desire to please information technology industry and potential students; it is not motivated by psychology of programming nor by computer science education research—there are practically no results that would indicate that such a shift is desirable, needed in the first place, or even effective for learning programming. Moreover, there has been an implicit assumption that classic results on imperative and procedural programming education and learning apply to OO programming, also, but we argue that this is not the case and, therefore, call for systematic research into the fundamental cognitive and educational issues in learning and teaching OO programming.
In order to understand the huge shift from imperative and procedural programming to object-orientation, we compare these paradigms at three levels: notations of languages, the notional machine that describes how programs are executed, and the orientation of a paradigm describing what programs are for and what can be done with them. We will also review research literature and see how it supports our claims. Finally, we present a research agenda intended to improve the understanding of OO programming and OO programming education.