Graduation Semester and Year




Document Type


Degree Name

Master of Science in Computer Science


Computer Science and Engineering

First Advisor

(Jeff) Yu Lei


Concurrent programs play a vital role in the world of software engineering. Concurrent programs are used in various fields such as safety critical applications, applications involving advanced graphical user interface, operating system implementation etc. Concurrent programs due to their inherent multi-threaded nature pose a challenge to software engineers not only in coding but also in ensuring data consistency and accuracy. One of the important software constructs used by concurrent programmers to handle critical sections and data synchronization is monitors. A monitor is an encapsulation of shared data, operations on the data and any synchronization required to access the data~\cite{CarTai06:ModMulti}. Monitors are widely used by concurrent programmers since it guarantees mutual exclusion and can be implemented to ensure synchronization between all the threads in a multi-threaded application. All concurrent programs are unpredictable in nature since the output directly depends on the sequence of thread execution. This unpredictability poses a great challenge to concurrent programmers. This thesis mainly proposes and implements a method to visualize the working of monitors in concurrent programs. This would facilitate concurrent programmers to view, understand, analyze and test the monitor implemented in their program. The GUI application is incorporated with JSWAT which is a open-source graphical debugger front end based on Java Platform Debugger Architecture. The motive behind integrating the visualization application and JSWAT is to provide useful features like sophisticated breakpoints, colorized code display, panels displaying call stacks, visible variables apart from visualization of monitor execution. The visualization application analyzes each statement in the code to capture data pertinent to visualization. This data is communicated to the GUI which maps it to the appropriate visualization rule. The visualization rules determine where each thread is to be positioned in the GUI. When the concurrent program is executed in the debugger, the user would be able to view the different threads in different positions in the GUI. The positions would directly correspond to the states of the threads with respect to the monitor. Visualizing the interaction of the different threads with each other and with the monitor would facilitate a concurrent programmer to analyze the program and ensure its accuracy and correctness. This tool can also be used as a teaching aid to instruct software engineering students and novice concurrent programs by helping them to visualize, understand and appreciate the working of concurrent programs in general and monitors in particular. This tool aims to contribute towards easing the burden of concurrent programmers by enhancing their understanding of monitor based executions.


Computer Sciences | Physical Sciences and Mathematics


Degree granted by The University of Texas at Arlington