Course descriptionThe Advanced Software Engineering MSc is a newly redesigned course that enables graduates enable students to extend their knowledge of, and gain valuable experience in, software engineering as it applies to a number of new and important areas of IT and computing.
Graduates will be able to follow a flexible program of study designed to lead to, and enhance, a career in software engineering with a focus on new technologies and areas of application, such as cybersecurity, big data, or mobile application development.
The rapid pace of technical change in software development is notorious and this has been accompanied and compounded by an increase in the complexity of the systems that are developed. Recently this has been most noticeable in the increase in mobile computing and the use of sophisticated hardware that require developer knowledge of new paradigms.
Many applications that run on these systems whether mobile or stationary are distributed in nature and will consume web services provided by service-oriented architectures and cloud-based platforms. There has also been an increase in the use of virtualisation techniques for providing flexible and maintainable systems. Businesses are now regularly using virtualised systems and techniques to lower cost and complexity and increase availability in computing environments.
The surge in cybersecurity issues and threats facing businesses and organisations that depend on IT systems has meant that software engineers need a thorough understanding of security when building and maintaining software applications and systems.
There is an acknowledged national shortage of IT and computing skills in the workforce. In the specific area of software development, a number of factors contribute to this. Most obviously, the rate of technological change means that an individual's specific knowledge frequently becomes out of date. Secondly, many significant technological developments originate in industry rather than academia, and are not yet firmly embedded in undergraduate curricula. Finally, many people enter the software industry without a specific educational background in computer science and acquire much vital knowledge in the workplace in relatively ad hoc ways.
In response to this, for many years the Department of Computer Science has been running courses that combine an emphasis on methodical approaches to the development of software applications and information systems with a determination to equip graduates with a portfolio of relevant research-oriented and practical skills and knowledge to compliment and expand their own knowledge.
The rationale behind the MSc in Advanced Software Engineering is to draw on this experience to provide an education that will cover in-depth specific skills and best current practice in software development where there is currently a significant skills shortage, whilst at the same time instilling important research-based skills that will equip students for independent lifelong learning in fast-changing and technically challenging environment.
Course content:
The Masters of Science in Advanced Software Engineering takes into account the emerging needs of industry underpinned by theory and software engineering practices. As a consequence the modules emphasise both the critical conceptual underpinnings as well as the practical skills for each subject.
Modules:
The following modules are indicative of what you will study on this course. For more details on course structure and modules, and how you will be taught and assessed, see the full course document.
Core modules:
Advanced Software Design
The module will explore consideration of interaction design, development and design methods and core entrepreneurial and management processes through the exploration, creation and development of concepts and business propositions for start-up innovation or client briefs.
Enterprise Development
The module will explore user centred interface design and the user experience through applied theory and practice. Building from the foundations the module will explore common user experience techniques and terminology as well as related design topics.
Concurrency and Parallelism
This module introduces the concurrent programming paradigm using a practical approach to provide the student with the skills and knowledge to be able to analyse, design and develop concurrent programs. Practical experience of concurrent programming is provided via the concurrency features of Java, and in addition, students will be introduced to contemporary industry standards in parallel programming such as CUDA.
Research Methods and Professional Practice
This module strengthens your skills and guides your personal development plan towards the professional and academic requirements of the discipline.
Advanced Software Engineering Project
The project is an extended piece of supervised independent work relevant to the field. This can be either undertaken as a work based project or on a topic proposed by the student or faculty.
Option modules:
In addition you will pursue a pathway of your choice, selected with the guidance and advice of our academic staff. You can chose up to five of the following pathways modules:
Big Data Theory and Practice
This module aims to explain how to manage the volume, velocity and variety of Big Data, and SQL and noSQL databases; it also addresses issues related to data governance and data quality.
Advanced Big Data Analytics
The module discusses the use of big data analytics by enterprise. It includes an overview of underlying concepts and technologies for big data, such as MapReduce, Hadoop, and Hive, as well as discussion of the data lifecycle, from data creation, to processing, publication, and preservation.
Cloud Computing Applications
The module focusses on the principles of cloud computing and the opportunities this new computing paradigm offers for modern enterprise. It gives an overview of underlying concepts and technologies for clouds, such as provisioning models and virtualisation, as well as cloud deployment models and application areas, and new challenges such as security and trust.
Data Mining & Machine Learning
This module will provide an overview of modern techniques in Machine Learning and Data Mining that are particularly customised for Data Science applications.
Data Visualisation and Dashboarding
This module covers the theoretical and practical aspects of data visualisation including graphical perception, dynamic dashboard visualisations, and static data ‘infographics’.
Cybersecurity Threats and Countermeasures
The module examines how human behaviour can compromise or weaken typical cybersecurity processes, and how such problems can be tackled through effective counter-measures, including automatic detection and prevention of threats.
Internet Security
This module examines the theory and practice of internet security, covering topics of cryptography and its use in establishing secure communication, secure network protocols, as well as typical attacks and techniques for compromising network security.
Mobile Application Development
This module will give the necessary knowledge and practical experience to develop native applications that take advantage on the underlying hardware features of contemporary devices.
Mobile and Ubiquitous Computing
The module will explore the mobile and ubiquitous paradigms and the role these technologies are playing within the economy. The module will consider the core technologies as well as the interfaces to support these systems.
Usability and User Experience Design
The module will explore user centred interface design and the user experience through applied theory and practice. Building from the foundations the module will explore common user experience techniques and terminology as well as related design topics.
Free Choice Module
You can choose any appropriate module at Level 7 from the Faculty with agreement of Course Team if you can meet any requirements and it is available.