For students with computer science, mathematics, science or engineering backgrounds and good knowledge of computer programming. To improve ability to solve advanced computational problems by providing a thorough knowledge of data structures, design, quantitative analysis of algorithms and algorithmic applications and impart skills necessary for algorithm implementation within the overall context of software development.
Equivalent of a 2:1 honours British BSc degree in computer science, mathematics, physics, chemistry, electrical engineering, or a joint degree in two such subjects. You must also have demonstrable competence in a high level programming language such as Pascal, C, C++, Java, eg have completed first year university level courses in these languages. We may lower entry qualifications for students with substantial relevant work experience.
Advanced Computing MSc
- Algorithmic concepts and practical techniques for solving advanced computational problems.
- Mandatory modules are: Algorithm Design; Data Structures & their Implementation; Parallel & Distributed Algorithms.
- Optional topics include advanced algorithms for: multimedia; information security; network optimisation; text processing; web applications and molecular biology.
We require students to complete an individual project to be eligible for the MSc degree.
Programme format and assessment
Eight taught courses assessed by written examinations. The courses may contain an obligatory coursework component. Assessment of written dissertation. Candidates who fail to complete the dissertation successfully may be considered for the award of a Postgraduate Diploma.
Programme modules for MSc Advanced Computing
Algorithm Design (Core Module)
To introduce strategies for the design of algorithms that are efficient in terms of time and space requirements.
Data Structures and their Implementation (Core Module)
The aims of this course are to present properties, implementations, and applications of fundamental and advanced data structures required for the efficient representation, organisation, searching, and manipulation of computer data. The course uses the C++ programming language as the implementation environment.
Parallel and Distributed Algorithms (Core Module)
To provide students with an introduction and overview to the computational aspects of parallel and distributed computing. To introduce several important parallel computing models that capture the essence of existing and proposed types of synchronous and asynchronous parallel computers. To study typical models for distributed computing. To study a few typical algorithms for each model, selected from various basic areas such as sorting, selection, graphs, matrices, numerical problems, and computational geometry. To provide an important skill for those who may work with large applications since these usually must be implemented on a parallel or distributed system, due to their memory space and speed requirements.
Advanced Research Topics
To teach the student to read and understand research papers and research lectures on their own, and pursue a research topic.
Algorithmic Issues of the Web
In order to search the WWW both efficiently and effectively, new methodologies and algorithms have had to be developed, while at the same time old ones have had to be extended. This course provides an introduction to these methodologies and algorithms, especially the relationship among text, syntax, structure and meaning.
Algorithms for Computational Molecular Biology
The aims of the course are: (i) to understand the major concepts and problems of computational molecular biology; (ii) to appreciate the importance of these concepts in a wide diversity of practical applications; (iii) to learn which of the computational molecular biology problems have efficient algorithmic solutions and which are intractable (for example, which belong to the complexity class NP-complete); and (iv) for some intractable problems, to understand how heuristic approaches to problem solution may yield fast but only approximate solutions.
The aim of this course is to define, analyse and compare abstract models of computation and their associated programming paradigms.
Cryptography and Information Security
To introduce both theoretical and practical aspects of cryptography, authentication and information security.
To introduce efficient algorithms on computational geometry problems and geometric data structures. Applications of these geometric algorithms will be surveyed.
The aims of this course are to study methods for data, audio, image and movie handling and compression as well as to introduce data compression techniques for multimedia and applications of compression, in particular to the Internet.
The aims of this course are to present basic theoretical properties and efficient algorithmic solutions of various network optimisation models, and to describe applications of these models in communication systems, manufacturing, scheduling, and management science.
To introduce the main randomisation techniques for designing efficient algorithms (random sampling, random rounding, random symmetry breaking). To show the application areas where randomised algorithms perform better than the deterministic ones. To provide students with mathematical methods and tools for analysing the performance of randomised algorithms. To highlight the recent research on randomised algorithms.
Text Searching and Processing
This unit is devoted to algorithms processing strings and texts efficiently. These types of algorithms are used for software design in the domains of operating systems utilities, search engines on the Internet, data retrieval systems, analysis of genetic sequences, and natural language processing, for example.