Introductory research of human factors in concurrent programming
University of New Brunswick
Researchers have found that concurrent programming is difficult to learn and hard to master, and people who have little experience in concurrency tend to overlook some key features of concurrent programs, resulting in unexpected program behavior. To understand how people understand concurrent programming, we conducted a study focusing on the mental representation of concurrency. This study is dedicated to finding and understanding the relationship between the three types of mental models: program model (the code structure), situation model (the meaning and purpose of the code), and execution model (the machine-level execution pattern) involved in the understanding of concurrent programs. We designed a questionnaire concerning these three models with different questions categorized into either of these models. This questionnaire measures programmers’ understanding of a concurrent Java program. The experiment divided the participants into two groups and assigned a different task to each group. The tasks are named either “read-to-recall” (participants need to describe the purpose of the program) or “read-to-do” (participants need to find bugs). Participants were instructed to read the code while describing the purpose or bugs of the code first, and were then asked to answer a series of questions immediately after without the presence of the code. The results show that no significant difference exists between these two types of tasks (for the purpose describing or bug finding) when people try to understand the program. On the other hand, we found that there exist a few differences in programmers’ understanding of the three types of mental models, as seen by how accurately participants answered the questions.