Page 1 of 1

Module Code - Title:

CS4297 - APPLIED SYSTEM DESIGN

Year Last Offered:

2025/6

Hours Per Week:

Lecture

2

Lab

2

Tutorial

1

Other

0

Private

5

Credits

6

Grading Type:

N

Prerequisite Modules:

CS4416

Rationale and Purpose of the Module:

Large-scale distributed systems are prevalent in today's computing landscape, with applications ranging from cloud computing to social networks and IoT. Understanding how distributed systems work and how to design them is essential for computer science students. This module aims to equip students with the knowledge and skills needed to design, build and maintain robust and scalable distributed systems.

Syllabus:

Introduction to distributed systems: from networked systems to distributed systems, design goals, classification of distributed systems; different architectures; communication, consistency and replications; fault tolerance; security. Big data programming frameworks and systems: distributed file systems, scalable computing, the MapReduce programming model, the Spark programming and computing model, overview of the main components of the Hadoop ecosystem. Database systems for distributed systems: Scalable relational database systems: partitioning and sharding; example implementation in a current relational database system. NoSQL database systems for large scale distributed systems: key-value, column-family, document-oriented and graph database systems; case study of a current NoSQL database system. Essential building blocks of large-scale distributed systems: Apache Kafka, RabbitMQ, Kubernetes, etc. Distributed system design (bringing it all together): design an example large scale distributed system.

Learning Outcomes:

Cognitive (Knowledge, Understanding, Application, Analysis, Evaluation, Synthesis)

On successful completion of this module, students will be able to: 1. Recognise the main principles and issues associated with distributed systems. 2. Describe the MapReduce programming model. 3. Contrast relational databases systems with the variety of NoSQL database systems in terms of scalability. 4. Describe a number of case studies in distributed system designs. 5. Specify the parameters of a distributed system. 6. Design and implement a distributed system.

Affective (Attitudes and Values)

On successful completion of this module, students will be able to: 1. Acknowledge the complexity and importance in large-scale distributed system design 2. Defend the selection of a specific database system 3. Respond to the changing requirements where they arise as a result of business changes

Psychomotor (Physical Skills)

On successful completion of this module, students will be able to: N/A

How the Module will be Taught and what will be the Learning Experiences of the Students:

The module will be taught by industry veterans through a combination of lectures, tutorials and labs with support by guest speakers from industry partners with professional experience in the design and development of large-scale distributed systems. Students will learn to define, design, analyse, and critique system designs using real world parameters in team-based lab settings. The module will be regularly reviewed by various industry partners for further improvements.

Research Findings Incorporated in to the Syllabus (If Relevant):

Prime Texts:

Kleppmann, M. (2017) Designing data-intensive applications , O'Reilly
Tanenbaum, A.S. and van Steen, M. (2017) Distributed systems, 3rd edition. , CreateSpace Independent Publishing Platform

Other Relevant Texts:

Heather Adkins, Betsy Beyer, Paul Blankinship, Ana Oprea, Piotr Lewandowski, Adam Stubblefield (2020) Building Secure & Reliable Systems , O'Reilly Media

Programme(s) in which this Module is Offered:

Semester(s) Module is Offered:

Autumn

Module Leader:

Andrew.ju@ul.ie