Paul Inventado
Exploring the use of unit tests, linters, and format checkers to enhance computer-programming instruction

It takes a lot of practice to master a complex skill like programming. CS instructors provide as much programming exercises as they can to students, but struggle with the time and effort required for creating problems, checking, and providing feedback on students’ solutions. Many instructors have used unit tests, which are programs that compare the output of student programs against expected results, to check for code correctness then manually check coding style and design. We are currently building a framework to explore the use of linters and format checkers in addition to unit tests to check the design and style of code written in C++. These tools catch common issues that significantly speeds up checking. We used the framework to create a programming-problem repository that instructors can use to assign exercises in class. Informal interviews with instructors indicated that the addition of linters and format checkers helped encourage their students to use coding best practices. We have also begun to store log data from the automated checkers. We plan to use these data for analyzing student progress in solving programming problems and gathering insights that can help inform instructor feedback.