Table of Contents
Fetching ...

Who Introduces and Who Fixes? Analyzing Code Quality in Collaborative Student's Projects

Rafael Corsi Ferrao, Igor dos Santos Montagner, Rodolfo Azevedo

TL;DR

The paper investigates code quality in collaborative student projects within an embedded systems course, addressing how errors are introduced and corrected and how group dynamics shape code hygiene. It uses automated quality tools (cppcheck and a custom embedded analyzer) to track issues across eight labs and two two-person projects, connecting per-commit and per-student contributions with statistical analyses. Key findings include that the most active contributors tend to introduce many issues, fixes by the original author are faster, and critical issues are resolved quickly while non-critical issues can linger; laboratory work shows different patterns than project work, and pre-existing boilerplate issues can have longer remediation times. The results motivate curricular integration of explicit code-quality objectives in group projects to bridge academic practice with industry expectations, and point to future work on qualitative analyses of collaboration and feedback delivery in automated environments.

Abstract

This paper investigates code quality education by analyzing how errors are introduced and corrected in group projects within an embedded systems course. We identify who introduces errors, who fixes them, and when these actions occur. Students learn code quality rules for C and embedded systems. We address three questions: RQ1: What is the impact of group formation on code quality? RQ2: How do students interact to fix code issues? RQ3: When are issues introduced and resolved? We analyzed data from eight individual labs and two group projects involving 34 students. The course provides continuous, automated feedback on code quality. Findings show that the most active contributors often introduce the most issues. Many issues are fixed late in the project. Individual labs tend to have fewer issues due to their structured nature. Most problems are fixed by the original author, while cross-student fixes take longer, especially in shared code. Critical issues are fixed quickly, but non-critical ones may be ignored, showing a focus on functionality over quality.

Who Introduces and Who Fixes? Analyzing Code Quality in Collaborative Student's Projects

TL;DR

The paper investigates code quality in collaborative student projects within an embedded systems course, addressing how errors are introduced and corrected and how group dynamics shape code hygiene. It uses automated quality tools (cppcheck and a custom embedded analyzer) to track issues across eight labs and two two-person projects, connecting per-commit and per-student contributions with statistical analyses. Key findings include that the most active contributors tend to introduce many issues, fixes by the original author are faster, and critical issues are resolved quickly while non-critical issues can linger; laboratory work shows different patterns than project work, and pre-existing boilerplate issues can have longer remediation times. The results motivate curricular integration of explicit code-quality objectives in group projects to bridge academic practice with industry expectations, and point to future work on qualitative analyses of collaboration and feedback delivery in automated environments.

Abstract

This paper investigates code quality education by analyzing how errors are introduced and corrected in group projects within an embedded systems course. We identify who introduces errors, who fixes them, and when these actions occur. Students learn code quality rules for C and embedded systems. We address three questions: RQ1: What is the impact of group formation on code quality? RQ2: How do students interact to fix code issues? RQ3: When are issues introduced and resolved? We analyzed data from eight individual labs and two group projects involving 34 students. The course provides continuous, automated feedback on code quality. Findings show that the most active contributors often introduce the most issues. Many issues are fixed late in the project. Individual labs tend to have fewer issues due to their structured nature. Most problems are fixed by the original author, while cross-student fixes take longer, especially in shared code. Critical issues are fixed quickly, but non-critical ones may be ignored, showing a focus on functionality over quality.

Paper Structure

This paper contains 23 sections, 4 figures, 2 tables.

Figures (4)

  • Figure 1: Analyses of the correction of issue occurrences made by students in the lab, in the project, and in both projects.
  • Figure 2: Time taken to resolve a code quality issue by the original student versus a different student, both by commits and by days.
  • Figure 3: Visualizations showing when code quality issues were introduced and removed by commits and days, comparing fixes by the same student vs. a teammate (N=180). Normalized commits, where 0 is the first commit and 1 is the last one.
  • Figure 4: Visualizations showing when an issue is added during code development in days since the beginning of the project (0) and the last day (1).