Introduction to Multi-Agent Programming - Overview

Lecturers: Prof. Dr. Bernhard Nebel and Dr. Alexander Kleiner

Exercises: Dr. Dapeng Zhang and Dr. Christian Dornhege

Time and Location

Lecture: Monday 14:15-16:00
Exercises: Wednesday 14:15-16:00 (not on Nov 4!)
Location: Building 051, Room 00-034


The lecture will be given in English.


Multi-agent systems have emerged as one of the most important areas of research and development in information technology. A multi-agent system is composed of multiple interacting software components known as agents, which are typically capable of cooperating to solve problems that are beyond the abilities of any individual member. Multi-agent systems are important primarily because they have been found to have very wide applicability. The difference between agents and objects from OOP could be stated as: "Objects do it for free, but agents do it for money”. This course will begin by introducing the student to the notion of agents, and will lead them to an understanding of what agents are, how they can be constructed, and how agents can be made to cooperate effectively with one-another to solve problems. During the practicals, students will be split into smaller groups for applying their learned knowledge on programming in a multi-agent domain. As an example domain we choose the (simulated) problem of a team of agents searching for victims after a disaster, and identifying their state. The virtual agents are equipped with different sensors, e.g. a sound sensor, motion sensor, or thermo sensor. In order to report the state of victims correctly, agents have to cooperatively sense the victims' signs of life for concluding their state. We will provide the full domain and 'sample agents' coded in Java. Hence, basic programming skills in Java are mandatory for the practicals. The simulation system runs in Linux. Besides the programming task, algorithmic questions will be part of assignments in the practical.


Topics of this course are:
  • Agent architectures
  • Agent planning
  • Methods of communication
  • Game Theory
  • Common sensnsing and world-modeling
  • Auctions
  • Distributed decision making
  • Cooperation and coordination
  • Learning in Multi-Agent systems


The course has a strong focus on practical solutions to multi-agent systems. Therefore, programming skills in Java and C++ are mandatory. Furthermore, knowledge of concepts from the lecture Foundations of Artificial Intelligence (Grundlagen der Künstlichen Intelligenz), such as search methods, and probabilistic methods, are useful.

Exercises and Exam

Students studying towards a diploma's degree can obtain a certificate ("benoteter Schein") for an advanced course ("Spezialvorlesung") in this course. For students studying towards a Bachelor of Science in Computer Science, a Master of Science in Computer Science or a Master of Science in Applied Computer Science, this course counts as an advanced course in the area "Artificial Intelligence and Robotics". The course is worth 6 ECTS points. For students who study Computer Science as a minor subject ("Nebenfach"), the precise regulations depend on the respective degree programme. Bonus points can be obtained from participating in the practical.


  • [Weiss et al. 1999] Multiagent Systems, edited by Gerhard Weiss, MIT Press, 1999.
  • [Russell & Norvig 2003] Stuart Russell and Peter Norvig, Artificial Intelligence: A Modern Approach, second edition, Prentice Hall, 2003.
  • [Yoav & Leyton-Brown 2009] Yoav Shoham & Kevin Leyton-Brown, Multiagent Systems: Algorithmic, Game-Theoretic, and Logical Foundations , Cambridge University Press, 2009.

Course Materials

In the practicals and lecture, we will use the Robocup Rescue Simulation software. In the first practical on Thursday, we will give some instructions on how to install it on your computers. Alternatively, there will be a computer available you can connect to via the Internet.

Lecture slides