System to Teach Software Engineering and Programming
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