In this paper, we describe three practical exercises relating to algorithm education. The exercises are based on a learning support system that offers visualization of program behavior. Systems with the ability to visualize program behavior are effective to promote the understanding of algorithm behavior. The introduction of these systems into an algorithm course is expected to allow learners to cultivate a more thorough understanding. However, almost all existing systems cannot incorporate the teacher's intent of instruction that may be necessary to accommodate learners with different abilities by using a different instructional approach. Based on these considerations, we conducted classroom practice sessions as part of an algorithm course by incorporating the visualization system we developed in our previous work. Our system visualizes the target domain world according to the visualization policy defined by the teacher. Our aim with the practical classes is to enable learners to understand the properties of algorithms, such as the number of comparisons and data exchanges. The contents of the course are structured such that the properties of an algorithm can be understood by discovery learning in the practical work. In this paper, we provide an overview of our educational practices and learners' responses and show that the framework we use in our practices can be established in algorithm classes. Furthermore, we summarize the requirements for the inclusion of discovery learning in the algorithm classes as the knowledge obtained from our practices.
Pointers are difficult learning targets for novice learners of C programming. For such difficult targets, introducing a system visualizing program behaviors is generally expected to support learners to understand the targets. However, visualization in existing systems often conceals the concrete value of variables such as pointers; the way in which each visualized object is located on the memory is not made explicit. In order to address this issue, we focused on a program visualization system called TEDViT. It visualizes simultaneously and synchronously the memory image that is the field that presents the concrete value of variables and the target domain world that is the field that presents logically the data structures processed by the program. We consider that observing and comparing program code, memory image, and target domain world with TEDViT could work for understanding pointers. TEDViT visualizes the status of the target domain world according to the visualization policy defined by the teacher in order to allow teachers to set their instruction content based on the growing variety of learner background knowledge. We also consider that this feature could support teachers’ instructions and class managements appropriately, and improving teachers’ performance by TEDViT’s support would bring improvement of learners’ understanding. We conducted classroom practice for understanding pointers in connection with a memory model, thus introducing TEDViT to a real class. Analysis of answered scores in a questionnaire conducted after the practice suggests that our practice using TEDViT provided useful supports for participants to understand pointers. It also suggests our practice had a certain effect to reduce uneven levels of understanding among participants. Based on these results, we describe that classroom practices in our framework could support learners to understand pointers and support teachers to manage the class.
In this paper, we describe a code-reading support environment and practical classroom applications using this environment to understand nested loops. Previously, we developed a code-reading support system based on visualization of the relationships among the program code, target domain world, and operations. We implemented the proposed system in exercises with nested loops. The evaluation results suggested that students could frequently fulfill learning objectives using the proposed system. However, we also discovered that some students experienced a learning impasse in the classroom. We attempted to address these students with two supporting approaches: bridging the gap between the generalization structures in the program code and their corresponding operations and enabling learners to predict the behavior of the nested loops. In this paper, we extend our previous system with new functions based on our two supporting approaches. Further, we implement the system in another classroom for nested loops. We describe a correlation between the proposed system and an understanding of nested loops using pre-/post-test comparisons. We discuss how code reading using the proposed system allows learners to cultivate a superior understanding of the program code.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.