A METHOD AND TOOL FOR EMPIRICAL AND PRACTICAL LEARNING OF ALGORITHMS

Information systems have become an integral part of our society and our dependence on them is increasing. In such a society, it is important that users correctly understand the principles and limitations of information systems and technology. An understanding of such characteristics is essential for effective application of information systems and useful in preventing misuse and discontent. The fundamental principle of any information system is that it functions by executing predefined steps of activity, also known as algorithms. Although, the learning of this principle is important, the ordinary introduction to algorithms is too theoretical and leaves a great distance with practical applications. As a result, algorithms are often considered as specific techniques for advanced logic rather than the basis of all information systems. For the purpose described above, it is necessary to learn algorithms through experience of defining steps of activity to control a computer and by studying simple but complete examples of practical applications.In this paper, an algorithm learning tool to realize an empirical and practical learning experience for young students and non-experts is proposed. The tool is based on a self-explanatory language that allows direct specification of activities and algorithmic features with symbols and notions that directly depict the original concepts. It avoids the indirect abstract notations that are common in programming and modeling languages. Even without abstract notations, formulas and conditions can be defined precisely so that the definitive and precise aspects of algorithms are not undermined. Using this tool, users can view, edit, and execute algorithms and can experiment with the algorithms to deepen their understanding by changing the settings all in a highly visual environment. The tool also allows to add new algorithms with ease so that many concrete applications can be added to reinforce the learning effect through multiple examples.Commonly, abstract data structures and abstract operations are used to describe algorithms. However, the use of such description creates a great gap between the representation and the real-world problem. The self–explanatory language uses a unique model to describe the problem using the real-world objects and activities directly, and alleviates the difficulty of description and understanding by removing the layer of abstraction. Furthermore, a practical algorithm is complex in nature, but simplification by removing the complexity only degrades the understanding. Nevertheless, there is a limit to the amount of knowledge one can understand at once. In this tool, the knowledge constituting the algorithm is decomposed according to a predefined set of features so that they can be brought up to the user in the right combination at the right time.In this paper, the self-explanatory language and its notations, and methods for viewing and editing the algorithm are described through an example of a game program. In addition, results of a simple experiment to measure the learning effect is presented.