Code Critique: Rich, Immediate Critiques of Coding Antipatterns

Broadening Adoption, Supporting Student Learning, and Enhancing Programming Competencies

The RICA project (Rich, Immediate Critiques of Coding Antipatterns) aims to change the way introductory programming is taught and learned. It seeks to address the persistent challenges faced by novice programmers, particularly in the context of large, first-year engineering programs. The core idea is to provide students with timely and detailed feedback on their code, not just on whether their code works, but also on how well it is written. This is achieved through code analysis, a library of antipatterns, instructor supplied feedback and instructional materials that specifically target these antipatterns.

Many students struggle with the fundamental concepts of programming. This struggle can lead to frustration, low self-efficacy, and ultimately, a decision to leave the field of computer science or related disciplines. Through this project we are developing a code critiquer that can automatically identify common mistakes in student code and provide targeted feedback designed to help students understand the nature of their errors, the reasons why they are errors, and how to avoid them in the future. To this end, the project extends an existing tool, WebTA, which has been used effectively in introductory computer science courses. WebTA will be extended to support engineering fundamentals students learning MATLAB, a widely used programming language in engineering education.

First Year Engineering

The RICA project is being deployed in the First-Year Engineering Program at Michigan Tech. The program serves approximately 1,000 students annually making it an ideal setting for this research due to its size and the wide range of student backgrounds and abilities. Many students enter the program with little or no prior programming experience, making the need for effective introductory programming instruction particularly acute. The program's curriculum includes a significant programming component, with students learning to use MATLAB to solve engineering problems. WebTA for MATLAB has the potential to benefit a large number of students and have a significant impact on their learning. The RICA project provides instructors with new tools and resources to help them teach programming more effectively and will provide valuable insights into the challenges faced by novice programmers and the effectiveness of different instructional approaches.

Research Questions

The following research questions will guide the evaluation of the RICA project, providing a framework for assessing its impact on student learning and programming skills. These questions are designed to explore the effectiveness of the WebTA tool and the antipattern library in achieving the project's goals of improving student outcomes and enhancing programming competencies.

  1. How will WebTA impact students' computing skills?
    This research question will investigate the impact of WebTA on students' ability to write correct, efficient, and well-structured code. It will examine whether the use of WebTA leads to improvements in students' grades, their ability to solve programming problems, and their overall understanding of programming concepts. Data will be collected from student code submissions, which will be analyzed to assess the quality of their code. Student performance on exams and assignments will also be examined.
  2. How will WebTA affect students' self-efficacy in computing?
    Self-efficacy refers to an individual's belief in their ability to succeed in a particular task or domain. This research question will explore whether the use of WebTA increases students' confidence in their programming abilities. It will examine whether students feel more comfortable tackling challenging programming problems and whether they believe that they can succeed in future computer science courses or careers. Data will be collected through surveys and interviews, which will assess students' perceptions of their programming skills and their confidence in their ability to learn and use programming concepts.
  3. How will the use of a common language of antipatterns influence students' ability to reason about and discuss code?
    This research question will investigate whether the antipattern library and associated instructional materials help students to develop a shared vocabulary for discussing code quality and common errors. It will examine whether students are better able to identify and explain antipatterns in their own code and the code of others, and whether they are more effective at communicating about code with their peers and instructors. Data will be collected through classroom observations, analysis of student discussions, and student writing samples.

Laura Albrant: Human Factors Analysis

Daniel Masker: Universal Abstract Syntax Tree

Research Team

Investigators
  • PI: Dr. Leo C. Ureel II
  • CoPI: Dr. Laura E. Brown
  • CoPI: Dr. Michelle E. Jarvie-Eggart
  • CoPI: Dr. Jon Sticklen
Graduate Students
  • Laura Albrant, Ph.D. Student
  • Joseph R. Teahen, Ph.D. Student
  • Daniel Masker, Ph.D. Student
  • Mary Benjamin, Ph.D. Student
Past Members
  • Pradnya Pendse, MS Data Science, Awarded April 2024

NSF Logo This work was partly funded by the National Science Foundation award #2142309.

Additional support was provided by Michigan Technological University and the Institute of Computing and Cybersystems.
MTU Logo ICC Logo