Concurrent Processes - COMP97008
The course is motivated by the increasing need for a theory of concurrent process in real systems and languages. Classroom sessions will include traditional lectures and some supervised problem solving, which are designed to illustrate the principles. The lab sessions will use one of the main stream programming languages for distributed communications and protocol description languages.
The course provides the theories and techniques to analyse concurrent computations based on the basic mathematics behind process algebra and their type systems. The course will look at principles of concurrent message passing programming and software, addressing specification and design of message passing languages and distributed protocols. You will learn the application areas of concurrent processes and their type systems, including actor-based programs (such as Scala), channel-based programs (such as Go), network protocols (such as SMTP/HTTP), robotics programming and microservices.
More specifically students will:
1. Gain familiarity with the operational semantics and theory of concurrent processes
2. Learn the principles to evaluate various process calculi in the literature and examine their expressiveness
3. Learn a type theory of concurrency and communications in order to specify and verify message-passing communications
4. Practise concurrent processes and type theory via several applications -- network protocols, program analysis, and concurrent robotics.
5. Be able to apply the taught techniques of concurrency theories to ensure correctness of concurrent applications such as deadlock-freedom and type/communication safety.