Back to list of courses

MSc in Software Engineering

Overview & Contacts

For general information:

Johny Stokoe
Postgraduate Admissions Administrator

Tel: +44 (0)1904 325404
Fax: +44 (0)1904 325599
E-mail: postgraduate@cs.york.ac.uk

For informal discussion:

Dr Tommy Yuan
Admissions Tutor

Tel: +44 (0)1904 325697
Fax: +44 (0)1904 325599
E-mail: tommy@cs.york.ac.uk

Overview

Full Time - This course is only available full time.

9 Assessed Modules plus an individual project carried out in the department. All modules are compulsory except Formal Specification and Topics in Privacy & Security which students will choose between.

Software Engineering has become a crucial discipline in the functioning of the modern world. Information systems, communications, transport, manufacturing and services all require well-engineered and reliable software. This course focuses especially on software systems with a high requirement for dependability.

Course Structure

The MSc in Software Engineering is a full-time one year course consisting of nine assessed modules and a six month individual project carried out in the Department.

Learning Outcomes

  • A thorough grounding and practical experience in the use of state-of-the-art techniques for developing software-based systems.
  • An understanding of the principles behind these techniques, so as to make sound judgements during systems and software design.

Meet our Students

Small pic of Yi Yang

Yi Yang explains how the MSc in Software Engineering helped his career

Transferable Skills

Information-retrieval skills are an integrated part of many modules; students are expected to independently acquire information from on-line and traditional sources. These skills are required within nearly all modules, are an essential part of project work. During the team project, team working skills are developed. Students are also expected to give a presentation of the results of their project work, hence developing presentational skills.

Numeracy is required and developed in most modules. Time management is an essential skill for any student in the course. The formal timetable has a substantial load of lectures and labs. Students must fit their private study in around these fixed points. In addition, Open Assessments are set with rigid deadlines which gives students experience of balancing their time between the different commitments.

All students in the University are eligible to take part in the York Award in which they can gain certified transferable skills. This includes the Languages for All programme which allows students to improve their language skills.

Attendance

Full-time taught postgraduate courses run for 12 months from the start of the academic year in October.  Students on these courses are expected to be in attendance at York for the full 12 months, except for when the Department is closed. Please contact the Postgraduate Admissions Administrator for more details.

Modules

Overview

The MSc course consists of nine assessed modules and a six month individual project carried out in the Department.

The current course modules are as follows:

  • Group Project: Software Management
  • Requirements Engineering
  • Formal Specification
  • Object-Oriented Design
  • Concurrent & Real-Time Programming
  • Systems Architectures
  • Software Management & Testing
  • User Centred Design
  • Topics in Privacy & Security

Most modules have an associated assessed exercise, which takes approximately 35 hours. Three modules involve closed examinations. The project is examined by dissertation; the amount of time required to complete it is approximately six months.

Each student is allocated a personal supervisor in the Department who meets the student regularly to discuss progress during both the teaching and project phases.

Course Components  -  2011/12




Click on Module TitleModule Title Term Short Description
Group Project: Software Management
Autumn & Spring The group project aims to provide students with project management skills and techniques, which are directly applicable to a software project. Students will work in teams to engage in a practical software project aiming to produce a high quality software artefact.
Requirements Engineering Autumn Requirements Engineering introduces techniques and processes for eliciting, documenting and analysing software requirements.
Object-Oriented Design Autumn Object-Oriented Design discusses advanced topics of object-oriented programming and design, including modelling with the UML.
Concurrent & Real-Time Programming Autumn Concurrent & Real-Time Programming studies the features of Real-Time Java and applies them to concurrent embedded-systems programming.
User Centred Design
Autumn User Centred Design introduce students the field of Human-Computer Interaction (HCI). This field covers all aspects of people's interactions with digital systems.
Formal Specification Spring Formal Specification addresses the use of mathematical methods in systems development, particularly in high-integrity systems. (Option)
Software Measurement & Testing Spring Software Measurement & Testing teaches methods of software verification, including advanced testing and static-analysis techniques.
Systems Architectures Spring Systems Architectures provides an introduction to systems 'in-the-large', i.e., system components and their interconnections.

Topics in Privacy & Security
Spring
Privacy and Security addresses the variety of modern day security goals, the range of attacks that can be launched, and the security defense mechanism that can be used to counter them. (Option)
Final Project - Software Engineering
Summer & Vacation
A substantial, independent research project building on the taught course. The deliverable is a dissertation.


Timescales, Modules and Project Descriptions may be subject to change.

Project

Team Project

You are taught a broad range of project management skills, which you will directly apply to a medium-sized software project that is conducted in small student teams.

Individual Project

The course concludes with your individual project. You may choose a topic among the many offered by the academic staff, or you may propose your own topic. Some recent topics were:

  • "A Business Process Execution Architecture for Integrating Web Services"
  • "Cryptographic Protocol Animator"
  • "Bioinformatics Sequence Manipulation Tool"

How to Apply

Suitability and Entry Requirements

Software Engineering has become a crucial discipline in the functioning of the modern world. Information systems, communications, transport, manufacturing and services all require well-engineered and reliable software. This course focuses especially on software systems with a high requirement for dependability.

The MSc in Software Engineering course is intended for students who possess a strong Computer Science degree.

