Lecture Notes on Programming Concurrent Computer Systems
Zhiming Liu · 2005
Concurrent programming is the activity of constructing a program containing multiple processes that execute in parallel. The aim of the course is to introduce the basic concepts, principles and techniques in programming concurrent computing systems, and to provide practice in solving problems and skill in writing concurrent programs. The course will also provide methods for evaluating systems, algorithms and languages from a broad perspective. The course provides the students with understanding of the notations of concurrency, nondeterminism, synchronization, deadlock, livelock, safety and liveness. It provides students with the history of the development different language mechanisms for the realization of synchronization and interactions, including synchronization without using synchronization primitives, synchronization by semaphores, conditional regions, monitors, hand-shake communication and remote invocation. It covers communication via shared variables and message passing. We will take an informal but prices approach in the discussion of of requirements, design and validation of concurrent programs. Zhiming Liu is a research fellow at UNU/IIST. His research interests include theory of computing systems, including sound methods for specification, verification and refinement of fault-tolerant, real-time and concurrent systems, and formal techniques for OO development. His teaching interests are Communication and Concurrency, Concurrent and Distributed Programming, Software Engineering, Formal specification and Design of Computer Systems. E-mail: [email protected]. Copyright c © 2005 by UNU/IIST, Zhiming Liu