Concurrency is an ever-increasing trend in designing and implementing computer systems. However, their analysis is notoriously challenging due to the combinatorial explosion of their state-spaces. Ad-hoc and manual techniques come short of making any substantial claim regarding quality and correctness of such systems. This school addresses this challenge by presenting a rigorous and expressive modeling framework for specifying such systems and an arsenal of verification techniques to efficiently verify their correctness. We report on several case studies where these techniques have been effectively applied and how they have affected the quality of concurrent and communicating system designs.