Lectures: Friday, 10:40-12:10, S7 Online via Zoom (Petr Tůma)
Labs: Tuesday, 10:40-12:10, SU2 Offline via Mailing List (every two weeks) (Vlastimil Dort)
Page in SIS: NSWI080
Grading: Graded credit
Mailing list: nswi080@d3s.mff.cuni.cz

Distance Teaching Information

To limit the spread of the corona virus, the course is currently strictly restricted to distance teaching. Please subscribe to the course mailing list to receive detailed information about lectures and labs.

  • Lectures take place online using the Zoom conference system, using the standard course schedule. Individual preparation before class is required.

  • Labs take place offline with assignments distributed using the course mailing list, using the existing assignment deadlines schedule.

About

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.

Prerequisites

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.

Topics

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 (SOAP, CORBA …).
  • 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 …).

Grading

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.