The problem
Peer InstructionAn instructional strategy developed by Eric Mazur: students answer a question on their own, discuss it with peers, then answer again. was first used in physics lectures with multiple-choice questions. Students vote individually, discuss with their neighbors, then vote again. In computing courses, students overwhelmingly say it helps them learn, and instructors get a clearer picture of where students struggle.
Programming instructors have started running peer instruction on small in-class coding exercisesShort programming problems that students solve during a lecture or lab, rather than as homework. instead of multiple-choice questions. Online tools let students share code and solve problems with peers beyond the person sitting next to them.
But once the discussion moves online, the instructor loses sight of it. In an introductory class of hundreds of students, it's hard to tell:
- whether groups are actually engaged in discussion,
- what they're talking about, and
- whether the discussion is relevant to the exercise.
So our question was how to help instructors monitor peer discussion on coding exercises in large programming lectures.
Needfinding
We held informal interviews with 3 instructors who teach introductory programming. Three needs shaped the design:
- The big picture. Instructors wanted to understand and talk about how groups were doing overall, especially the main conceptual, coding and logic challenges students were discussing.
- Student work on the big screen. They wanted to project exemplary student responses for a class-wide discussion, so students share the examples, not just the instructor.
- Pedagogy, not just a tool. They saw the most potential when the tool is paired with a well-designed teaching strategy for the classroom.
How VizPI works
VizPI has an instructor view and a student view. Each is split into a top bar, a group list, a chat and a code editor.
A session follows the steps of peer instruction.
1. Post a task and let students work alone
The instructor enters a task description and the unit testsSmall automated checks that run a student's code against expected inputs and outputs. to grade solutions against. Students see the task right away and start coding. The instructor can switch chat off so everyone works on their own first. As students run their code, the instructor sees the pass rate for the whole class and for each unit test.
2. Share results and open discussion
After the first attempt, the instructor can share the initial results and give some early feedback. Then they group students into pairs or trios with a balance of expertise and switch chat on. For the rest of the exercise, groups discuss and work on the code together, and the instructor can watch at two levels.
- Keywords summarize the main themes across every group's messages. Clicking a keyword filters to the groups that mentioned it.
- Code issues show common errors in student submissions as cards, each with the percentage of students making the mistake and a summary of the error.
- Pass rate shows how the class is doing on each unit test.
The same panels can be switched to a single group's data.
Each group gets two rings:
- The outer light-green ring is the group's pass rate across all unit tests.
- The inner dark-blue ring is conversation relevanceHow close a group's messages are to the solution of the exercise. Higher means the discussion is more on track..
Together they show how close each group is to the correct answer, and a search bar filters the list.
Whenever a student sends a message, VizPI saves the code they had at that moment. Selecting a message shows that snapshot, so the instructor can trace how a student worked through the problem alongside what they were saying.
Go deeperInstructor controls
The bottom of the instructor view has the controls that drive a session: switch the chat on or off (H), form groups (I), and replay a group's discussion (J).
VizPI today
The poster describes an early prototype. VizPI has since grown into a platform at vizpi.org (short for "visualizing peer interactions") for in-class coding exercises built around peer interaction.
The platform now has four exercise types:
- Auto Grouping forms groups for peer instruction and group discussion.
- Audio Discussion transcribes live discussions and gives AI-generated insights into how each conversation is going.
- Helper/Helpee lets students who have finished the task help struggling peers through chat.
- Vizmental gives each student a personal AI assistant that guides and encourages them while they code.
What came next
The poster listed three directions for future work:
- Better grouping. Form groups using students' pass rates and personality traits.
- Better language models. Pull out key discussion points more accurately, guided by instructor feedback.
- Feedback at different levels. Let instructors give feedback to the class, a group or an individual during peer instruction.
Later projects picked these up. VizGroup (UIST 2024) uses LLMs to suggest which collaboration patterns to watch and alerts instructors when they appear. A study in a large CS1 course compared random and expertise-balanced grouping (SIGCSE 2025).
Takeaways
- Peer instruction on code needs its own tools. Once discussion moves online and the class grows to hundreds, instructors need a view of every group, not just the room.
- Show both progress and discussion. Pairing each group's pass rate with conversation relevance shows instructors which groups are close to the answer.
- Link chat to code. A snapshot of the code at each message tells the instructor what the student was looking at when they said it.
Cite this paper
@inproceedings{tang2023vizpi,
author = {Tang, Xiaohang and Chen, Xi and Wong, Sam and Chen, Yan},
title = {VizPI: A Real-Time Visualization Tool for Enhancing Peer Instruction in Large-Scale Programming Lectures},
booktitle = {Adjunct Proceedings of the 36th Annual ACM Symposium on User Interface Software and Technology},
series = {UIST '23 Adjunct},
year = {2023},
location = {San Francisco, CA, USA},
publisher = {Association for Computing Machinery},
doi = {10.1145/3586182.3616632}
}