This course covers a wide range of topics in swarm intelligence, including mathematical, computational, and biological aspects. The course is organized in four parts. In the first part, the students will learn about complex systems and the basic concepts of self-organization, such as positive and negative feedback, symmetry breaking, and emergence. The second part concerns several types of network models, such as information cascades, epidemics and voting. The course shows a collection of self-organized systems in nature, finance, and technology as an example of these concepts. The third part is dedicated to swarm robotics, and will cover common swarm algorithms for task allocation, collective motion, and collective decision-making. The fourth and final part covers optimization algorithms inspired by swarm intelligence, namely ant colony optimization and particle swarm optimization. The course considers both theory and practice: students will be implementing the algorithms discussed in class. The final project will involve working on a research problem in swarm robotics, on which the students will have to produce a demo and a research paper.