COMP 337: Introduction to Concurrency

Many real-world software systems rely on concurrency for performance and modularity. This programming-intensive course covers analysis, design, implementation, and testing of concurrent software systems.

Credit Hours



This course studies the architecture, design, and implementation of concurrent software systems. Process algebras, formal specification, and testing are used as tools in the engineering of concurrent systems; event-based programming frameworks and thread libraries are employed in the implementation of such systems. Coursework includes several substantial programming projects (in a language such as Java) involving applications of concurrency and event-driven programming such as graphical user interfaces and distributed services using Remote Method Invocation (RMI).


An in-depth understanding of event-based and thread-based views of concurrency; the ability to develop concurrent software components using suitable languages, frameworks, and design patterns; familiarity with object-oriented modeling and development tools and test driven development.