Abstract

Many researchers have proposed program visualization tools for memory management. Examples include state-of-the-art tools for C languages such as SeeC and Python Tutor (PT). However, three problems hinder the use of these and other tools: capability (P1), installability (P2), and usability (P3). (P1) Tools do not fully support dynamic memory allocation or File Input / Output (I/O) and Standard Input. (P2) Novice programmers often have difficulty installing SeeC due to its dependence on Clang and setting up an offline environment that uses PT. (P3) Revisualization of the modified source code in SeeC requires several steps. To alleviate these issues, we propose a new visualization tool called PlayVisualizerC.js (PVC.js). PVC.js, which is designed for novice C language programmers to provide solutions (S1–3) for P1–3. S1 offers complete support for dynamic memory allocation, standard I/O, and file I/O. S2 involves installation in a user web browser. This system is composed of JavaScript programs, including C language execution functions. S3 reduces the steps required for revisualization. To evaluate PVC.js, we conducted two experiments. The first experiment found that students using PVC solved a set of four programming tasks on average 1.7—times faster and with 19% more correct answers than those using SeeC. The second experiment found that PVC.js has a visualization performance equivalent to PT, and that PVC.js is more effective than existing general debugging tools for novices to understand programs in cases where the values of important variables change and the control flow is complicated.

Highlights

  • Various visualization techniques have been proposed to aid programmers in understanding the program execution status [1, 2, 3, 4, 5].1 Most existing debuggers and integrated development environments such as GDB and Eclipse provide limited features to visualize the program execution status

  • Compared to the group working with SeeC, those working with PVC responded 1.7 times faster and provided 19% more correct answers, demonstrating that PVC is well suited to the tasks

  • These results reaffirm the premise of the first experiment, which indicated that our tool and Python Tutor (PT) have similar visualization performances

Read more

Summary

Introduction

Various visualization techniques have been proposed to aid programmers in understanding the program execution status [1, 2, 3, 4, 5].1 Most existing debuggers and integrated development environments such as GDB and Eclipse provide limited features to visualize the program execution status. Most existing debuggers and integrated development environments such as GDB and Eclipse provide limited features to visualize the program execution status These applications display simple text outputs, but do not visualize the relationships between variables, pointers, and memory. Mastery of C language requires that users learn a basic but difficult-to-grasp concept of memory management, including pointers and dynamic memory allocation This can be extremely challenging for novices [8, 9, 10]. PVC.js is an interpreter of C languages and has features to visualize the program execution status It provides three solutions (S1–3) to the aforementioned problems. (S1) PVC.js can fully visualize variables, pointers, arrays, dynamically allocated memory, and their relationships It supports standard I/O and file I/O. 3) We conducted an experiment and a questionnaire to verify that PVC.js addresses P1–3

Related works
Summary
Problems with state-of-the-art tools
Tool usage
Visualization features
Language processing features
Experiment
Second experiment
Threats to validity
Limitations
Conclusions and future work

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.