Cognition is central to any programming task—from understanding and reading source code, selecting programming abstractions and algorithms, and problem-solving to debugging implementations. In the software industry, programmers are faced with numerous challenges that stress the limits of human cognition, leading to errors, lost productivity, and ultimately failed projects. For example, programmers face an exploding array of choices in which languages, platforms, and frameworks they choose to learn and build expertise—all of which may become obsolete or irrelevant when switching to a new project or team. This project’s goal is to understand programmer cognition through brain-imaging techniques and low-cost, widely available, high-fidelity biometric sensors. The anticipated result is the design of tools that more effectively support programmers in working with complex code and acquiring expertise. Beyond the general benefit of better-educated programmers, techniques for teaching computer programming are important in particular because programming is a crucial skill for a digitally literate society.

Past research on programmer cognition has relied on psychological and observational experiments using indirect techniques, such as comparing task performance or having programmers articulate their thoughts in think-aloud protocols. To overcome these limitations, the project will first establish a methodology for conducting a series of brain-imaging studies to obtain brain-activation contrasts between an experimental comprehension task and a control task. To study code complexity, the project will use a parameterized analysis of code, where code is systematically selected to contrast different complexity metrics. The project will develop techniques for automatically reducing code complexity based on discovered principles. To study programmer expertise, the project will use brain-imaging techniques to identify brain regions associated with expertise, identify any cortical differences, and examine any differences in neural efficiency. Furthermore, the learning trajectories of programmers acquiring a new skill will be used to understand the time course of knowledge acquisition. From these studies, one is able to explain the neural mechanics of cognition in programming and derive more effective mental representations, strategies, and training techniques for rapid training of expertise. More generally, understanding and supporting programmer cognition has broader impacts on reducing frustration and dropout in newcomers and identifying unique support needed for neuro-diverse populations.

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.

Agency
National Science Foundation (NSF)
Institute
Division of Computer and Communication Foundations (CCF)
Application #
2045272
Program Officer
Sol Greenspan
Project Start
Project End
Budget Start
2021-07-01
Budget End
2026-06-30
Support Year
Fiscal Year
2020
Total Cost
$209,742
Indirect Cost
Name
North Carolina State University Raleigh
Department
Type
DUNS #
City
Raleigh
State
NC
Country
United States
Zip Code
27695