The core modules are: Advanced Software Engineering; Software Design & Architecture; and Group Project.
We require each student to complete an individual project.
Programme format and assessment
Eight modules assessed by written examinations. The modules may contain an obligatory coursework component. Assessment of written project. Candidates who fail to complete the dissertation successfully may be considered for the award of a Postgraduate Diploma.
Programme modules for MSc Advanced Software Engineering
Advanced Software Engineering (Core Module)
To convey an understanding of the basic elements of software measurement and testing, in particular focusing on automated test data generation.
Software Design and Architecture (Core Module)
To explore the practice of software architecting as applied to the development of enterprise software systems. To learn about software architecture, architecture patterns, frameworks, design patterns, pattern languages, layers of change, the architecting process and the practical process of software design and implementation. Ideas are put into practical perspective through an introduction to the UML2 superstructure and the .NET COM+ middleware.
Advanced Research Topics
To teach the student to read and understand research papers and research lectures on their own, and pursue a research topic.
Agents & Multi-Agent Systems
To provide a critical introduction to theories and methods regarding multi-agent computer systems and their component agents. To describe some techniques employed in the characterisation of agents and multi-agent systems.
The aim of this course is to define, analyse and compare abstract models of computation and their associated programming paradigms.
Data Structures and their Implementation
The aims of this course are to present properties, implementations, and applications of fundamental and advanced data structures required for the efficient representation, organisation, searching, and manipulation of computer data. The course uses the C++ programming language as the implementation environment.
To study present and predicted developments in database technology from a formal perspective.
Following on from previous courses on operating systems, database systems and computer communications, this course aims to teach the basic concepts and practical technology of distributed computing.
Intelligent Systems for Legal and Administrative Applications
To illustrate the role of knowledge-based systems for legal and administrative applications, through presentation of some examples of such systems. To enable students to make a critical assessment of the requirements such systems are expected to meet, and of the impact they have in legal and administrative practice.
Parallel and Distributed Algorithms
To provide students with an introduction and overview to the computational aspects of parallel and distributed computing. To introduce several important parallel computing models that capture the essence of existing and proposed types of synchronous and asynchronous parallel computers. To study typical models for distributed computing. To study a few typical algorithms for each model, selected from various basic areas such as sorting, selection, graphs, matrices, numerical problems, and computational geometry. To provide an important skill for those who may work with large applications since these usually must be implemented on a parallel or distributed system, due to their memory space and speed requirements.
Policies and Norms
To provide specialist knowledge and understanding of the core aspects of policy representation in the context of Computer Science, with particular reference to access control policies.
Software Engineering of Internet Applications
This course will cover different approaches for building internet applications and the choice of design techniques and technologies involved from a software engineering perspective, considering issues of efficiency, modularity and maintainability.
To provide an overall understanding of the communication model used on the Internet. To provide an in-depth understanding of the main underlying software components of the Internet. To provide an overview of the main languages used on the Internet. To provide an understanding of security threats to Internet application and main techniques used to tackle them.