Software Engineering modules

Year one | Year two | Year three

Year one

Computer Programming I

This module introduces the skills required to develop a computer program to solve a given problem and does so from the perspective of designing trustworthy software with an emphasis on sound coding principles.

Computer Programming II

Computer programming requires the analysis of a problem, the production of requirements, and their translation into a design that can be executed on a computer. The design phase in particular requires the identification and combination of appropriate programming abstractions. This module introduces the skills required to analyse a problem to produce a program specification, and to be able to test solutions to ensure they are trustworthy.

Computer Ethics

The module introduces students to the ethical theories affecting cyber security, software engineering, computer science and digital forensics. It requires them to develop critical analytical skills in applying ethical theories to technological outcomes regarding cyber security, software engineering, computer science and digital forensics.

Computer Law and Cyber Security

The module introduces students to the legal and professional context of cyber security, software engineering, computer science and digital forensics, it addresses legal framework, legal and professional responsibilities of the software engineer, systems manager, computer forensic and security practitioner. The module will address computer ethics, data protection law, UK and international law affecting cyber security, digital engineering, systems management and digital forensics

Computer Systems

This module provides a foundation in computer architecture and operating systems with a specific emphasis on their security. Students will learn about computer hardware, software, operating systems, and demonstrate practical knowledge of these during lab sessions. Studying this module student will be able to relate the abstract concepts of logic and number systems to their concrete representation on real machines and identify the security risks in common configurations of computer operating systems and suggest appropriate mitigations. In the practical lab sessions students will also learn to develop shell scripts.

Computer Networks

This module provides a foundation in modern computer networks with a specific emphasis on their security. Students studying this module will be able to explain how modern computer networks functions and be able to demonstrate a practical knowledge of computer networking. Students will be able to identify security risks in common configurations of computer networks and suggest appropriate mitigations.

Mathematics for Computing

Mathematical structures are introduced that provide a basis for computer science. Specific topics include logic, set theory, probability and statistics.

Database Design and Implementation

Structured data, held in relational databases, accessed via SQL, supports the information storage requirements of many companies, organisations, and on-line businesses. In this module the student will learn the fundamentals of how to design the structure of data within a relational database, how to interact with data within the database, and how to protect the data within the database.

Year two

Software and Security Management

This module introduces the business contexts within which IT projects are procured and developed. This includes the feasibility of computer system development viewed from economic, technical, social, legal, and ethical perspectives. The module covers risk factors and risk assessment during different phases of the lifecycle, and introduces students to the techniques used both to measure and to ensure software quality including processes covering the management and design of trustworthy software (BS PAS744 Software Trustworthiness). 

Object Oriented Design

This module focuses on Object-Oriented (OO) library development and enables students to design, implement, and test medium scale software systems using an object-oriented approach. The design notation used is the Unified Modelling Language (UML) and the implementation language is Java. It is essentially a programming module, with the emphasis on implementing OO designs and producing reusable libraries.

Object Oriented Development

This module focuses on Object-Oriented (OO) application development using the extensive library packages provided by the Java Software Development Kit (SDK). Students enrolling on this module will have already been introduced to key principles of OO class design such as encapsulation and different associations including inheritance. This knowledge will be useful in helping to navigate and make use of a variety of domains within the standard edition API, e.g. Collections, Input/Output, and Graphical User Interfaces. 

Web Application Development

This module provides a firm technical foundation of how a web application can be developed that allows web users to interact with assets stored in databases. 
Modern web applications typically make heavy use of server-side scripting . A server-side scripting language that has achieved prominence over recent years has been PHP. This pragmatic language is used to great effect by some web developers and with catastrophic naivety by others. Rudimentary web application penetration testing will introduced in order to emphasise the hostile attention that public facing web content will attract. It is assumed that students are already competent programmers, prior to starting this module.

Agile Team Development

This module is an opportunity for students to engage in a constrained work-place simulation based on agile software development. Students working in teams of 3 to 5 will initially identify a system of sufficient size to be distributed equally among all members. Work allocation will be monitored under the guidance of their tutor/supervisor. For example each team member might take individual ownership of the development of 2-3 classes from initial inception to completion providing CRUD functionality. In the case of a large system this may mean that some aspects of the system are never built to completion.

Data Structures and Algorithms

This module introduces a variety of data structures and algorithms for sequential execution. Classical data structures will be introduced (including stacks, queues, lists, trees, and hash tables) and algorithms for searching and sorting. The performance characteristics of these data structures and algorithms will be explained. Specific coding issues will also be considered such as modularity, genericity, equality, assignment, mutable and immutable objects.

Concurrent and Parallel Algorithms

The module will introduce students to concurrent program design in the context of multi-core architectures and distributed applications. Where appropriate formal notation will be used for specification.

Big Data and Machine Learning

The module will focus on machine learning and its application to Big Data in a “taster-like” fashion. That is, machine learning will be applied to solve analytics problems using appropriate tools e.g. Apache Spark that avail machine learning libraries. As this is done machine learning algorithms will be introduced and then applied. The focus is therefore not so much on the technical details of the algorithms - rather, the ability to implement them and use them within analytics.

Year three

Development Project

The project requires students to carry out a significant piece of individual work to provide an effective solution to a given technical problem. Students are able to exhibit a range of practical and analytical skills developed throughout their programme, and have the opportunity to demonstrate innovation and creativity. Students are expected to self-manage their project; to investigate, present and review concepts relevant to the subject; to demonstrate the finished product; and to provide a written report in which the key aspects of the work are presented and analysed, and in which the overall approach is subject to a critical self-evaluation.

Systems Building: Methods

This module covers an important aspect of Information Systems Development (ISD): the selection and evaluation of methodologies used in the Systems Development process. 

Mobile Application Development

The module covers mobile computing, mobile communications, and mobile application development. Mobile application development platforms and frameworks will be described, and a suitable platform selected and used to learn mobile application development. Students will learn to develop various types of mobile applications and how to publish the resulting applications in relevant app stores.

Scalable Software Architectures

The module covers software architectures with specific focus on creating scalable, robust, and high-performance software applications for complex contexts. It will use a modern language to study various design patterns and software frameworks. The design principles, rules, and components used in each case will be analysed and demonstrated. The module also covers DevOps technologies for software deployment and operations.

Note: All modules are subject to change in order to keep content current.