Integrating a Graph Builder into Python Tutor

Authors Diogo Soares, Maria João Varanda Pereira , Pedro Rangel Henriques

Thumbnail PDF


  • Filesize: 1.05 MB
  • 15 pages

Document Identifiers

Author Details

Diogo Soares
  • University of Minho, Braga, Portugal
Maria João Varanda Pereira
  • Research Centre in Digitalization and Intelligent Robotics, Polythechnic Insitute of Bragança, Portugal
Pedro Rangel Henriques
  • University of Minho, Braga, Portugal

Cite AsGet BibTex

Diogo Soares, Maria João Varanda Pereira, and Pedro Rangel Henriques. Integrating a Graph Builder into Python Tutor. In Second International Computer Programming Education Conference (ICPEC 2021). Open Access Series in Informatics (OASIcs), Volume 91, pp. 6:1-6:15, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2021)


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.

Subject Classification

ACM Subject Classification
  • Human-centered computing → Visualization systems and tools
  • Social and professional topics → Computer science education
  • Software and its engineering → Source code generation
  • Program Visualization
  • Python Tutor
  • Data Flow Graphs
  • Control Flow Graphs


  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    PDF Downloads


  1. Agilej structureviews. URL:
  2. Codesonar. URL:
  3. Sourcetrail. URL:
  4. Luís Alves, Dušan Gajic, Pedro Rangel Henriques, Vladimir Ivancevic, Vladimir Ivkovic, Maksim Lalic, Ivan Lukovic, Maria João Varanda Pereira, Srdan Popov, and Paula Correia Tavares. C Tutor usage in relation to student achievement and progress: A study of introductory programming courses in Portugal and Serbia. Computer Applications in Engineering Education, n/a(n/a), 2020. URL:
  5. Marla Baker and Stephen Eick. Space-filling software visualization. Journal of Visual Languages & Computing, 6:119-133, June 1995. URL:
  6. Ruven Brooks. Towards a theory of the comprehension of computer programs. International Journal of Man-Machine Studies, 18(6):543-554, 1983. URL:
  7. Luis M. Gómez-Henríquez. Software visualization: An overview, 2001. Google Scholar
  8. Martin Hadley. 3 benefits of interactive visualization, January 2018. Google Scholar
  9. Ben Holland. Call graph construction algorithms explained, March 2016. Google Scholar
  10. François Lemieux and Martin Salois. Visualization techniques for program comprehension - a literature review. In SoMeT, 2006. Google Scholar
  11. A. Mayrhauser and A. Marie Vans. From program comprehension to tool requirements for an industrial environment. In [1993] IEEE Second Workshop on Program Comprehension, pages 78-86, August 1993. URL:
  12. Ike Nassi and B. Shneiderman. Flowchart techniques for structured programming. ACM SIGPLAN Notices, 8:12-26, August 1973. URL:
  13. Michael O'Brien, Jim Buckley, and Teresa Shaft. Expectation-based, inference-based, and bottom-up software comprehension. Journal of Software Maintenance, 16:427-447, November 2004. URL:
  14. Marian Petre. Mental imagery, visualisation tools and team work. In Proceedings of the Second Program Visualisation Workshop, pages 3-14, January 2002. Google Scholar
  15. Ben Putano. A look at 5 of the most popular programming languages of 2019. Accessed: 26-9-2019.
  16. Gerard Rambally. The influence of color on program readability and comprehensibility. ACM Sigcse Bulletin, 18(1):173-181, February 1986. URL:
  17. Teresa M. Shaft and Iris Vessey. The relevance of application domain knowledge: Characterizing the computer program comprehension process. J. Manage. Inf. Syst., 15(1):51-78, 1998. URL:
  18. Ben Shneiderman, Richard Mayer, Don McKay, and Peter Heller. Experimental investigations of the utility of detailed flowcharts in programming. Commun. ACM, 20:373-381, June 1977. URL:
  19. J. Siegmund. Program comprehension: Past, present, and future. In 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER), volume 5, pages 13-20, March 2016. URL:
  20. E. Soloway and K. Ehrlich. Empirical studies of programming knowledge. IEEE Transactions on Software Engineering, SE-10(5):595-609, September 1984. URL:
  21. Marilyn Wolf. Computers As Components, Third Edition: Principles of Embedded Computing System Design. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 3rd edition, 2012. Google Scholar
  22. Mami Yoshida. Think-aloud protocols and type of reading task: The issue of reactivity in l2 reading research. In Selected Proceedings of the 2007 Second Language Research Forum, January 2008. Google Scholar
  23. Andreas Zeller. Chapter 7 - deducing errors. In Andreas Zeller, editor, Why Programs Fail (Second Edition), pages 147-173. Morgan Kaufmann, Boston, second edition edition, 2009. URL: