Software Systems Engineering
Module aims
This module covers the fundamental technologies for designing and building modern software systems. These include networking and distributed systems, databases, web services, cloud computing and continuous delivery methods. All of these are illustrated via practical exercises and projects.
The module spans two terms. During the first term, core topics will be covered through lectures and labs. During the second term you will combine these in a larger project to build a complete system.
Learning outcomes
Upon successful completion of the course, you will be able to:
- Design a complex software system to solve a given problem
- Apply computer networking principles to build a distributed system
- Apply database technology to store and analyse data effectively
- Evaluate and select appropriately from alternative technical solutions
- Plan and execute the implementation of a complex software system
- Apply modern continuous delivery and "DevOps" practices to deploy software reliably
Module syllabus
The module covers theory and practice for all the core components of modern large-scale software
systems. These include:
- Internet and Web technologies and protocols
- Client-server architectures
- Relational databases and SQL
- Web Development
- Cloud deployment
- Continuous Integration
- Containerisation
- Monitoring and Observability
Teaching methods
The module will be delivered via lectures, lab sessions, self study and group work.
In the initial part of the course lectures and lab exercises will focus on individual technologies providing guided tutorials. As the course progresses, students will work in teams to apply these technologies in combination to build up a larger system addressing a variety of technical requirements.
Assessments
This module is assessed purely through practical coursework and projects.
- Student groups will present their work at regular checkpoints through the course
- You will be assessed on your mastery of the techniques and technologies covered together with your ability to apply them effectively to solve new problems.
Lab and project work will be marked with written or oral feedback as appropriate. Formative feedback will be given by mentors during lab and clinic sessions.
Reading list
Web Development
-
Flask web development : developing web applications with Python
Second edition., O'Reilly
-
REST in practice
1st ed., O'Reilly
-
REST in practice : hypermedia and systems architecture
O'Reilly
Databases
-
Learning SQL
First edition., O'Reilly Media
-
Learning SQL, 2nd Edition
2nd edition, O'Reilly Media, Inc.
Agile and Continuous Delivery
-
Extreme programming explained : embrace change
2nd ed., Addison-Wesley
-
Continuous delivery
Addison-Wesley
-
Continuous Delivery
1st edition, Addison-Wesley Professional
Cloud
-
Building microservices
O'Reilly
-
What is serverless : understand the latest advances in cloud and service-based architecture
First edition., O'Reilly Media