Semester: summer 2023/24
Lectures: Monday 10:40 - 12:10, S7 (Petr Tůma)
Labs: Thursday 9:00 - 10:30, SW2 (every two weeks) (Andrej Pečimúth)
Page in SIS: NSWI080
Grading: Graded credit


Middleware refers to technologies used to build modern distributed applications. This is a middleware course for advanced students. It introduces the role of middleware in modern software architectures, and then focuses on individual features typically offered by middleware technologies such as remote procedure call, messaging, deployment and others. For each feature, the course discusses the general issues involved and introduces the specific technologies used to address the issues.


There are no formal prerequisites. However, you should be reasonably competent at reading and writing relatively simple code fragments in common programming languages such as C++ or Java or Python. You should also understand the basic operation of computer networks.

The course aims at Master program students, but senior students of Bachelor program are also welcome. If you like the topic, you will be probably fine.


The course explores the role of middleware in distributed application architectures, with specific middleware technologies serving as examples to demonstrate particular principles. The list of technologies is adjusted throughout the semester depending on circumstances, and may include:

  • Middleware related communication protocols (PGM, AMQP, IIOP, MQTT …).
  • Messaging technologies (MPI, JMS, ActiveMQ, 0MQ, DDS …).
  • Remote procedure call technologies (RMI, gRPC, SOAP …).
  • Shared memory technologies (Hazelcast, memcached …).
  • Technologies for software agents (ProActive, Akka …).
  • Technologies for software components (OSGi, Fractal …).
  • Technologies for data storage (JPA, JTA, Fink, Couchbase …).


The course focuses on solving and discussing lab assignments, each solution is graded on a scale of 0-10 points based on correctness and additional evaluation criteria (presentation, documentation, design, style). The overall grade is determined from the point average (minimum 5 for “good”, 7 for “very good”, 9 for “excellent”). Given that an essential course credit requirement is systematic work during the semester, retakes are not possible.