Integrating a Graph Builder into Python Tutor

Analysing unknown source code to comprehend it is quite hard and expensive task. Therefore, the Program Comprehension (PC) subject has always been an area of interest as it helps to realize how a program works by identifying the code that implements each functionality. This means being able to map the problem domain with the program domain. PC is a complex area, but its importance for programmers is so high that many approaches and tools were proposed along the last two decades. Program Animation is one of those approaches requiring specialized techniques. For each programming language, there are already tools that enable us to execute a program step by step, visualize its execution path, observe the effect of each instruction on its data structures, and inspect the value of its variables at any point. In the present context, we sustain the idea that PC techniques and tools can also be of great value for students taking the first steps in programming using a specific language. To this end, we aim to improve Python Tutor, a well-known program visualization tool, with graph-based representations of source code such as Control Flow Graph (CFG), Data Flow Graph (DFG), Function Call Graph (FCG) and System Control Graph (SCG). This helps novice programmers to understand the source code analyzing not only the variable contents but also a set of automatically generated graph-based visualizations, that were not included in Python Tutor so far. This will allow the students to be focused on certain aspects of the program (depending on the graph), abstracting others such as details of its syntax. 2012 ACM Subject Classification Human-centered computing → Visualization systems and tools; Social and professional topics → Computer science education; Software and its engineering → Source code generation

[1]  Marilyn Wolf Computers as Components, Second Edition: Principles of Embedded Computing System Design , 2008 .

[2]  Janet Siegmund,et al.  Program Comprehension: Past, Present, and Future , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[3]  Stephen G. Eick,et al.  Space-filling Software Visualization , 1995, J. Vis. Lang. Comput..

[4]  Ruven E. Brooks,et al.  Towards a Theory of the Comprehension of Computer Programs , 1983, Int. J. Man Mach. Stud..

[5]  Jim Buckley,et al.  Expectation-based, inference-based, and bottom-up software comprehension , 2004, J. Softw. Maintenance Res. Pract..

[6]  Iris Vessey,et al.  The Relevance of Application Domain Knowledge: Characterizing the Computer Program Comprehension Process , 1998, J. Manag. Inf. Syst..

[7]  Maria João Varanda Pereira,et al.  C Tutor usage in relation to student achievement and progress: A study of introductory programming courses in Portugal and Serbia , 2020, Comput. Appl. Eng. Educ..

[8]  G. Rambally The influence of color on program readability and comprehensibility , 1986, SIGCSE '86.

[9]  Ben Shneiderman,et al.  Experimental investigations of the utility of detailed flowcharts in programming , 1977, CACM.

[10]  Mami Yoshida,et al.  Think-Aloud Protocols and Type ofReading Task: The Issue of Reactivity in L2 Reading Research , 2008 .

[11]  Kate Ehrlich,et al.  Empirical Studies of Programming Knowledge , 1984, IEEE Transactions on Software Engineering.

[12]  B. Shneiderman,et al.  Flowchart techniques for structured programming , 1973, SIGP.

[13]  Anneliese Amschler Andrews,et al.  From program comprehension to tool requirements for an industrial environment , 1993, [1993] IEEE Second Workshop on Program Comprehension.

[14]  Martin Salois,et al.  Visualization Techniques for Program Comprehension - A Literature Review , 2006, SoMeT.

[15]  Marian Petre Mental imagery, visualisation tools and team work , 2002 .