Semester: 8
ECTS: 5
Lectures: 30
Practice sessions: 30
Independent work: 90
Module Code: 23-122-0223
Semester: 8
ECTS: 5
Lectures: 30
Practice sessions: 30
Independent work: 90
Module Code: 23-122-0223

Module title:


Design and mananing high performance computing (HPC)

Lecturers and associates:



Module overview:


The objective of the course is to provide students with systematic knowledge and practical skills needed for designing, implementing, and managing distributed computer systems. Topics include Remote Procedure Call (RPC), concurrency control, storage systems such as the Google File System (GFS), consensus algorithms like Raft and Zookeeper, advanced replication techniques like Cache Replication with Adaptive Quorums (CRAQ), distributed transactions, global data management with Google Spanner, big data processing using Apache Spark, caching strategies with Memcached, and real-world applications. Through this comprehensive curriculum, students gain a deep understanding of the principles and practical implementations necessary for developing robust and scalable distributed systems.
In this module students will learn:
understand the basics and principles of distributed systems. 
understand the basics of distributed programming and performance optimization in distributed environments. 
understand the techniques of managing and scaling distributed systems using algorithms to achieve consensus. 
apply tools and strategies for replication of distributed applications. 
implement Big Data environments using distributed systems (cloud-based and/or on-premises technologies) 

Literature:


Required readings:
1. van Steen, M., Tanenbaum, Andrew S. (2023). Distributed Systems.

Supplementary readings:
1. van Steen, M., Tanenbaum, Andrew S. (2017). Distributed Systems.