MSc FT Software Engineering

G4S4 / MSC
Duration:
1 Year

Description

This MSc programme focuses on advanced theoretical and practical techniques in program design, and the management of software project risk. It includes training in vital areas such as security, specification, risk management, usability, and design integrity.

You will learn advanced techniques in program design (including software patterns and component technologies) and information handling (structured information, databases). You can study key issues of interactive system design, leading to the ability to identify issues and trade-offs in the design of human-computer interaction, and to invent and evaluate alternative solutions to design problems. You will gain knowledge in the mathematical foundations of software and the practical application of these techniques. You will develop skills to manage software project risks and learn about the development of tools to support decision-making.

Modules

Year 1
XML and Structured Documents
XML and Structured Documents

XML has very rapidly become an extremely popular (and much-hyped)language. We will examine

  • The role of XML in computer science
  • XML and the semantic web
  • XSLT as a programming language

Read More
Advanced Program Design
Advanced Program Design

The core of the module is concepts and techniques of object-oriented programming in general and the use of Java in particular. It will consider issues in class and interface design such as immutability, composition versus inheritance, minimising dependency and generalisation. The module will also examine a number of Design Patterns. Exceptions, type variables, iterators and other advanced aspects of the core Java language will be covered. Java's Collections Framework will be considered in detail as an example of a coherent set of Java classes designed to work together, and for its use of generic typing

The more general aim is to consider the requirements for creating understandable, maintainable, and robust classes that can be easily reused by others in a team. There will also be some coverage of software engineering principles: analysis and specification of user requirements, object-oriented design, testing and debugging, refactoring. "Agile" software engineering techniques will be compared with top-down design using specifications.

Read More
Software Risk Assessment
Software Risk Assessment

The role of software is increasingly critical in our everyday lives and the accompanying risks of business or safety critical systems failure can be profound. This course will provide students with a framework for articulating and managing the risks inherent in the systems they will develop as practitioners. Likewise, students will learn how to build decision support tools for uncertain problems in a variety of contexts (legal, medical, safety), but with a special emphasis on software development. This course will make a distinctive offering that will enable our students to bring a principled approach to bear to analyse and solve uncertain and risky problems. Course contents: Quantification of risk and assessment: Bayesian Probability & Utility Theory, Bayes Theorem & Bayesian updating; Causal modelling using Bayesian networks with examples; Measurement for risk: Principles of measurement, Software metrics, Introduction to multi-criteria decision aids; Principles of risk management: The risk life-cycle, Fault trees, Hazard analysis; Building causal models in practice: Patterns, identification, model reuse and composition, Eliciting and building probability tables; Real world examples; Decision support environments.

Read More
Design for Human Interaction
Design for Human Interaction

Technology has the potential to transform human communication. It can weaken spatial and temporal constraints on who can communicate. It creates opportunities for new communities and patterns of interaction. It can also provide the resources to enable radically new kinds of human-human interaction. Our intuitions about what makes communication effective are a poor guide. Some technologies, such as videophones, that are specifically designed to enhance communication can sometimes make it worse. Currently, there is no accepted explanation of how technologies alter, and are altered by, the patterns and processes of human communication. Such an explanation is necessary for effective design of new technologies. This research led course explores these issues by introducing the social science of human communication and applying it to the analysis of technologies that support human interaction (video phones, whiteboards, facebook, twitter). We will consider small-scale face-to-face conversations and mass interaction in classrooms and live performances. In each case we will explore how people exploit the resources available to them, such as speech, gesture, touch and body orientation to enable effective, engaging interactions.

Read More
The Semantic Web
The Semantic Web

The idea of putting semantic information on the Web has been around for a long time: we now have the beginnings of a practical application. This has its foundations in what is called Description Logic, which strikes a good balance between tractability and usability. This has led to a Web language called OWL, which is at the centre of modern work on the Semantic Web: there are now useful implementations, and there are workable, if modest, applications of this technology.

Read More
Security and Authentication
Security and Authentication

The course is concerned with the principles and practice used for secure communications in the Internet.

Read More
Business Technology Strategy
Business Technology Strategy

The Business Technology Strategy module is focused on strategic management of research and development and how technology strategy drives the commercial strategy of innovative technology-based organisations. This module complements the technical areas of the degrees by focusing on the telecommunications sector. The increased exposure to and understanding of the benefits of strategic knowledge and thinking will give the graduates a better preparation for management roles within this sector.

Read More
Mobile Services
Mobile Services

Basic mobile services for computer and communication resource poor environments that are accessed over a wireless network and independent of specific devices and platforms are first considered before this model is extended to the realm of ubiquitous or pervasive computing to include context-aware interaction, automated sensing and capture, the disappearing computer and ambient intelligence.

