A method for automatic feedback to improve student code quality in software engineering education
Software quality has always been a hot topic of concerning in software industry area. It is obvious a hard time to define software quality. Also, software quality is difficult to measure as it involves variety of aspects. In the context of software engineering, software quality is the totality of functionality and features of a software product that bear on its ability to satisfy stated or implied needs.
Computer programming is studied by many first year students in university courses. For most novice programmers, taking an introductory programming course is difficult because learning to write programs requires symbolic reasoning and programming languages are hard to understand. That is one of problems teachers face in software engineering education. Another problem for teachers is how to improve the quality of programs written by students in class teaching and lab exercises.
The goal of my research is to provide timely feedback to students who are learning to write programs. The feedback will enable them to improve the quality. The thesis proposes to develop automated tools to test student programs and to provide meaningful feedback so that they can identify their own mistakes in time. The thesis also analyse student programs to identify their mistakes and misunderstandings so that we can provide good-quality feedback and write test programs that identify when a student has made an error and show them how to correct it.
My research focuses on the impact of implementation of test cases and feedback in an introductory programming unit to improve student code quality. The quality of software is important to the success of software product. Low-quality software can be very costly for users as it would lead a high effort to operation and maintenance which cannot be acceptable. By losing the product’s quality, the cost for operation and maintenance can be higher than expected.
The implementation of test cases is one possible way to prevent novice failures happening and to ensure code inspective coverage, that is, code testing covers as much code as possible. This is the most effective approach because the test cases can have a good coverage of possible errors since instructors have the experience to predict common student mistakes and misunderstandings.