Swarm robotics is a discipline that studies fully decentralized approaches for the coordination of large-scale teams of robots (swarms). Research in this field is ambitious: robot swarms are envisioned for scenarios for which solutions are today impractical, too dangerous, or inexistent. From drones to self-driving cars, robot swarms will become pervasive thanks to the development of the Internet-of-Things, and will be used in many applications. Examples of such applications are search and rescue operations, industrial and agricultural inspection, coordinated vehicle platooning, space exploration, and medical or surgical activities. We envision a world where a designer can specify the behaviour of heterogeneous groups of robots, and package this behaviour in an application that can be installed on multiple robotic systems. Swarm-based solutions will likely form the backbone for the upcoming self-driving car infrastructure, and will act as an enabling technology to make widespread robotics a reality. In this tutorial we present Buzz, a programming language designed to provide an adequate level of abstraction to allow developers to express complex swarm algorithms comfortably.