Table of Contents
Fetching ...

Software Engineering Educational Experience in Building an Intelligent Tutoring System

Zhiyu Fan, Yannic Noller, Ashish Dandekar, Abhik Roychoudhury

TL;DR

The paper tackles the dual challenge of scalable feedback for large CS enrollments and providing authentic SE experiences. It proposes a modular, language-independent Intelligent Tutoring System (ITS) for programming assignments that combines automated program repair with large language models for conceptual feedback, guided by an intermediate CFG representation and Def-Use analysis. The ITS is developed as a long-running SE project within a multi-year course, with incremental short-running projects, real deployments, and controlled experiments showing improved error localization, patching efficiency, and tutor workload reduction. The work demonstrates a practical, scalable model for bridging programming education and software engineering research, with potential for cross-institution adoption and future integration with AI-assisted coding tools.

Abstract

The growing number of students enrolling in Computer Science (CS) programmes is pushing CS educators to their limits. This poses significant challenges to computing education, particularly the teaching of introductory programming and advanced software engineering (SE) courses. First-year programming courses often face overwhelming enrollments, including interdisciplinary students who are not CS majors. The high teacher-to-student ratio makes it challenging to provide timely and high-quality feedback. Meanwhile, software engineering education comes with inherent difficulties like acquiring industry partners and the dilemma that such software projects are often under or over-specified and one-time efforts within one team or one course. To address these challenges, we designed a novel foundational SE course. This SE course envisions building a full-fledged Intelligent Tutoring System (ITS) of Programming Assignments to provide automated, real-time feedback for novice students in programming courses over multiple years. Each year, SE students contribute to specific short-running SE projects that improve the existing ITS implementation, while at the same time, we can deploy the ITS for usage by students for learning programming. This project setup builds awareness among SE students about their contribution to a "to-be-deployed" software project. In this multi-year teaching effort, we have incrementally built an ITS that is now deployed in various programming courses. This paper discusses the Intelligent Tutoring System architecture, our teaching concept in the SE course, our experience with the built ITS, and our view of future computing education.

Software Engineering Educational Experience in Building an Intelligent Tutoring System

TL;DR

The paper tackles the dual challenge of scalable feedback for large CS enrollments and providing authentic SE experiences. It proposes a modular, language-independent Intelligent Tutoring System (ITS) for programming assignments that combines automated program repair with large language models for conceptual feedback, guided by an intermediate CFG representation and Def-Use analysis. The ITS is developed as a long-running SE project within a multi-year course, with incremental short-running projects, real deployments, and controlled experiments showing improved error localization, patching efficiency, and tutor workload reduction. The work demonstrates a practical, scalable model for bridging programming education and software engineering research, with potential for cross-institution adoption and future integration with AI-assisted coding tools.

Abstract

The growing number of students enrolling in Computer Science (CS) programmes is pushing CS educators to their limits. This poses significant challenges to computing education, particularly the teaching of introductory programming and advanced software engineering (SE) courses. First-year programming courses often face overwhelming enrollments, including interdisciplinary students who are not CS majors. The high teacher-to-student ratio makes it challenging to provide timely and high-quality feedback. Meanwhile, software engineering education comes with inherent difficulties like acquiring industry partners and the dilemma that such software projects are often under or over-specified and one-time efforts within one team or one course. To address these challenges, we designed a novel foundational SE course. This SE course envisions building a full-fledged Intelligent Tutoring System (ITS) of Programming Assignments to provide automated, real-time feedback for novice students in programming courses over multiple years. Each year, SE students contribute to specific short-running SE projects that improve the existing ITS implementation, while at the same time, we can deploy the ITS for usage by students for learning programming. This project setup builds awareness among SE students about their contribution to a "to-be-deployed" software project. In this multi-year teaching effort, we have incrementally built an ITS that is now deployed in various programming courses. This paper discusses the Intelligent Tutoring System architecture, our teaching concept in the SE course, our experience with the built ITS, and our view of future computing education.
Paper Structure (43 sections, 8 figures, 3 tables)

This paper contains 43 sections, 8 figures, 3 tables.

Figures (8)

  • Figure 1: General idea of an ITS that supports students and tutors in programming courses.
  • Figure 2: Illustrates the general workflow of the Intelligent Tutoring System.
  • Figure 3: Concept of the long-running ITS project that is incrementally built and improved by short-running projects inside SE teaching environment.
  • Figure 4: Participants' Self-Assessed Experience
  • Figure 5: Students' feedback of ITS
  • ...and 3 more figures