PI: Prasun Dewan
University of North Carolina at Chapel Hill
Today, when a student or industrial programmer faces difficulty in some task assigned to him/her, this event often goes unrecorded and unobserved by others. As a result, it is not possible to use mechanisms to ameliorate the effect of the difficulty. In this project, the researchers will address this problem by automatically detecting and classifying programming difficulties by mining programmers’ interaction with the computer. Specifically, they will investigate (a) whether it is possible to automatically identify the barrier causing a difficulty and (b) whether it is possible to determine the severity of the difficulty. The project will start a new area of research exploring how difficulty-detection mechanisms should be designed, implemented, evaluated, and applied.
Broader impacts: If successful this research will lead to future work on a variety of difficulty amelioration mechanisms, including (a) allowing industrial workers and teachers to synchronously push help to developers facing difficulties; (b) informing developers facing difficulties about actions taken by others who overcame similar difficulties, so that they can take similar actions; (c) allowing assignment doers to anticipate the kind of difficulties they will encounter and thus be better prepared for the assignment; and (d) giving assignment definers an understanding of the inherent difficulty level of the assignment, which can lead to redefinition or better explanation of the assignment. These amelioration mechanisms can substantially reduce the high costs associated with software development and quality teaching, and transform collaborative software engineering and education. Such mechanisms can lead to significant productivity gains in industry, especially in distributed software development. An educational setting provides an even more compelling motivation because shyness of students and/or lack of instructor time prevents student difficulties from being addressed in a timely manner. In computer science this is particularly a problem as a small mistake can prove to be very costly. The difficulty amelioration mechanisms will reduce this problem and thus attract a larger variety of students to computer science and empower those who are already committed to it.