MSc FT Software Engineering
- 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
- The role of XML in computer science
- XML and the semantic web
- XSLT as a programming language
- Knowledge of XML syntax and the various specificationlanguages (DTD, schema) used to constrain the syntax
- Knowledge of the type system underlying XML Schema
- Knowledge of the XSLT transformation language and thevarious programming techniques (structural recursion, pattern matching) needed to use it.
- Knowledge of the design issues involved in XML applications
- 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 - B.Liskov with J.Guttag 'Program Development in Java'. (Addison-Wesley 2001, ISBN: 0-201-65768-6)
- J.Bloch 'Effective Java Programming Language Guide' 2nd edition (Prentice Hall 2008, ISBN: 0-321-35668-3)
or 1st edition (Addison-Wesley 2001, ISBN: 0-201-31005-8)
Further information on the Bloch text may be found here, sample chapters made public on this site will be supplied. - P.T.Tymann and G.M.Schneider "Modern Software Development using Java" 2nd edition (Thomson 2008, ISBN: 1-4239-0123-1)
- A selection of papers will be provided, and are to be regarded as essential reading to supplement the Liskov and Guttag text
- 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 - Ability to quantify and reason about risk
- Ability to use in depth decision support tools
- Ability to analyse and design probabilistic risk models for a wide range of application areas
- Specific focus on software engineering risk
- Ability to reason about and control software engineering risk
- Ability to undertake independent advanced scholarship
- Ability to interpret/ conceptualise/ independently evaluate techniques and applications of techniques in this field of study
- An awareness of the wider context and critical issues surrounding this field of study
- Quantify and reason about risk
- Ability to use in depth decision support tools
- 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 - To survey how technological developments impact on human communication.
- To demonstrate the central importance of human communication for the design of effective information technologies.
- To explore how technology can support richer, more expressive forms of human interaction.
- To provide a basic understanding of the detailed organisation of human communication.
- To provide direct experience in the use of systems for the support of computer-mediated collaboration.
- To introduce techniques for assessing the impact of information technologies on the quality and effectiveness of communication.
- 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 - To give a structured introduction to the languages Haskell and F#.
- To familiarise the student with the underlying type structures and the basic programming methodology.
- To exhibit more advanced type structures (such as functors) and programming techniques such as map-reduce and monadic programming, and to illustrate how these are used to give flexible extendible and parallelisable solutions to programming problems.
- able to program fluently in Haskell and F#
- familiar with the higher-order aspects of the type systems of these languages, and able to use them to structure code
- able to analyse programming problems, to recognise where they can be effectively addressed using components of the following basket of functional programming techniques, and to produce working code using those techniques:
- map-reduce
- monadic programming
- Computational thinking, through the understanding and use of a new computational paradigm
- Presentation of technical material, through provision and presentation of the deliverables for the coursework
- Self-organisation, through the delivery of a final project to time constraints
- 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 - Be familiar with examples of real-time systems (critical and non-critical) and aware of software related accidents.
- Be able to develop embedded systems on a microcomputer using a suitable tool chain through stages of the development lifecycle.
- Understand the problem of scheduling real-time systems and know about scheduling algorithms
- Understand the need for and function of a typical real-time operating systems
- Understand software reliability and the limits of testing
- Use techniques for system modelling and design suitable for real-time systems.
- Apply concepts of safety, risk and hazards to the analysis of systems, using suitable techniques for both systems and software.
- Be aware of regulation and standards for the use of critical systems
- 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 - Introduction to parallel computers,
- Introduction to message-passing systems,
- Introduction to parallel programming strategies,
- Methods for load balancing,
- Issues surrounding shared memory programming,
- An examination of parallel processing for numerical (e.g. parallel sorting) and image processing.
- 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:
- Introduction to Logic for Systems and Program Verification and Analysis
- 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
- 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.
- Introduction to Logic for Systems and Program Verification and Analysis
- 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
- 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.
- Model Checking : To understand abstract state-based modelling.
- Hoare Logic: To demonstrate the use of formal logic as applied to specification and verification of properties of programs, and to describe the principles behind modern Hoare-logic-based automatic program verifiers.
- Logic in Computer Science- by M.Huth and M.Ryan. Cambridge University Press (26 Aug 2004), ISBN: 052154310X
XML and Structured Documents
Summary:XML has very rapidly become an extremely popular (and much-hyped)language. We will examine
Credits:
15.0
Pre-requisites:
Some knowledge of programming (preferably in Java or C++)
Aims:
This course will provide the students with an understanding of, and practical experience of, the roles of structured and semi-structured information in computer science
Objectives:
Understand and use the following;
Core Skills:
Analyse the conceptual structure of real-world information and to translate it into a formal specification
Advanced Program Design
Summary: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.
Credits:
15.0
Pre-requisites:
Previous programming experience.
Aims:
This module covers "programming for those who know how to program". It assumes you are a fairly confident programmer in an imperative language, though not necessarily familiar with the object-oriented paradigm. Its aim is to develop a strong disciplined programming style, with an emphasis on well-specified program components using the object-oriented features of Java.
Objectives:
On completing this module, students will be familiar with the core features of Java, including objects, inheritance and generic typing. They will be aware of, and able to avoid, common pitfalls in badly constructed programs. They will be able to specify and construct Java classes which work well together, are robust and re-usable. They will be familiar with the more well known program design patterns. They will appreciate the key principle of abstraction in producing well-structured programs.
Core Skills:
The main skill developed by this module is a deeper understanding of programming with an emphasis on modular program construction. There is also an emphasis on those aspects of programming required to work successfully with others on large-scale programming projects.
Critical analysis, with reasoning to decompose a complex system into well-defined modules which interact in a clearly specified way is covered as essential to large scale program development in realistic situations.
The module will develop mature attitudes to learning, including some use of original research material and critical analysis of competing claims from programming experts. The programming exercises will develop ability to work independently to deadlines.
Books:
Essential:
Software Risk Assessment
Summary: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.
Credits:
15.0
Pre-requisites:
Students need to have passed: DCS/235 Software Engineering, or equivalent, and some exposure to introductory statistics (E.g. A level) NB: Students who have already taken and passed DCS337 at undergraduate level 3 may not take this masters version.
Aims:
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.
Objectives:
Core Skills:
Books:
Full notes available on course. Supplementary texts include:
Lee, P. 1989. Bayesian Statistics: An Introduction. Arnold.
Jensen FV, ''An Introduction to Bayesian Networks'', UCL Press, 1996.
Fenton NE and Pfleeger, Software Metrics, PWS, 1998.
Pearl J, ''Probabilistic reasoning in intelligent systems'', Morgan Kaufmann, Palo Alto, CA, 1988.
Design for Human Interaction
Summary: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.
Credits:
15.0
Pre-requisites:
None
Aims:
Objectives:
Core Skills:
Critical reading, Conversation Analysis, Ethnography, Design and Evaluation.
Books:
The primary readings for this are research papers will be distributed through the main office. Relevant general background is provided by: Herbert H. Clark, (1996) Using Language. Cambridge, UK: Cambridge University Press. Joinson, Adam N. (2003) 'Understanding the Psychology of Internet Behaviour: Virtual Worlds, Real Lives' Palgrave MacMillan Heath, C. and Luff, P. (2000) "Technology in Action" Cambridge University Press.
The Semantic Web
Summary: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.
Credits:
15.0
Pre-requisites:
XML and Structured Information. Knowedge of logic, its syntax and semantics (up to the first order predicate calculus)
Aims:
To show the role and usefulness of semantic information in the Web To describe a suitable logical formalism for formalising semantic information To introduce the technologies of the semantic web, and discuss their strengths and weaknesses
Objectives:
i) The reasons for using semantic information on the Web ii) Introduction to description logic iii) OWL and other web ontology languages iv) implementation: Jena and other frameworks
Core Skills:
i) Translating common sense knowledge into logical formalism ii) Programming with knowledge representation
Books:
The course textbook is Grigoris Antoniou and Frank van Harmelen, A Semantic Web Primer, second edition (MIT Press 2008)
For reference, the main resource will be the W3C website http://www.w3.org/2001/sw/ (especially the section on Publications / Articles / Interviews)
Another good reference is
Baader et al. The Description Logic Handbook, 2nd Edition
(Cambridge 2010)
Security and Authentication
Summary:The course is concerned with the principles and practice used for secure communications in the Internet.
Credits:
15.0
Aims:
The course aims to give students an introduction to the principles and practice of cryptography and authentication used for network security.
Objectives:
Describe the principles of cryptography and its uses in the Internet. Describe the principles of public-key cryptography and its uses in the Internet. Explain message authentication and digital signatures. Explain the security protocols and methods used in the Internet
Business Technology Strategy
Summary: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.
Credits:
15.0
Pre-requisites:
MTRM019 or ELE402 or ELB3402
Aims:
Understand the importance of technology strategy to businesses and how this is linked to commercial strategy Understand the theoretical knowledge and how to apply it to real-world examples. Students will have exposure to theory and practical case studies to build up their strategic skills. Case studies will be in the International business environment, with specific interest in the UK and Asia.
Objectives:
Acquire project management and strategic management skills. Assess possible solutions to a given problem. Research a topic. Work as part of a team in organising time and sharing tasks.
Core Skills:
Manage time effectively and produce written progress reports and a final report on time. Write a report that communicates a reasoned argument in a structured, clear, concise and well-presented manner. Display effective presentation skills.
Mobile Services
Summary: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.
Credits:
15.0
Pre-requisites:
ELEM002 or ELEM039
Aims:
To enable students to: Understand the characteristics, motivation and opportunities for developing mobile user services Appreciate the strengths and weaknesses of developing mobile services using different software architectures. Understand the development process for creating and maintaining mobile services Understand the e-commerce and management issues associated with rapid development and deployment of mobile services
Objectives:
Describe the basic principles of mobile services Identify the basic components of mobile services and explain how they work Explain the key issues associated with constructing mobile services and the main approaches taken to developing such services. Design and create an application using contemporary middleware Explain the main application areas for mobile services.
Core Skills:
Analyse requirements and design a system (from assignment). Create a well-written report.
Books:
Poslad S. (2009) Ubiquitous Computing: Smart Devices, Environments and Interaction, Wiley, ISBN-13 9780470035603
Functional Programming
Summary: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.
Credits:
15.0
Pre-requisites:
DCS/100 Procedural Programming, DCS/104 Object Oriented Programming, or close equivalents to these.
Aims:
Objectives:
By the end of the course the student should be:
Core Skills:
Books:
Book 1
Title: Learn You a Haskell for Great Good
Author: Miran Lipovaca
Note: Available for free online at http://learnyouahaskell.com/chapters
Book 2
Title: Programming in Haskell
Author: Graham Hutton
Book 3
Title: Real World Functional Programming
Authors: Tomas Petricek and Jon Skeet
Note: Articles available for free online at http://msdn.microsoft.com/en-us/library/hh314518.aspx
Real-Time and Critical Systems
Summary: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.
Credits:
15.0
Pre-requisites:
Software engineering (DCS325 or equivalent); Operating systems (DCS200 or equivalent); Basic knowledge of Computer Architecture is also assumed. Students will be expected to write short programs in C but the modules should be accessible able to program is another language.
Aims:
The aim of this module is to introduce students to the techniques most commonly use in industrial practice for the analysis and development of real-time and critical systems and the theory behind them. It encompasses both aspects of real-time system development and of critical system analysis. Though these topics are not necessarily linked (not all real-time systems are critical), some understanding of real-time / embedded systems provides context for the study techniques used for critical systems.
Core Skills:
Students completing this module successfully will:
Books:
Safeware: System Safety and Computers, by Nancy G. Leveson, Addison Wesley, 1995) ISBN-10: 0201119722
Real-Time Systems Development, Rob Williams, Butterworth-Heinemann, 2005, ISBN-10: 0750664711
Embedded Systems: Real-Time Operating Systems for the Arm® Cortex(TM)-M3, Jonathan Valvano, 2012, ISBN-10: 1466468866
Advanced Database Systems and Technology
Summary: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.
Credits:
15.0
Pre-requisites:
DCS225 Database Systems (or equivalent module): NB Students who have already taken and passed DCS317 at undergraduate level 3 may not take this masters version.
Aims:
To provide students with a critical understanding of the models, architectures and language approaches underpinning recent advances in database technology.
To enable students to carry out critical comparisons between different development and implementation approaches.
To illustrate the application of extended database technology across a range of interesting and complex applications.
Objectives:
To be able to describe approaches to the storage and access of text and semi-structured data
To describe different architectures for the provision of distributed and mobile database technology
To discuss and apply techniques for tuning the performance of database schemas and queries To compare different approaches to data mining. To discuss concepts in the design of temporal, spatial and moving objects databases.
Critically evaluate the appropriateness of different approaches to database management problems in the areas outlined above.
Core Skills:
Group working, written communication, literature research, analytical problem solving.
Books:
Connolly, T., and Begg, C., 5th or 4th Edition, Database Systems: A Practical Approach to Design, Implementation, and Management, Addison Wesley, Harlow, England
Elmasri, R. and Navathe, S.B.N., 6th edition, Database Systems, Addison Wesley, Wokingham, England
Machine Learning
Summary:This course covers methods for machine learning from signals and data, including statistical pattern recognition methods, neural networks, and clustering.
Credits:
15.0
Aims:
The aim of the course is to give students an understanding of machine learning methods, including pattern recognition, clustering and neural networks, and to allow them to apply such methods in a range of areas.
Objectives:
Recall a range of machine learning techniques and algorithms, including neural networks and statistical methods Use concepts from probability theory in machine learning Derive and analyse properties of machine learning methods Discuss the relative merits of different machine learning techniques and approaches Apply machine learning methods to the analysis of signals and data
Books:
Pattern Classification by Duda Hart and Stork; 2nd Edition; Wiley 2001; ISBN 0471056693
High Performance Computing
Summary: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.
Credits:
15.0
Pre-requisites:
Some prior knowledge of networking and operating systems or similar, or by prior agreement of the module leader.
Aims:
To introduce students to the paradigm of Parallel Computing, an awareness of its advantages and current limitations and allow the development of practical programming skills in a parallel computing environment
Objectives:
Students will gain an understanding and practical knowledge of:
Core Skills:
Technical report writing and presentaion, writing skills
Books:
Recomended Texts
Parallel Programming
, Wilkinson and Allen; 2nd. Ed. ISBN 0-13-140563-2, 2005, Pearson/Prentice Hall.
Additional Reading Material
1. An Introduction to Parallel Computing: Design & Analysis of Algorithms, 2nd. Ed
, Grama et al., ISBN 020 164 8652
2. Parallel Programming: An Introduction
, Thomas Braunl (Prentice Hall)
3. Advanced Computer Architectures, A Design Space Aproach
, D Sima, T Fountain and P Kacsuk (Addison-Wesley 1997)
4. Parallel Computing 2
, Hockney and Jesshope (Adam HilgerLtd)
5. Introduction to Parallel Computing
, Ted G Lewis and Hesham El-Rewini (Prentice Hall 1992)
6. Parallel Computing, theory and practice
, Michael J Quinn(McGraw-Hill, Inc. 1994)
Interactive System Design
Summary: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).
Credits:
15.0
Pre-requisites:
An undergraduate course in HCI (for example, DCS224) is an essential pre-requisite to be able to take this course successfully.
Aims:
This course is concerned with the design of interactive computer systems. The focus is on theoretical issues and models rather than on the technology of interaction. The course is intended to provide students with insight and experience in the key issues of the design process rather than providing a comprehensive coverage of the area. Students should come away from the course with the ability to identify issues and trade-offs in the design of interaction and to be able to invent and evaluate alternative solutions to design problems.
Objectives:
Students will be able to;
Understand the issues surrounding interactive computing, including a historical perspective
Analyse and evaluate existing designs
Invent and evaluate new designs
Core Skills:
The coursework involves a substantial amount of team-working so will develop your team building skills. It will also involve written communication skills and presentation skills.
Program Specifications
Summary: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.
Credits:
15.0
Pre-requisites:
To take this course you must have a basic understanding of logic. Also, the familiarity with discrete mathematics will be useful to follow the materials of the course. However, we do not require students know the proofs of complex theorems in logic or other advanced mathematics.
Books
Logic in Computer Science - by M.Huth and M.Ryan. Cambridge University Press (26 Aug 2004), ISBN: 052154310X
Aims:
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.
Objectives:
New module under development for 2012/13. Information pertaining to this module will appear once approved.
Core Skills:
New module under development for 2012/13. Information pertaining to this module will appear once approved.
Software Analysis and Verification
Summary:The course will cover:
Credits:
15.0
Pre-requisites:
Some previous study of logic and discrete mathematics. Students who have not taken a course on logic for computer science should consider doing some preparatory reading.
Aims:
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 the Spin Model Checker, and on Hoare logic and its application to automatic program verification; students will be expected to use them and to understand and compare their capabilities.
Objectives:
The specific aims of each sub-module are as follows:
Core Skills:
Application of mathematical logic to model problems. Problem analysis and abstraction.
Books:
A relevant overview (recommended to revise logic) is:
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.
Key Contacts
Postgraduate Admissions Administrator
Tel: 020 7882 7335
(int: +44 20 7882 7335)
Fax: 020 7882 7997
(int: +44 20 7882 7997)
Student Voices

Jayashree Sathyanarayanan
MSc Software Engineering"Software Engineering jobs are booming generally, but they need someone like me with the usability skills I learnt on the course"
Read moreJayashree Sathyanarayanan
Software Engineering jobs are booming generally, but they need someone like me with the usability skills I learnt on the course.
I’m from India where I did a 4 year Batchelor of Engineering Computer Science course before working for a year as a software engineer. The QMUL modules fitted the skills I was interested in advancing - specifically Interactive Systems Design and Entrepreneurship. They are really useful for when I go back to work. When I return home I now think I will get a job in usability. There is a really important niche that few people have the skills for. I can now fill that niche!
Guliman, Jayashree and LiShiang were on the winning team for coursework project as part of the Interactive Systems Design Course. Their design and a longer interview with them can be found on the pages of cs4fn.

