if a picture is worth a thousand words, what would an animation be worth?
This is an exciting time for computer scientists as we are witnessing a paradigm shift in programming. The concept of computing has long passed the definition of simple input-output mapping and evolved to include models of even intricate real-life interactive systems. From the technological front, multicore processors are about to revolutionize the way we design software systems. Therefore, for the design and implementation of software systems, we believe concurrent programming is the natural programming paradigm to adopt. Concurrent programming is hard compared to sequential programming, as the former involves multiple threads of execution within a program. These threads often interact asynchronously with the possibility of unpredictable program behavior. However, as we increasingly witness the need for concurrent programming from both application and technological fronts, we feel the time has arrived to teach concurrent programming as part of our regular computer science and computer engineering curriculum. As concurrent programming is intrinsically hard, we need to find effective ways of teaching it to our students. The contribution in this paper is a step in that direction. We feel that a simulation software with an animation capability would be an attractive tool to teach some fundamental algorithms and concepts in concurrent programming. We have designed such a simulator that can be used as a teaching tool to animate some simple and elegant algorithms, and get deeper into their underlying logic and behavior under various settings.
concurrency simulation visualization mutual exclusion