Extending the object-oriented notional machine notation with inheritance, polymorphism, and GUI events

Marin Aglić Čuvić, Josip Maras, Saša Mladenović · 2017

Learning to program is a challenging task. Novices need to have an accurate understanding of the program execution at the conceptual level provided by the programming language. This level of execution is often referred to as the notional machine, which is often easier to understand through program visualizations. Currently one of the most popular programming paradigms is object-oriented programming, which introduces a number of advanced concepts. In addition, in order to increase student engagement, teachers have started to introduce graphical user interface (GUI) applications into programming courses. This brings its own set of challenges, mostly related to a significantly larger number of application states, which are more difficult to keep track of. However, most existing programming visualizations do not cover all necessary concepts for teaching object-oriented programming, nor have they considered visualizing complex GUI applications. For this reason, we present our own concept of a visualization system that addresses these shortcomings. In this paper, we have: i) extended an existing notation for a notional machine to support learning of advanced objectoriented concepts inheritance and polymorphism; ii) presented our own concept of a visualization system that introduces the source code into the notional machine, thereby making the relationship between source code and the visual representation more concrete; and iii) proposed solutions for reducing the cognitive overload introduced by GUI applications.

Read the paper · More papers on PaperTik