Files
Abstract
Software systems that employ concurrency (e.g. online reservation, e-commerce, banking,brokerage, social networking, and medical systems) are becoming more and more prevalent.For such systems, the safe use of concurrency and synchronization and its optimization arekey to success. However, practitioners often find multi-threaded concurrent software systemsdifficult to design, verify and maintain. Common difficulties inherent in concurrent softwareinclude safety, liveness, and non-determinism issues.Our research aims to investigate which aspects of learning about and employing concurrencyand synchronization are most difficult and what methods and tools can be used toeffectively ameliorate the difficulties. Specifically, this research (1) empirically investigatesthe challenges encountered by novices engaged in learning about concurrency; (2) empiricallyevaluates the usability of existing notations, tools, and methods intended to addressthose challenges; (3) proposes, develops and empirically evaluates new notations and tools;(4) generates a body of reproducible, empirical knowledge that informs improvements inteaching proper use of concurrency and synchronization.