MSc Computer Science

As the use of computers and computer based systems continues to grow in all aspects of life, at home and at work, it is apparent that there will be for years to come a need for many people who can combine a knowledge of Computer Science, the discipline that underlies Information Technology, and degree level knowledge in a wide variety of other disciplines.

The degree on offer is aimed at graduates from a wide range of disciplines who now, either because they wish to change direction or because of the needs of their chosen career, require a solid foundation in Computer Science. To be eligible for admission students must have either a degree or degree-equivalent qualification, or have a non-degree equivalent qualification along with substantial relevant experience. An example of the latter category would be someone who had worked in a computer related environment for some time and who wished to update or broaden their knowledge. Some level of numeracy is required, but a willingness to work hard and an ability to solve problems is more important than a formal qualification in any particular subject.

Students with a first degree in Computer Science would normally be expected to apply for one of our other, specialist, Masters courses. We offer MSc courses in Computing and Software Technology and Computing and Future Interaction Technology as well as MRes courses in Computer Graphics, Visualisation and Virtual Environments, Logic and Computation, and Computing and Future Interaction Technology. Applicants interested in any of these schemes should contact the appropriate department admissions tutor.

On this page you will find:

One other pages you can find information on:

Course Structure

The course consists of a set of taught modules (70 credits (equivalent to 35 ECTS credits) compulsory and 50 credits (25 ECTS credits) selected from a range of optional modules), and an individual project (worth 60 credits - 30 ECTS credits). Students who only take the taught modules can be awarded a Postgraduate Diploma. It is also possible to obtain a Postgraduate Certificate by completing only some of the taught modules (60 credits - 30 ECTS credits).

The modules on offer vary from year to year as the syllabus is revised in order to keep pace with the rapid developments in Computer Science. Details of the modules expected to be offered in the next academic year can be found here.

In September there is a compulsory intensive module on Programming in Java (20 credits - 10 ECTS credits).

From October to May students attend three further compulsory modules (50 credits – 25 ECTS credits) module, and a further 50 credits (25 ECTS credits) selected from a variety of optional modules that are available. In general these modules are assessed through a combination of coursework assignments and traditional unseen written examinations. The balance between examination and coursework varies for each module.

Project

Students who complete the taught part of the course to a sufficiently high standard undertake an individual Software Project (60 credits - 30 ECTS Credits) for a further three months and prepare a dissertation in order to qualify for the Master's degree. The project will:-

At the end of the project the student is required to submit a dissertation which describes the aim of the project, how it relates to other similar work, how the project has been implemented, and what conclusions can be drawn from the project. In addition the student is required to document the project in an appropriate manner so that it could be used or extended by someone else. Each student is assigned to an individual supervisor to whom the project must be demonstrated along with another member of staff. A wide variety of projects will be possible but is anticipated that a number will be linked to research activities, whilst others will involve working with industry and commerce and be organised in conjunction with ITWales.

Course Content

Compulsory Modules

In addition to the module Distributed Programming in Java, the following modules are compulsory.

Algorithm Design and Analysis (10 credits – 5 ECTS credits) This module will introduce students to various general techniques for algorithmically solving computational problems, as well as equipping them with tools to analyse problems to determine their inherent difficulty.

Data Storage and Manipulation (10 credits – 5 ECTS credits) The module will enable students to: determine the appropriate data structures and data management techniques in a variety of software applications; formally specify a range of abstract data types; understand the implications of the object-oriented paradigm on the specification of data types and on data management; understand the implications of working in a distributed environment on data management; implement a range of data structures and data management techniques in different ways, and be able to determine the efficiency and complexity implications of the different approaches. The object-oriented language Java will be used for practical implementations.

Computer Software Systems(30 credits – 15 ECTS credits) This module aims to provide students with a complete picture of the operation of a computer system, both hardware and software. The course concentrates on ideas and principles with examples taken from a wide variety of current computer systems. Students will study the principles of hardware and software design including formal specification methods. Professional Issues and Ethics will be considered. Students will undertake practical work in C and Linux as well as participating in a group project. They will also plan and prepare for their individual Masters Project.

Optional Modules

