This information sheet indicates how the course will be organized at pandemic code level yellow and green.
If the colour codes change during the academic year to orange or red, modifications are possible, for example to the teaching and evaluation methods.

Distributed systems

Course Code :1001WETIGS
Study domain:Computer Science
Academic year:2020-2021
Semester:1st semester
Sequentiality:Minimum 8/20 for all courses of the 1st bachelor
Contact hours:45
Study load (hours):168
Contract restrictions: No contract restriction
Language of instruction:English
Exam period:exam in the 1st semester
Lecturer(s)José Antonio Oramas Mogrovejo

3. Course contents *

Distribution has become the de facto standard to build complex software applications. These systems often consist of smaller individual systems, which are connected with a network. As such, they are the basis for a growing number of applications in various domains (B2B transaction processing, web services such as Google, Facebook, etc., scientific programming, peer to peer systems, etc.)

Connecting these individual systems through middleware and capablities in the OS allow a developer to exceed the physical limiations of an individual system (in terms of memory, hard drive, etc.). The scale at which web services are offered to customers, make it even more important to develop distirbuted systems and integrate them into an existing IT system. 

Devleoping this distributed systems however has a higher complexity compared to traditional standalone software. The course "Gedistribueerde Systemem" (Eng: Distributed Systems) investigates the core issues that arise when building such systems (e.g., in terms of replication, coordination, etc.). It provides algorithms to deal with these issues and enforce a certain level of transparancy for the end user. Some of these algorithms are formally defined and their properties are derived. Finally, we discuss a set of best practices and de facto standard technologies to develop the state of the art distributed systems. 

More specifically, the course covers the following aspects:

  • Architectural models: what is a distributed system? Types of distributed systems. 
  • Communication: how dow middleware help in building a distributed system?
  • How are these general approaches being used in existing systems?
    • Cloud computing
    • Web services
    • Micro services
    • Data processing pipelines such as Hadoop 
  • Design of algorithms to control the aforementioned technologies such as
    • Coordination: concurrency control, election, etc. 
    • Replication

The theoretical knowledge is applied in a project where the implemenation of one or more distributed systems is targeted.