Read More
Functional Programming
Functional Programming

Recent approaches to systems programming frequently involve functional programming either overtly in the sense that they use modern functional programming languages for rapid prototyping, or more covertly in that they use techniques developed in the functional setting as a way of lending greater structure and clarity to code. This module gives a structured introduction to programming in modern industrial functional languages such as Haskell and F# and to techniques such as map-reduce and monadic programming.

Read More
Real-Time and Critical Systems
Real-Time and Critical Systems

Most computer systems do not sit on desks but are inside machine such as cars and medical devices. This module builds on undergraduate knowledge of operating systems and software engineering to introduce techniques for real-time system development in applications where the performance of the system is critical for safety.

Read More
Advanced Database Systems and Technology
Advanced Database Systems and Technology

Active Databases, database performance tuning and query optimisation, database administration and data dictionary, Databases for XML and XML query languages: DTD, model, native database, XPath, XQuery, mapping to object-relational DBMS; Data mining: the exploration of large quantities of data for the discovery of meaningful rules and knowledge; Distributed database architectures: client-server, distributed, federated; temporal-spatial and moving objects databases.

Read More
Machine Learning
Machine Learning

This course covers methods for machine learning from signals and data, including statistical pattern recognition methods, neural networks, and clustering.

Read More
High Performance Computing
High Performance Computing

The 12 week module involves 2 hours of timetabled lectures per week. Laboratory sessions are timetabled at 2 hours per week for 6 to 7 weeks only. The course syllabus adopts a hands-on programming stance. In addition it focuses on algorithms and architectures to familiarise students with message-passing systems ((MPI) as adopted by industry.

Parallel computing, which implies the simultaneous execution of several processes for solving a single problem, is a mainstream subject with wide ranging implications for computer architecture, algorithms design and programming. The UK has been at the forefront of this technology through its involvement in the development of several innovtive architectures. Queen Mary has been involved with Parallel Computing for more than a decade. In this course, students will be introduced to parallel computing and will gain first hand experience in relevant techniques.

Laboratory work will be based on the MPI (Message Passing Interfaces) standard, running on a network of PCs in the teaching laboratory.

The syllabus mirrors the recommended text book very closely. Other text-books are also listed below as sources of additional reading.

The course should be of interest to Computer Scientists and those following joint programmes (CS/Maths, CS/Stats). It is also suitable for Chemistry and Engineering students who are concerned with the application of high performance parallel computing for their particular field of study e.g. Simulation of chemical Behaviour.

Read More
Interactive System Design
Interactive System Design

The main areas of study are (i) interaction and design (ii) modelling of interaction (iii) the design process (iv) design principles and (v) usability evaluation. Various types of interfaces will be considered including those encountered on the web and mobile computing devices. A historical perspective is encouraged in order to provide a means of understanding current and projected developments in the discipline and profession of interactive computer system design.

The course will include seminars and group laboratory classes in which analysis, design and evaluation methods will be used in practical contexts.Students will be expected to participate fully in the seminars by presenting and discussing their own designs and evaluations.

Students will be required to construct prototype interfaces using techniques of their own choice (e.g. Java, Director).

Read More
Program Specifications
Program Specifications

The aim of the module is to introduce the students to some successful logic based techniques and tools used today in Software Engineering and Program Verification.

The module will focus on Hoare logic and its application to automatic program verification and on the Spin Model Checker; students will be expected to use them and to understand and compare their capabilities.

Read More
Software Analysis and Verification
Software Analysis and Verification

The course will cover:

  1. Introduction to Logic for Systems and Program Verification and Analysis
  2. Introduction to modelchecking and Spin
    • Temporal logic: modelling states and operations of a system
    • Modelchecking logics in particular CTL
    • Safety and Liveness in systems
    • Using Spin for checking properties and for problem solving
    • Introduction to software model checking; cbmc
  3. Using Hoare Logic
    • The specification language - describing properties of programs
    • Proof rules in Hoare logic - verifying properties of programs
    • Basic technologies behind building automatic program verification tools based on Hoare logic
    • Using automatic verification tools based on Hoare logic.

Read More

Careers

The programme will enable you to become competitive in the most technically oriented branches of software engineering. Typical jobs after graduation include software risk analyst, system designer, software quality assurance, software engineer, programmer, usability consultant, systems analyst, and software architect.

Recent graduate destinations include Oracle, Thale, University of York.

Entry Requirements

You should possess a good honours degree (minimum upper second class) with a substantial computer science component (at least half) or equivalent industrial experience. You should also have good programming skills for undertaking the practical elements of the programme. For international students we require English language qualifications IELTS 6.5, TOEFL (CBT) 237 or TOEFL (written test) 575.


Similar Courses