Identifying Extraneous Elements of Novice Source Code

Author/Creator ORCID

Date

2020-01-01

Department

Computer Science and Electrical Engineering

Program

Computer Science

Citation of Original Publication

Rights

Access limited to the UMBC community. Item may possibly be obtained via Interlibrary Loan through a local library, pending author/copyright holder's permission.
This item may be protected under Title 17 of the U.S. Copyright Law. It is made available by UMBC for non-commercial research and education. For permission to publish or reproduce, please see http://aok.lib.umbc.edu/specoll/repro.php or contact Special Collections at speccoll(at)umbc.edu

Subjects

Abstract

This work analyzes elements of novice source code to support the hint generation component of Intelligent Tutoring Systems (ITS). The purpose of an ITS is to provide one-on-one guidance in a specific subject area. An important component of an ITS is the generation of constructive feedback to enable a student to correct mistakes in their work. An ITS applied within a computer science classroom can generate feedback by looking for similarities with the student's code and one or more correct programming solutions. The system would give a hint based on any similarities or lack thereof to guide the student towards a correct solution. The state-of-the-art hint generation techniques do not take into account extraneous (unnecessary within the context of the problem) lines of code in a student's solution. Current systems are not capable of meaningfully identifying these lines, or reasoning about them to give constructive feedback. In this work, I first show that extraneous lines of code exist through analysis of novice source code to show this is a problem worth contributing to. Then, I introduce a method for their identification, and report mixed results when testing this method. This work represents the first steps towards a useful system, and I argue the importance of continued development of this system for the identification of extraneous lines of code