Typically, you will have achieved at least an upper second class honours degree (or international equivalent) in Computer Science or a related discipline with an appropriate mathematical basis.

We are willing to consider applications from those who do not fit this profile.  We will, for example, consider applicants who do not have an appropriate qualification but have appropriate industrial experience.

Your knowledge of computer science will include at least the following:

  • Good knowledge of Java, including practical programming.  Knowledge of C++ or C# would also be suitable.  (Suggested textbook: Thinking in Java by Bruce Eckel, 2002).
  • Basic knowledge of Operating Systems, including concurrent programming, busy waiting, semaphores and monitors.  (Suggested textbook: Operating Systems Concepts by A. Silberschatz, P. Galvin and G. Gagne (8th ed.), Wiley, 2008: chapters 4, 5, 6, 7 and 8).
  • Basic knowledge of software engineering and its processes, including software processes, system models and object-oriented design and software testing.  (Suggested textbook: Software Engineering by Ian Sommerville, 2001: chapters 3, 6, 7, 12 and 20).
  • Basic knowledge of logic, set theory, relations, and functions.  (Suggested textbook: Set Theory and Related Topics by Seymour Lipshutz, Schaum's Outline Series, McGraw-Hill, 1998. Chapters 1-6, 14, 15 and 17.)

How to Apply

For more information about completing your application, please take a look at the University’s webpages which tell you how to apply

In particular, please take note of the supporting documents we need to see in order to be able to make a decision about your application.  You are also required to nominate two referees, of which at least one should be from your current employer or place of study.

When you are ready to apply, you can submit your application using our Online Postgraduate Applications Service (OPAS).

While there is no official closing date for applications, it is important to apply as early as possible.

International Students

This course, like all others in the University, welcomes students of all backgrounds and circumstances. 

If English is not your first language, or your first degree was not taught in English, then you will need to have attained a suitable language qualification no more than two years before the start of the course. 

The University's Postgraduate Study webpages will tell you more about the English language requirements for graduate students.

Studentships

The University of York awards a number of scholarships for overseas students each year, and competition for these scholarships is very intense.

Most scholarships only provide partial payment of tuition fees and not living expenses, and most students will need to fund themselves. 

We can give further advice on how much you should budget for and other ways in which you can fund your MSc course; for example career development loans, an employer's bursary or secondment.

Information for students

Being prepared for your MSc in Software Engineering at York

The Software Engineering course is an intensive advanced course that assumes entrants have a strong background in Computer Science. For example, we assume that all entrants are accomplished programmers, and we use the Java programming language on the MSc. If you are not comfortable programming object-oriented systems in Java, then we strongly recommend you study this topic before you arrive. An appropriate text to bring you up to speed is:

  • Charatan, Quentin and Kans, Aaron (2009) Java in Two Semesters (3rd edition) McGraw-Hill

If you cannot get hold of this book, then we have prepared some introductory material for you to study.

Most undergraduate Computing degrees have courses on the fundamentals of operating systems, where students are exposed to issues of concurrency and how to program multi-threaded applications. If your past programming experience is only with sequential programming, then, again, we strongly recommend that you familiarise yourself with this topic. Chapter 22 on Multi-thread Programming in the above book is a good place to start. The web material below also covers this topic.

It is also assumed that entrants will have a basic knowledge of discrete mathematics (i.e. logic, set theory, relations and functions). We recommend the following book to refresh your mathematical background:

  • Lipshutz, S. (1998) Set Theory and Related Topics, Schaum;s Outline Series, McGraw-Hill (particularly Chapters 1-6, 14, 15 & 17)

Java material

The following slides and exercises cover essential background material in Java and concurrency:

   Lecture notes
 Lab exercises
Extra material alongside
the recommended textbook
Basics
 pdf  Exercise 1: pdf
 
 Intermediate  pdf  Exercise 2: pdf
 Extra Java notes: pdf
 Advanced topics
 pdf  Exercise 3: pdf
 Java code conventions: pdf

Discrete mathematics

Modern systems are critically dependent on software for their design and operation, and the new generation of system developers must be experts in the specification, design and implementation of dependable software using rigorous development techniques. Discrete mathematics underpins all these techniques. These slides present the basic logic required for the MSc in Software Engineering:

The solution to the problems can be obtained from Professor Jim Woodcock.

Residency requirements  -  2012/13

Due to the intensive nature of the course, students are required to be in York during the following periods:

  • 8 October 2012 - 14 December 2012
  • 7 January 2013 - 29 March 2013
  • 22 April 2013 - 20 September 2013
However, it should be noted that the MSc is full time and it is assumed that students are working whether or not they are in full attendance.

A student view

"...the kind of skills you can't learn from a textbook..."

Still of James Mistry from his video about MSc in Software Engineering

We know how important it is that your Masters degree prepares you for the workplace. That's why we work hard to collaborate with industry and leading researchers in the discipline to keep our courses up to date and relevant. And our employability figures show that this is working: over 97% of our postgraduate students go on to employment or further study within six months of graduating from York.

We asked a recent graduate, James Mistry, about his experience at York, and how his time here prepared him for the workplace. He currently works for BT, and was happy for us to film him so that you can find out why he chose to study here.

Watch the video now.

Back to Top