Ιntelligent Agents and Multiagent Systems

Learning Outcomes

Upon successful completion of this course, students should be able to know principles, paradigmatic architectures and methods for developing single agent and multi agent systems, have a critical and informed view of strengths and limitations regarding agents and multi agent systems, towards designing and delivering such systems.

Specifically, students know and acquire the abilities to develop:

  • Architectures of single and multi-agent systems
  • Methods for agents coordination, collaboration and competition in specific settings and paradigmatic environments and problems
  • Agents’ communication methods and protocols

Via the critical view of agents technology and experience in developing such systems.

Course Contents

  • Agents: Principles, architectures and application examples
  • Deliberation vs Reaction: Architectures
  • Mental attitudes, states and their representation
  • Multi-agent Systems: Interactions and dependencies
  • Multiagent organizations and communication
  • Cooperation and collaboration
  • Agents communication

Recommended Readings

  • Michael Wooldridge, Introduction to MultiAgent Systems, 2008.
  • Yoav Shoham, Kevin Leyton-Brown Multiagent Systems: Algorithmic, Game-Theoretic, and Logical Foundations, Cambridge University Press, 2009.
  • Gerhard Weiss, Multiagent Systems: A Modern Approach to Distributed Artificial Intelligence, MIT Press, 2000.
  • John Miller Scott Page, Complex Adaptive Systems: An Introduction to Computational Models of Social Life (Princeton Studies in Complexity), Princeton University Press, 2007.
  • David Easley, Jon Kleinberg, Networks, Crowds, and Markets: Reasoning About a Highly Connected World, Cambridge University Press 2010.

Associated scientific Journals

  • Autonomous Agents and Multi-Agent Systems, Springer, ISSN: 1387-2532
  • IEEE Distributed Systems, ISSN: 1541-4922

Distributed Systems

Learning Outcomes

The course aims at introducing the student to the basic concepts and fundamental principles of Distributed Systems. Special emphasis is on analytical and critical thinking, providing at the same time an introductory practical experience in the development of distributed applications.

At the end of the course, students will be equipped with fundamental knowledge in distributed systems (see Course Content), which allows the critical deepening in the broad scientific domain of distributed systems, as well as the development of complex distributed applications.

Students will be capable of analyzing and solving problems in the broad spectrum of the distributed systems domain:

  • Streaming communications and optimized distributed playback of multimedia content (minimum waiting time for smooth reproduction).
  • Physical clocks synchronization using various algorithms.
  • Assignment of Lamport logical, vector and causal clocks.
  • Performing ordered multicast (total and causal).
  • Executing distributed mutual exclusion and leader election algorithms.
  • Concurrency control of distributed transactions (locks and pessimistic concurrency control).
  • Calculation of distributed snapshots.
  • Consistency control for distributed storage and use of distribution and consistency protocols.
  • Fault tolerance evaluation in distributed systems, reliable group communication, distributed commit and recovery.
  • Common data representation.
  • Comparative evaluation of physical layer architectures for distributed systems.
  • Performance evaluation, techno-economic and SWOT analysis of distributed systems.
  • Performance optimization of distributed systems, masking communications behind computation.

In addition, students will be capable of analyzing, designing and evaluating complex distributed systems relying on fundamental algorithms and middleware mechanisms, as well as developing distributed system applications using frameworks and middleware for distributed systems, such as the procedural RPC and object oriented RMI frameworks, network programming sockets, MPI programming, the Hadoop and Spark modern development frameworks etc.

Course Contents

  • Introduction to Distributed Systems
  • Higher layer architecture, distributed systems transparencies, scalability, physical layer and operating system for distributed systems, middleware, synchronization semantics in communications, client-server model.
  • Communications
  • Network protocols, request-reply protocol, RPC model, message passing, common data representation, DCE, RMI model, persistency and synchronization in communications sockets, MPI.
  • Synchronization
  • Clock synchronization, logical (Lamport) time, total ordered mulicast, causal ordered multicast, distributed mutual exclusion, leader election, global states and distributed snapshots, distributed transactions.
  • Fault tolerance
  • Concensus and agreement in problemtic systems, reliable client-server communication, reliable communication in a group, distributed commit, recovery.
  • Consistency and replication
  • Data and client consistency models, distribution protocols, consistency protocols.
  • Jana RMI object oriented distributed applications development platform
  • RMI development synopsis, whiteboard and taskbag case studies

During the course, students are invited to develop a programming project, which helps them familiarize with the design and implementation of distributed systems.

Recommended Readings

  • Tanenabum A. & Van Steen M. (2017): Distributed Systems, 3th Edition, Pearson Education, Inc.
  • Coulouris G., Dollimore J., Kindberg T. (2011): Distributed Systems: Concepts and Design, 5th Edition, Addison Wesley.
  • Cavouras Ι., Meles Ι., Xylomenos G., Roukounaki Α. (2011): Distributed Systems with Java: Computer Systems Vol. ΙΙΙ, Kleidarithmos Publishing (in Greek).
  • Pacheco P. (2011): An Introduction to Parallel Programming, Elsevier, Inc.
  • Papadakes S., Diamantaras Κ. (2012): Programming and Architecture of Parallel Processing Systems, Kleidarithmos Publishing (in Greek).