Andrzej Filinski (7-6a776d7b836e73496d7237747e376d74)
Saved on the
Multithreaded programming is often considered complex, and
classic concurrency problems, such as race conditions and deadlocks
occur frequently in multithreaded programs. The overall purpose of
this course is to enable the student to use threading as the
primary design mechanism for large, maintainable, and
The course will equip the student with the tools, primarily
Communicating Sequential Processes (CSP), required to understand
and apply concurrency as a fundamental tool for building both
computational platforms (systems-level programming) and end-user
applications. It contains a thorough introduction to the abstract
CSP algebra and its concrete realizations in practical programming
At course completion, the successful student will have:
The CSP framework: concepts, notation, and reasoning
CSP-based libraries and languages, such as PyCSP or Occam.
Implementation techniques for efficiently executing concurrent
programs on highly parallel platforms.
Tools for automatic analysis and verification of concurrent
Proving equivalences and other formal properties of processes
in the CSP algebra.
Designing and implementing highly concurrent programs using the
Analyzing and verifying properties of concurrent programs (or
program fragments), with respect to both correctness and
Construct and validate maintainable, high-performance
concurrent and/or parallel applications according to sound
structuring and reasoning principles.
Communicate effectively and rigorously about key aspects of
concurrent systems in both theoretical and practical
Expected textbook: Tony Hoare, Communicating Sequential
Processes (freely downloadable from usingcsp.com); selected
articles and notes.
Teaching and learning methods
Lectures and mandatory assignments. Independent
work at home will be a major part of the
BSc-level courses in Computer Architecture and