This programme focuses on advanced techniques for the development of software systems, with an emphasis on the construction and management of internet-oriented, agent-oriented and large software systems. It is built around taught core modules such as software design and architecture and a group project that provides experience of working in a syndicate to design, implement and document a substantial software product. These modules are complemented by a range of optional modules that relate to various aspects of computing. The final part of the programme is an individual project which is closely linked with the Department's research activities.
Lectures; tutorials; seminars; laboratory sessions; optional career planning workshops. Assessed through: coursework; written examinations; final project report.
Aims
To convey an understanding of the basic elements of software measurement and testing, in particular focusing on automated test data generation and with a discussion of the relative strengths and weakness of each technique.
Learning Outcomes
To be able to describe, apply and critique several well-known software metrics. To be able to describe and apply several well-known software testing techniques. To be able to compare testing techniques and present arguments relating to the most appropriate choice thereof.
Provisional Syllabus
Measurement: Representation and modelling, Scales, Structural Measures
Unit testing: Control Flowgraph Based testing including Data Flow based testing
Finding test cases using test data generation techniques. Coverage
Slicing and static analysis techniques
Industrial applications and industrial relevance of testing
Comparative software testing techniques
Aims
To explore the practice of software architecting as applied to the development of enterprise systems. To learn about software architecture, architecture patterns, frameworks, design patterns, pattern languages, layers of change, the architecting process and the practical process of software design and implementation. Ideas are put into practical perspective through an introduction to the UML2 superstructure, enterprise component middleware.
Learning Outcomes
To be able to function as a software architect; to have an advanced knowledge of the issues, techniques and processes involved in architecture design; ability to design .NET-based enterprise software systems; expert proficiency in the UML2 superstructure to design architectures; to be able to work with and design metamodels and model transformations.
Provisional Syllabus
Components and connectors in the UML2 superstructure Architectural styles Domain-specific metamodels and case studies A metamodel for enterprise components
Semantics through the OCL
Metamodelling with the Meta Object Facility Model driven engineering and model-driven architecture
Aims
To describe some techniques employed in the characterisation of agents and multi-agent systems. To provide a critical introduction to theories and methods regarding multi-agent computer systems and their component agents.
Learning Outcomes
On completion of the module, you will be expected to have acquired: A thorough, systematic understanding of key features of current theories and methods regarding multi-agent systems and their component agents; A sound appreciation of the conceptual issues involved in the characterisation of agents and their abilities; Knowledge of some of the main techniques employed in the formal characterisation of agents and multi-agent systems; An ability to critically evaluate current work in this field, and to evaluate the principal theories and methods.
Provisional Syllabus
Topics will be selected from:
Intelligent agents and their design
Knowledge in multi-agent systems
The Belief-Desire-Intention model of rational agents
Reactive and hybrid agent architectures
Agent Communication: KQML, FIPA
Auctions and Negotiations Game Theory Argumentation based Reasoning and Communication
Agent-based methodologies Applications
Aims
The aim of this module is to define, analyse and compare abstract models of computation and their associated programming paradigms.
Learning Outcomes
On successfully completing the module you should be able to demonstrate a deep knowledge and understanding of the fundamentals of formal languages and the principal models of computation and be able to work with theoretical/research-based knowledge at the forefront of the subject; judiciously apply and combine tools and techniques (frequently in novel ways) to solve a range of complex subject-specific problems with minimal direction; analyse subject material, draw inferences, and find relationships that demand that innovative thinking be engaged in and creativity be exhibited in formulating solutions; critically evaluate, exercise judgement, and compare and contrast relevant material with minimal guidance and to consider and argue for alternative, novel approaches; demonstrate a high degree of independence in managing your own learning and reflecting upon it in order to complete research tasks autonomously.
Provisional Syllabus
Introduction to abstract models of computation
Finite Automata, Push-Down Automata and applications to parsing
Turing machines
Functional calculi
Interaction-based systems
Concurrent computation
Aims
To provide you 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.
Learning Outcomes
On successfully completing this module you should understand a number of different models of parallel and distributed computing and understand the basic techniques for designing algorithms in these models.
Provisional Syllabus
PART I: Parallel Models and Algorithms
Models of Parallel Computation:
PRAMs; Scan Vector Model; Complexity measures
Designing Parallel Algorithms:
Basic PRAM techniques; Doubling technique; Summation trees and prefix summation
Interconnection networks:
Graph models of networks; Network properties; Searching and sorting on meshes
Sorting and Searching on PRAMs:
Merge sort; Compare-exchange sorts; Batcher‟s sorting algorithms; Computing the Median
Pointer-based algorithms:
List ranking; Tree contraction; Connected components; Minimum spanning tree; All-pairs shortest path
Geometric Algorithms:
Convex hulls; Closest pair of points; Visibility
PART II: Distributed Models and Algorithms
Concepts of distributed computation:
Termination; Failure tolerance; Network topology
Distributed Search:
Distributed BFS
Random walks; Introduction to Markov processes; Random walks (hitting time, cover time (s.t)-connectivity
Distributed networks:
Broadcasting; Robust distributed networks
Aims
This module will cover different approaches for building internet applications and the choice of design techniques and technologies involved from a software engineering perspective, considering issues of efficiency, modularity and maintainability.
Learning Outcomes
You will gain the ability to design and implement internet-based applications in a modular manner, using appropriate languages and techniques. You will also gain the ability to specify and design medium-sized enterprise information systems using appropriate languages and techniques.
Provisional Syllabus
Model-driven architecture and application to internet applications
Client-side processing techniques: JavaScript, HTML
Server-side processing techniques: JSP, Servlets, database interfaces, sessions, connection pools
Modularity and maintainability of internet applications
Java EE architecture and patterns
Web services
Aims
To provide an overall understanding of the communication model used on the Internet. To provide an in-depth understanding of the main underlying software components of the Internet. To provide an overview of the main languages used on the Internet. To provide an understanding of security threats to Internet application and the main technologies used to tackle them. To give you an understanding of the motivations behind internet technologies, suitable for you to evaluate current and future options.
Learning Outcomes
On successfully completing this module you will:
Development of Knowledge and Understanding
Have a comprehensive and detailed knowledge of the computational model underlying the Internet and recent developments in this area.
Know some of the languages used to display, represent, and manipulate information on the Internet.
Understand the security mechanisms used to protect Internet applications from unauthorised use.
Understand how protocols and languages combine to solve communication problems.
Be aware of the issues concerning privacy of personal information on the internet, and be able to apply techniques to protect privacy in any Internet applications you develop.
Cognitive/Intellectual Skills
Be able to analyse Internet-related problems using appropriate techniques and evaluating alternatives.
Be able to design solutions to such problems and evaluate the success of those solutions, possibly developing novel approaches.
Apply your knowledge of the Internet and its languages to these solutions.
Key/transferable skills
Know how to access and evaluate different sources of information regarding Internet standards, and technology standards more generally.
Have experience of solving technical, Internet-related, problems, and arguing for solutions to them.
Practical Skills
Be able to apply your knowledge of languages to meet appropriate software requirements.
Provisional Syllabus
Introduction to the Internet
Historical perspective and current context
Architecture of the Internet
Internet infrastructure
Addressing models
Web servers
Communication model
Internet reference model
TCP/IP
IPv4 and IPv6
Connection handling and flow control
HTTP and other application layer protocols
Resource location
Web languages fundamentals
HTML/XHTML
Form handling
XML
XML validation with schemas
Web service languages
Security on the Internet
Authentication methods
Digital certificates
Public and private key encryption
SSL
Introduction to Web models of information
Semantic Web
Grid computing
2:1 BSc honours degree or equivalent in computer science. We may lower entry qualifications for students with substantial relevant work experience.
Your application will be reviewed by an admissions tutor and we aim to respond to applications within four to six weeks, although this may take longer during busy and holiday periods.
Please submit a one page personal statement with your application, explaining why you wish to apply for this programme and why you feel it matches your interests, academic background, and, if relevant, your career plans. Please include transcripts of subjects taken in the relevant degrees and copies of all certificates and relevant qualifications mentioned in your application.