Core Concepts
CFlow is a novel system that visualizes the semantic flow and errors in students' code submissions at scale, enabling instructors to efficiently identify common mistakes and patterns in large programming classes.
Abstract
CFlow is a system designed to help instructors efficiently analyze and understand students' code submissions at scale. It addresses the challenges faced by instructors in large programming courses, where it can be overwhelming to identify common problem-solving patterns or issues across thousands of student submissions.
CFlow's key features include:
Semantic Aggregation View (SAV): This view presents a concise, high-level representation of the common semantic flow across all student submissions. Each line of code is semantically labeled and color-coded to indicate the correctness of that step.
Semantic Histogram View (SHV): This view shows a histogram of the different semantic steps, with color-coding to indicate the correctness of each step. This allows instructors to quickly identify the most common mistakes or patterns.
Code Detailed View (CDV): This view enables instructors to drill down into specific code submissions and inspect the details, including error types and semantic labels for each line of code.
The CFlow algorithm works in four stages:
Identifying and tagging the common steps required to solve the problem
Grouping and aligning lines of code across submissions
Identifying semantic, syntactic, and runtime errors in the code
Clustering the grouped results
CFlow was evaluated in a user study with 16 participants, who used both CFlow and a baseline system (a combination of OverCode and RunEx) to identify mistakes and patterns in over 6,000 student code submissions. The results showed that participants using CFlow were able to identify targeted misconceptions in half the time and with greater accuracy compared to the baseline system.
Stats
The study involved over 6,000 student code submissions for two programming exercises.
Quotes
"CFlow presented a concise view that elucidates the primary steps students take in their code, thereby showing how most students structure their code to solve a programming exercise."
"CFlow highlighted the majority of students and allowed users to layer the filters on code submissions."