Skip to content

Introduction

Intelligent Tutoring System (ITS) for Programming and Algorithms Education

Figure 1: General idea of an ITS that supports students and tutors in programming courses.

Motivation

In Computer Science (CS) education, we face the challenge of increasing student enrollments over the past few years. Consequently, it has become increasingly difficult to provide high-quality and individualized learning support, particularly for novice students. Mirhosseini et al. recently conducted an interview study with CS instructors to identify their biggest pain points. Among other issues, they found that CS instructors struggle with limited or no Teaching Assistant (TA) support and the generally time-consuming task of providing student feedback and grading assignments. Thus, CS instructors would greatly benefit from automating tutoring activities to support TAs in their responsibilities.

Development

Intelligent Tutoring System (ITS) for Programming and Algorithms Education is a fully automated tutoring system developed at the Trustworthy and Secure Software Lab of the National University of Singapore (NUS) that aims to provide on-time personalized feedback to students and grading support to tutors/instructors for programming assignments in Computer Science (CS) courses. It is a language-independent system that can be used with any programming language (e.g., Python, Java, C, etc.). It supports various essential functionalities, including syntax error fixing, logical error localization / repairing, and programming conceptual automated grading. Notably, the ITS is tightly coupled with the advanced Generative AI techniques (i.e. large language models) to provide high-level natural language feedback to students. The ITS has been used in CS1010S and CS2040S at NUS.

General Idea

Figure 1 illustrates the general concept of the Intelligent Tutoring System. The lecturer provides reference programs and test cases as specifications of a programming assignment, and students submit their solutions to the ITS. The ITS then automatically fixes the student’s code if it is incorrect and elaborates on the fixes to provide high-level feedback as hints, gradually guiding the student to understand the foundational reason for the error. Additionally, the ITS provides a grading support system that automatically grades student submissions for lecturers.

This website provides detailed documentation of the ITS, including

Experience in Practice

We share our experience in building and using the ITS in the following CS courses at NUS:

This documentation is intended for students, lecturers, and developers who are interested in using the ITS for their programming courses.
Please reach out if you are interested in collaborating with us or have any questions about the system.