The remaining of modules are chosen from the following categories, representing

Programming and SystemsTechnology

Writing Web and Web Service Applications (10 credits – 5 ECTS credits)

Building web and web service applications, typically to implement dynamic web pages.

Distributed Object Oriented Programming (10 credits – 5 ECTS credits)
Building applications in distributed applications using the object oriented programming paradigm.

Relational and Object-Oriented Database Systems (10 credits – 5 ECTS credits)
This module gives an appreciation of the complexity of real-world databases. It considers some of the problems that can occur in multi-user, multi-transaction situations. It discusses relational and object-oriented databases and covers their design and implementation. Distributed databases and databases linked to the web will also be discussed, as will data warehousing and data mining. Students will gain practical experience in designing and implementing a database.

Critical Systems (10 credits – 5 ECTS credits)
Students will develop an appreciation of the problems of developing safety-critical system software, together with practical experience.

Design Patterns and Generic Programming (10 credits – 5 ECTS credits)
A study of generic programming and selected design patterns and idioms, using C++ as the teaching language. Students will learn techniques for creating highly efficient and highly reusable libraries.

IT Security: Theory and Practice (10 credits – 5 ECTS credits)
The aim of this course is to examine theoretical and practical aspects of computer and network security. At the end of the course students will be familiar with the models and methods used to systematically construct secure systems or enhance the security of existing systems

Abstract Data Types and Program Synthesis (10 credits – 5 ECTS credits)
Abstract Data Types are an important tool in the design of reliable software. This module gives an introduction to the fundamental principle of Abstract Data Types and their applications.

Artificial Intelligence

Artificial Intelligence Applications (10 credits – 5 ECTS credits)
The module details the fundamentals of knowledge based systems, and presents expert system shells such as CLIPS. It also introduces the student to aspects of soft computing such as genetic algorithms, genetic programming and artificial life, and presents the fundamentals of fuzzy expert systems.

Human-Computer Interaction

Interaction Technologies: hardware and devices (10 credits – 5 ECTS credits)
Students will study the design and use of modern interaction devices including haptic devices, multiple mice, 3D displays and special purpose senses as well as hardware and software protocols such as phidgets and MVC.

Interactive System Design (10 credits – 5 ECTS credits)
Interactive systems are ubiquitous ? from handheld devices, even medical implants, to large systems such as the world wide web. Some systems are safety-critical (such as aircraft flight decks); some are mission-critical (such as ticket machines); some are utilitarian; some are fun. Almost all are badly designed and badly documented ? and they cause users problems. Surprisingly, the theory and practice of interactive systems design is not well-developed, and what is known is not widely known. This module reviews the problems and obvious solutions, and shows how information theory, graph theory, finite state machines, and other elementary computer science techniques, when applied well, can make a huge difference. The module has an underlying theme of the social and ethical imperatives why one should make better systems.

Mobile Interaction Design (10 credits – 5 ECTS credits)
This module presents key human computer interaction design issues, methods, tool and techniques in a mobile and ubiquitous systems context. Students will learn how to improve the user interfaces they design and be equipped to develop efficient, effective and satisfying applications for an important, emerging class of computing device. The module will involve students prototyping and evaluating mobile applications and introduce embedded application development environments.

Theory, Foundations and Formal Concepts

Algebraic Specification Methods for Software and Hardware (10 credits – 5 ECTS credits)
Students will be educated in advanced, algebraically-based techniques for modelling computer systems at different levels of abstraction.

Constraint Satisfaction Problems and Applications (10 credits – 5 ECTS credits)
The prepositional satisfiability problem (SAT) is a basic problem of logic and combinatorics which serves as a general framework for formulating and solving problems in Artificial Intelligence (eg planning and automated deduction), or verification (of software, hardware and systems). This module gives an introduction into this new area, with special emphasis on the design and implementation of a SAT solver.

Logic and Semantics (10 credits – 5 ECTS credits)

Logic, Foundations and Computation (10 credits – 5 ECTS credits)

Logic is the basis of much of our understanding of Computer Science. These modules consider some advanced forms of logic and their relation to theoretical Computer Science.