Imperial College London


Faculty of EngineeringDepartment of Computing

Professor of Computing



+44 (0)20 7594 8240n.yoshida Website




556Huxley BuildingSouth Kensington Campus




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. 


Course Leader