Communication complexity is the mathematical study of scenarios where several parties need to communicate to achieve a common goal. This tutorial text explains fundamentals and recent developments in an accessible and illustrated form including applications in circuit complexity proof complexity streaming algorithms and distributed computing.