  Providing feedback is an integral part of teaching. Most open online courses
on programming make use of automated grading systems to support programming
assignments and give real-time feedback. These systems usually rely on test
results to quantify the programs' functional correctness. They return failing
tests to the students as feedback. However, students may find it difficult to
debug their programs if they receive no hints about where the bug is and how to
fix it. In this work, we present the first deep learning based technique that
can localize bugs in a faulty program w.r.t. a failing test, without even
running the program. At the heart of our technique is a novel tree
convolutional neural network which is trained to predict whether a program
passes or fails a given test. To localize the bugs, we analyze the trained
network using a state-of-the-art neural prediction attribution technique and
see which lines of the programs make it predict the test outcomes. Our
experiments show that the proposed technique is generally more accurate than
two state-of-the-art program-spectrum based and one syntactic difference based
bug-localization baselines.
