Course Description
The aim of the course is to introduce the principles of concurrency and concurrent programming languages. The main contents are processes, concurrency, synchronous and asynchronous communication, non-determinism, shared variables and resources, deadlock, safety and liveness, event-driven multithreads, real-time distributed and concurrent systems, concurrent programming languages (Java, CSP).
Intended Learning Outcomes
CILO-1: Analyse and identify concurrency problems in programs, such as race conditions, interference, deadlock, fairness, and livelock.
CILO-2: Design and implement synchronization mechanisms for shared memory and message-passing in concurrent programs using appropriate techniques, such as semaphores, fine-grained locking, and message queues.
CILO-3: Evaluate the advantages and limitations of physical and logical parallelism in concurrent programming and apply them in the development of concurrent programs.
CILO-4: Assess the challenges of real-time distributed and concurrent systems and apply the principles of event-driven multithreading and concurrency in their design and implementation.