• Intelligent Systems

System to Teach Software Engineering and Programming

PI: Abhik ROYCHOUDHURY

Opportunity

This is an educational innovation for teaching foundations of software engineering along with a software engineering project. A high degree of realism is envisioned for the teaching of software engineering.

This technology enables the teaching of software engineering via a real-life software engineering project. The students make improvements to the codebase in one offering of the course, and the better projects are integrated into the code base for offering in the next year. This gives the students focus not on large scale programming, but the engineering discipline needed to make smaller changes to the codebase.

Apart from the core novelty of the teaching of software engineering project itself being an actual software engineering project, an Intelligent Tutoring System (ITS) is engineered as part of the project, which can link up the teaching of software engineering with that of programming. The ITS can therefore be used to teach first-year programming classes, and the requirements obtained from the teaching of the first-year programming students guide the next offering of the software engineering project course. The ITS compares the student’s solution with the reference solution from the instructor to find differences. Automated program repair is used to derive the effort involved in repairing the student’s program to the reference program. This repair or patch is processed to either construct feedback for struggling students or to automatically grade assignments.

Technology

The Intelligent Tutoring System (ITS) presents an automated technique to provide feedback and grading suggestions for programming assignments. For a given programming assignment, the tutor provides a reference solution and some test cases, while the student submits a solution and subsequently receives feedback. The feedback goes beyond the simple execution of test cases, by instructing the student where and how to fix the submission. More sophisticated and gradual ways of feedback may also be introduced.

The ITS uses the notion of a pipes-and-filter style to process the submitted program. It finally produces feedback for the students and a grading report for the tutor. All components provide corresponding interfaces to the extent that most components can be implemented independently from each other. This architecture also allows the deployment of specific system components as separate services. In this regard, the design borrows concepts from the service-oriented style.

Step 1: Parser

Step 2: Syntactic Alignment

Step 3: Error Localizer

Step 4: Interpreter

Step 5: Repair

Step 6: Feedback

Step 7: Concretization

Step 8: Auto-Grading

Document Status

Download

Technology Readiness Level (TRL)

6

Product prototype validated in intended environment

Applications & Advantages

  • 01

    The Intelligent Tutoring System (ITS) can be used in schools and departments which may not have teaching support for computing. It can also support online learning of programming for a wider audience.

  • 02

    Teaching of the Software Engineering project itself is a Software Engineering project, providing a high sense of realism where the students see their contributions integrated into the code-base, and have a big picture understanding of the project.

  • 03

    The students’ Software Engineering projects being integrated into an existing codebase teaches students to engineer a small amount of code additions in a complex code base.

  • 04

    Software Engineering project in third-year class on building an intelligent tutoring system which is used for teaching programming in first-year classes, creates a virtuous cycle between the teaching of programming and Software Engineering.