CRII: CHS: Improving Code Readability with Scalable Feedback on Students' Code Structure
University Of Utah, Salt Lake City UT
Investigators
Abstract
The project is to conduct a series of pilot studies on the differences in thought processes, strategies, and approaches that novices and experts use in writing high-quality code. These studies are to be undertaken in classrooms at the University of Utah as well as at a diverse set of partner institutions. The goal is to ultimately develop tools and pedagogical methods to help novices become more like experts (specifically, by writing code that follows known discourse rules). In particular, the project will determine how to better help undergraduate students learn to write code that is easy for others to read, maintain, test, and debug. When undergraduate students learn to program, they mostly focus on what the code does. However, in professional settings, it is crucial that code not just work, but also be easy for others to read and maintain. This project will (1) investigate which coding patterns that harm readability or maintainability are common among undergraduate students; (2) develop an automated system for detecting these patterns; (3) explore how practice and instruction on these patterns can help students learn to write code that is more readable. This research aims to improve undergraduate computer science education and promote workforce development. This project will investigate code structures within individual methods that violate commonly-accepted discourse rules for programming (e.g., repeating code within an if-block and its corresponding else-block rather than factoring out the common steps). This project will survey educators and practitioners to determine which discourse rule violations are important to them, and will see which patterns are common in students' code. Students will be surveyed to examine their perceptions of code readability. Written assessments will determine how students' preferences are related to their abilities to comprehend, write, and edit code. This project will develop a tool to detect the target patterns with static and dynamic analysis. This tool will flag the patterns in students' code as they work on assignments, and will offer hints and suggestions. The efficacy and effectiveness of the tool will be tested in a lab-based experiment and in regular classroom settings. This award reflects NSF's statutory mission and has been deemed worthy of support through evaluation using the Foundation's intellectual merit and broader impacts review criteria.
View original record on NSF Award Search →