Great Innovative Ideas

Great Innovative Ideas are a way to showcase the exciting new research and ideas generated by the computing community.

Philip Guo headshot

Python Tutor


The following Great Innovative Idea is from Philip J. Guo, Assistant Professor in the Department of Computer Science at the University of Rochester. Philip recently attended the Computing Community Consortium Computer-Aided Personalized Education Workshop in Washington, DC and presented his work on Python Tutor.

The Innovative Idea

One of the most fundamental skills to develop when learning computer programming is forming a mental model of how the computer executes a piece of code step-by-step. Instructors often draw diagrams to help learners form these mental models. But what if no instructor is available? I have developed a Web-based tool called Python Tutor ( that can automatically draw these diagrams for learners. As its name implies, Python Tutor started as a project to visualize code written in the Python language, but it has now expanded to include six additional languages: Java, Ruby, JavaScript, TypeScript, C, and C++.


This tool has already had worldwide impact. So far, over 1.5 million people from over 180 countries have used Python Tutor to collectively visualize over 13 million pieces of code! Learners have used it when taking MOOCs (Massive Open Online Courses), studying digital textbooks, and in traditional K-12 and college classes. The tool’s users come from all age groups; 1/6 of users are over 55 years old. As computer programming becomes an even more vital skill across more fields in the future, the impact of this tool will continue to grow.

Other Research

My main research interest is in building, deploying, and evaluating tools for learning programming at scale. In the past year, my students and I have built three new social learning systems on top of Python Tutor: 1.) Codechella enables multiple people to join a single Python Tutor visualization session to engage in real-time tutoring and peer learning. 2.) Codeopticon enables a single tutor to monitor dozens of learners coding in real-time and then jump in to offer timely, targeted, and proactive help. 3.) Codepourri enables a crowd of volunteer learners to collectively create coding tutorials by annotating Python Tutor visualizations. Read this blog post for more details on these tools and links to the corresponding research papers:

Research’s Background

I am currently an assistant professor of computer science at the University of Rochester. My research focus is at the intersection of human-computer interaction and online learning. Before becoming a professor, I developed online learning tools at Google, edX, and MIT CSAIL. Even earlier, as an undergraduate and master’s student at MIT and a Ph.D. student at Stanford, I began my career by researching topics in programming languages and software engineering.


Archive of Great Innovative Ideas >