Module Code - Title:
CS6524
-
SOFTWARE MEETS WORLD
Year Last Offered:
2025/6
Hours Per Week:
Grading Type:
N
Prerequisite Modules:
Rationale and Purpose of the Module:
This is Block 17 (15 ECTS) on the 3+1 Integrated BSc/MSc Immersive Software Engineering and is the third block of the MSc track. It runs in the autumn semester Weeks 8 to 15 (8 Weeks) and is classified as 2 1 in SITS.
This is the masters level block on software architecture. By the end of this, students will be able to scale a system from tens and thousands of Requests per Second (RPS), to millions of RPS. They will architect systems with the following qualities:
- Observable and traceable for incident response and automated alerting.
- Best practice change management procedures are in place, and includes breaking up a system into multiple components that can be deployed individually for the sake of better change management.
- Incident response procedures are in place.
- System state is managed and built for horizontal scalability
- Students are familiar with common data requirements and have implemented techniques for compliance with them (i.e. GDPR, data-locality) and architect systems to be compliant with thoserequirements.
- Distribute load across a horizontally scaled system.
In this process of doing this, students will blend together theoretical techniques that have been mathematically proven to be effective, and industry best practices demonstrated in technical conferences and in their residencies. Students in this track will perform original research synthesizing these techniques and technologies together into their own best practices. Finally, as a capstone to the whole experience, they will work on a thesis or conference talk as part of the final residency where they will practice these techniques and teach others about their results. By the end of this experience, students will be valued by those looking to scale their systems from a small start up to an industry titan.
Syllabus:
1. Queuing theory
2. Change management best practices
3. Deployment patterns, such as: monoliths and micro-services, rolling deploys, blue-green deploys
4. Legal requirements for software: GDPR, and data-locality.
5. Monitoring hardware resources: Understanding the resources provided by a computer, eg. CPU, RAM, disk; how to measure and monitor those resources; diagnosing problems with a system, for example whether a system is out of memory, storage, processor locked, file descriptor starved etc.
6. Distributed system techniques, such as: consensus algorithms (Raft implementation), database sharding techniques, load-balancing, edge networking
7. Security considerations, such as: limiting the blast radius of attackers; limiting unintended egress/ingress; developing threat models for a distributed system
8. Disaster recovery techniques, such as: backups, replication, cold starts
9. Handling sensitive data; managing access and distribution of user personally-identifiable information (PII), API keys, cryptographic certificates
Learning Outcomes:
Cognitive (Knowledge, Understanding, Application, Analysis, Evaluation, Synthesis)
On successful completion of this module, students will be able to:
- Design a change management and deployment process for a given distributed system
- Create threat models of given distributed system
- Design a distributed system that conforms to one or more real or hypothetical data locality and data privacy regulations
- Suggest ways to improve the security of an insecure distributed system
- Choose appropriate metrics and monitoring approaches for a given distributed system
- Diagnose the problems with a distributed system in a range of different failure scenarios
- Design a distributed system capable of recovering from a catastrophic data loss
- Suggest ways to improve the security of a system that manages its sensitive data poorly.
Affective (Attitudes and Values)
On successful completion of this module, students will be able to:
Psychomotor (Physical Skills)
On successful completion of this module, students will be able to:
How the Module will be Taught and what will be the Learning Experiences of the Students:
The block is taught using the problem-based learning, the flipped classroom concept, and blended learning in a state of the art laboratory setting with an emphasis on collaborative practice and technical excellence. Learning and teaching will be research led with a focus on translating theory into practice, innovation and knowledge creation.
Research Findings Incorporated in to the Syllabus (If Relevant):
Prime Texts:
B. Beyer, J. Petoff, C. Jones, and N.R. Murphy.
(2016)
Site Reliability Engineering: How Google Runs Production Systems
, O'Reilly
M.Kleppmann .
(2017)
Designing Data-Intensive Applications
, O'Reilly
Other Relevant Texts:
B. Burns. (2018)
Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services
, O'Reilly
Programme(s) in which this Module is Offered:
Semester(s) Module is Offered:
Autumn
Module Leader:
james.patten@ul.ie