Willow: A Tool for Interactive Programming Visualization to Help in the Data Structures and Algorithms Teaching-Learning Process
Resumo
Data Structures and Algorithms (DSA) are one of the main pillars of software development; however, abstractions around them are hard to teach and to be understood by students. The most common approaches adopted by instructors to demonstrate the behavior of DSAs are the use of resources like slides and whiteboard sketches to create program illustrations. This task may be slow and tedious because these illustrations need to be continuously updated to represent new algorithm inputs and modifications. In this paper, we propose Willow, a tool for Program Visualization Simulation (PVS), which supports user interactions to manipulate the generated visualizations. With these manipulations in the visualization, we expect the user to be able to create better examples, resembling Algorithm Visualization Simulation tools (AVS), which are specialized in providing visualizations for specific DSAs. We evaluated our tool through a preliminary qualitative study with teaching assistants from an introductory Computer Science course who all give review lessons to the students. Our preliminary results show that the tool was well accepted by the participants, but we still need more studies to validate the use of the tool in classrooms. With the use of our tool features in the teaching-learning process, we expect that instructors may be able to interactively and more clearly explain DSAs to their students, without the hassle of hours creating slides or drawing by hand messy examples of algorithms.
Referências
David Bau, Jeff Gray, Caitlin Kelleher, Josh Sheldon, and Franklyn Turbak. 2017. Learnable programming: blocks and beyond. arXiv preprint arXiv:1705.09413 (2017).
Katrin Becker and Melissa Beacham. 2000. A tool for teaching advanced data structures to computer science students: an overview of the BDP system. In Journal of Computing Sciences in Colleges, Vol. 16. Consortium for Computing Sciences in Colleges, 65--71.
Alexandre Bergel, Felipe Banados, Romain Robbes, and David Röthlisberger. 2012. Spy: A flexible code profiling framework. Computer Languages, Systems & Structures 38, 1 (2012), 16--28.
ANM Imroz Choudhury and Paul Rosen. 2011. Abstract visualization of runtime memory behavior. In 2011 6th International Workshop on Visualizing Software for Understanding and Analysis (VISSOFT). IEEE, 1--8.
Habibie Ed Dien and Yudistira Dwi Wardhana Asnar. 2018. OPT+ Graph: Detection of Graph Data Structure on Program Visualization Tool to Support Learning. In 2018 5th International Conference on Data and Software Engineering (ICoDSE). IEEE, 1--6.
Stephen H Edwards, Daniel S Tilden, and Anthony Allevato. 2014. Pythy: improving the introductory python programming experience. In Proceedings of the 45th ACM technical symposium on Computer science education. ACM, 641--646.
Eric Fouh, Monika Akbar, and Clifford A Shaffer. 2012. The role of visualization in computer science education. Computers in the Schools 29, 1-2 (2012), 95--117.
Denis Gračanin, Krešimir Matković, and Mohamed Eltoweissy. 2005. Software visualization. Innovations in Systems and Software Engineering 1, 2 (2005), 221--230.
Philip J Guo. 2013. Online python tutor: embeddable web-based program visualization for cs education. In Proceeding of the 44th ACM technical symposium on Computer science education. ACM, 579--584.
John Guttag. 2011. 6.00SC Introduction to Computer Science and Programming. https://ocw.mit.edu/
Juha Helminen and Lauri Malmi. 2010. Jype-a program visualization and programming exercise tool for Python. In Proceedings of the 5th international symposium on Software visualization. ACM, 153--162.
Hyeonsu Kang and Philip J Guo. 2017. Omnicode: A novice-oriented live programming environment with always-on run-time value visualizations. In Proceedings of the 30th Annual ACM Symposium on User Interface Software and Technology. ACM, 737--745.
Ravi Khatwal and Manoj Kumar Jain. 2016. An Efficient Application Specific Memory Storage and ASIP Behavior Optimization in Embedded System. INTERNATIONAL JOURNAL OF ADVANCED COMPUTER SCIENCE AND APPLICATIONS 7, 7 (2016), 179--190.
Linxiao Ma, John Ferguson, Marc Roper, and Murray Wood. 2011. Investigating and improving the models of programming concepts held by novice programmers. Computer Science Education 21, 1 (2011), 57--80.
Akio Oka, Hidehiko Masuhara, and Tomoyuki Aotani. 2018. Live, synchronized, and mental map preserving visualization for data structure programming. In Proceedings of the 2018 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software. ACM, 72--87.
Michael C Orsega, Bradley T Vander Zanden, and Christopher H Skinner. 2012. Experiments with algorithm visualization tool development. In Proceedings of the 43rd ACM technical symposium on Computer Science Education. ACM, 559--564.
Jibin Ou, Martin Vechev, and Otmar Hilliges. 2015. An interactive system for data structure development. In Proceedings of the 33rd Annual ACM Conference on Human Factors in Computing Systems. ACM, 3053--3062.
Yizhou Qian, Susanne Hambrusch, Aman Yadav, Sarah Gretter, and Yue Li. 2019. TeachersâĂŹ Perceptions of Student Misconceptions in Introductory Programming. Journal of Educational Computing Research (2019), 0735633119845413.
Yizhou Qian and James Lehman. 2017. StudentsâĂŹ misconceptions and other difficulties in introductory programming: A literature review. ACM Transactions on Computing Education (TOCE) 18, 1 (2017), 1.
Katarzyna Romanowska, Gurpreet Singh, M Ali Akber Dewan, and Fuhua Lin. 2018. Towards Developing an Effective Algorithm Visualization Tool for Online Learning. In 2018 IEEE SmartWorld, Ubiquitous Intelligence & Computing, Advanced & Trusted Computing, Scalable Computing & Communications, Cloud & Big Data Computing, Internet of People and Smart City Innovation (SmartWorld/SCALCOM/UIC/ATC/CBDCom/IOP/SCI). IEEE, 2011--2016.
Juha Sorva et al. 2012. Visual program simulation in introductory programming education. Aalto University.
Juha Sorva, Ville Karavirta, and Lauri Malmi. 2013. A review of generic program visualization systems for introductory programming education. ACM Transactions on Computing Education (TOCE) 13, 4 (2013), 15.
Juha Sorva, Jan Lönnberg, and Lauri Malmi. 2013. StudentsâĂŹ ways of experiencing visual program simulation. Computer Science Education 23, 3 (2013), 207--238.
Juha Sorva and Teemu Sirkiä. 2010. UUhistle: a software tool for visual program simulation. In Proceedings of the 10th Koli Calling International Conference on Computing Education Research. ACM, 49--54.
Euripides Vrachnos and Athanassios Jimoyiannis. 2014. Design and evaluation of a web-based dynamic algorithm visualization environment for novices. Procedia Computer Science 27 (2014), 229--239.
Daniel Zingaro, Yuliya Cherenkova, Olessia Karpova, and Andrew Petersen. 2013. Facilitating code-writing in PI classes. In Proceeding of the 44th ACM technical symposium on Computer science education. ACM, 585--590.