This project will develop innovative software to broaden access to free one-on-one tutoring, starting in the domain of computer programming, which is crucial for many kinds of 21st-century jobs. Learning is one of the most important and fundamental lifelong endeavors. A well-educated public is crucial for maintaining a healthy, prosperous, and innovative society. Regardless of subject, one-on-one tutoring is the most personal and effective way to learn. Although recent efforts such as MOOCs (Massive Open Online Courses) are scaling up access to lectures and other educational materials, it is hard to scale up one-on-one tutoring to online settings because there are far more learners in the world than qualified expert tutors. Access to free online tutors will especially benefit lower-income learners, who are more likely to be from rural areas or underrepresented minority groups.
The technical objective of this project is to investigate how to scale up peer tutoring of computer programming through user interfaces and algorithms for matching learners with tutors, hosting tutoring sessions within real-time code visualizations, and reviewing archived sessions. The central idea is to draw from the large pool of learners concurrently accessing online educational resources to serve as peer tutors for one another. Although peers lack the deep expertise of experts, many are effective tutors since they recently learned the material and can empathize better with learners. This project will build upon Online Python Tutor, a Web-based educational tool that the researcher created to visualize the execution of computer code, now one of the most popular websites for learning programming in the Python language. This project's specific aims are to build a peer tutoring system atop the Online Python Tutor website and to use it to study online peer tutoring interactions. The system has two main components: 1.) PythonLive is a real-time tutoring interface for computer programming that enables multiple users to concurrently write, execute, visualize, and chat about code, a single tutor to effectively handle multiple simultaneous tutees, and offline learning by reviewing archived tutoring sessions. 2.) TutorMatch is an interface that uses crowdsourcing and machine learning to connect learners with appropriately-skilled peer tutors in real-time. In sum, this research will contribute new software-based techniques to facilitate peer tutoring of computer programming, which draws upon and contributes to the fields of human-computer interaction, social computing, and computer-supported cooperative learning.