In Winskel's The formal semantics of programming languages 1993, Ch14 Nondeterminism and parallelism says
This chapter is an introduction to nondeterministic and parallel (or concurrent) pr<r grams and systems, their semantics and logic. Starting with communication via shared variables it leads through Dijkstra's language of guarded commands to a language closely related to Occam and Hoare's CSP, and thence to Milner's CCS. In the latter languages communication is solely through the synchronised exchange of values. A specification language consisting of a simple modal logic with recursion is motivated. An algorithm is derived for checking whether or not a finite-state process satisfies a specification. This begins a study of tools for the verification of parallel systems of the kind supported by the Edinburgh-Sussex Concurrency Workbench and the Aalborg TAV system. The chapter concludes with an indication of other approaches and some current research issues in the semantics and logic of parallel processes.
Are CCS and CSP are still worth studying? Are they useful in real world, or can they be? (I saw a course using that book as one of its textbooks talked about pi calculus instead of CCS and CSP.) If not, what should one study instead?