UNIT CATALOGUE

COMP0001: Graphics
Semester 2
Credits:
6
Contact:
Level: Level 2
Assessment: CW25 EX75
Requisites:
Pre COMP0134 and COMP0135, or Pre COMP0140, or equivalent
Aims & Learning Objectives:
Aims: To provide an introduction to the techniques of representing, rendering, and displaying computer graphics, with assessed coursework. Objectives: Students should be able to distinguish modelling from rendering. Students should know the difference between solid and surface modelling and be able to describe typical computer representations of each. Rendering for raster displays should be understood, including lighting models and a variety visual effects and defects.
Content:
Basic mechanisms, concepts and techniques for raster graphics. Output and input devices. Packages. Co-ordinate systems, Euclidean geometry and transformations. Modelling: Mesh models and their representation. Constructive solid geometry and its representation. Rendering: Raster images; illumination models; meshes and hidden-surface removal; scan-line rendering; ray-casting; visual effects and defects. Resolution; aliasing; colour.

COMP0015: Programming
Semester 1
Credits:
6
Contact:
Level: Level 1
Assessment: EX75 CW25
Requisites:

Aims & Learning Objectives:
Aims: To introduce functional programming while drawing out the similarities with abstract mathematics. To show that the mathematical thought process is a natural one for programming. To provide a gentle introduction to practical functional programming. Objectives: Students should be able to write simple functions, to understand the nature of types and to use data types appropriately. They should also appreciate the value and use of recursion.
Content:
Expressions, choice, scope and extent, functions, recursion, recursive datatypes, higher-order objects.

COMP0017: Systems I: architecture & operating systems
Semester 1
Credits:
6
Contact:
Level: Level 1
Assessment: CW25 EX75
Requisites:
Students who undertake this unit should normally have at least 3 A-level passes, (or equivalent) including Mathematics, at grades A,B,B or above
Aims and Learning Objectives:
Aims: To introduce students to the structure, basic design, operation and programming of conventional, von Neumann and non-von Neumann computers at the machine level. To explore the correspondence between high level programming language control and data structures and what happens at the machine level. Objectives: To demonstrate an understanding of how the forms and conventions of high level languages are related to the machine level. To experience how structured programming can be applied in low as well as high level languages. To be able to assess the potential advantages and disadvantages of different architectures and how these may affect system software such as operating systems. To demonstrate an understanding the basic functions and possible organizations of operating system software.
Contents:
Principles of digital computer operation: use of registers and the instruction cycle; simple addressing concepts; Integers and floating point numbers. Input and output. Introduction to digital logic. Aspects of modern computer architectures: Von Neumann and Non von Neumann architectures and modern approaches to machine design, including, for example, RISC (vs CISC) architectures. Topics in contemporary machine design, such as pipelining; parallel processing and multiprocessors. The interaction between hardware and software. Prototypical operating systems and the history of operating systems. Program loaders (e.g. DOS, Windows), operating systems (e.g. Windows, NT, Unix).

COMP0019: Computation III: introduction to formal logic & semantics
Semester 1
Credits:
6
Contact:
Level: Level 2
Assessment: EX75 CW25
Requisites: Pre COMP0139

Aims & Learning Objectives:
Aims: To give the student an understanding of formal logic. To illustrate how these ideas are implemented or partly implemented in logic programming. To introduce semantics of programming languages and domain theory. Objectives: Students should be able to use semantic tableaux and the sequent calculus for proof in the predicate calculus. They should understand the Gvdel completeness theorem. Students should be able to write and to understand the behaviour of programs in a logic programming language, such as Prolog . They should have a basic understanding of semantics.
Content:
Formal grammar and languages, term algebras, unification. Predicate calculus, first order languages, translating from informal to formal language, logical validity, conjunctive normal form, disjunctive normal form, prenex normal form, Skolem form, clausal form. Semantic tableaux, sequent calculus, Gvdel completeness theorem. Logic programming. Introduction to Scott domains and denotational semantics.

COMP0020: Computation II: computability & decidability
Semester 2
Credits:
6
Contact:
Level: Level 1
Assessment: EX100
Requisites: Pre COMP0139

Aims & Learning Objectives:
Aims: To introduce the capabilities of different kinds of machines, to explore the relationship between Turing machines and algorithms, and to explore the limitations of Turing computability. To introduce the Lambda calculus. Objectives: Students should appreciate the limitations of finite-state machines, and the availability of different possible standard formalisations of Turing machines. Students should understand what can and cannot be computed using Turing machines, and the relationship between Turing machines and algorithms. In the lambda calculus, students should be able to find normal forms, when these exist, using alpha and beta reduction.
Content:
Languages and regular expressions. The basic properties of finite-state machines. Nondeterministic finite-state machines. What can and cannot be computed using finite-state machines.Turing Machines. Connecting standard Turing Machines together Grammars, languages and the Chomsky classification. Introduction to Church's Thesis. Universal Turing Machines and limitations of Turing computability. Undecidability, the Halting Problem, reduction of one unsolvable problem to another. Lambda calculus. Alpha and Beta reduction. Confluence. Church-Rosser Theorem.

COMP0022: Formal program development
Semester 1
Credits:
6
Contact:
Level: Level 2
Assessment: EX100
Requisites: Pre COMP0023

Aims & Learning Objectives:
Aims: To convey to students the idea that programming can be presented as a systematic process of calculation with mathematically secure foundations. Objectives: Students should be able to develop modest programs systematically with a complete understanding of the mathematical foundations of the method advocated, and should understand the relationship between formal and informal methods for practical use.
Content:
Programs, specifications, code, refinement. Types, invariants and feasibility. Assignment and sequencing. Control structures: alternatives and iteration. Introduction to data refinement. Dijkstra's weakest precondition and language semantics in terms of it. Basic Theorems for the Alternative and Iterative Constructs and their relevance to program development. Use of the weakest precondition as abasis for the refinement calculus. Proving refinement laws from first principles; deriving one refinement law from another.

COMP0023: C Programming
Semester 2
Credits:
6
Contact:
Level: Level 1
Assessment: EX75 CW25
Requisites: Pre COMP0015

Aims & Learning Objectives:
Aims: To ensure students appreciate the concept of an algorithm as an effective procedure. To introduce criteria by which algorithms may be chosen, and to demonstrate non-obvious algorithms. To provide practical skills at reading and writing programs in ISO Standard C. Objectives: Students should be able to determine the time and space complexity of short algorithms, and know 3 sorting algorithms and 2 searching algorithms. Students should be able to design, construct and test short programs in C, using standard libraries as appropriate. They should be able to read and comprehend the behaviour of programs written by others.
Content:
Algorithms: Introduction: Definition of an algorithm and characteristics of them. Basic Complexity: The efficiency of different algorithmic solutions. Best, average and worst case complexity in time and space. Fundamental Algorithms: Sorting. Searching. Space-time trade-offs. Graphs. Dijkstra's shortest path. C Programming: Introduction: C as a simplified programming language; ISO Standards. Basic Concepts: Functions, variables, weak typing. Statements and expressions. Data Structuring: Enumeration, struct and arrays. Pointers and construction of complex structures. The preprocessor: #include, #if and #define Programming: Input-output. Use of standard libraries. Multiple file programs. User interfaces. Professionalism: Coding standards, defensive programming, documentation, testing. Ethics.

COMP0026: Software project
Semester 2
Credits:
6
Contact:
Level: Level 2
Assessment: CW90 OT10
Requisites: Pre COMP0134, Pre COMP0135, Pre COMP0136

Aims & Learning Objectives:
Aims: To gain experience of working with other people and, on a small-scale, some of the problems that arise in the development of software. Objectives: To be able to carry out the full cycle of the first phase of development of a software package, namely; requirements analysis, design, implementation, documentation, testing, and delivery. To know the main terms of the Data Protection Act and be able to explain its application in a variety of contexts. To be able to design a presentation for a given audience. To be able to assess a presentation critically.
Content:
Project Management: Practice of software engineering techniques, Controlling software development, Project planning/ Management, Documentation, Design, Quality Assurance,Testing. Professional Issues: Professional responsibilities: codes of professional practice, Chartered Engineers. Legal responsibilities: Data Protection Act, Computer Misuse Act, Consumer Protection Act. Intellectual property rights. Contracts. Presentation Skills: Practice in constructing explanations and presentations.

COMP0028: Computation IV: Algorithms
Semester 2
Credits:
6
Contact:
Level: Level 2
Assessment: CW25 EX75
Requisites: Pre COMP0139
Students in the Dept of Electronic & Electrical Engineering (CEC programmes) require the pre-requisites MECH0138 & MECH0139
Aims & Learning Objectives:
Aims: To present a detailed account of some fundamentally important and widely used algorithms. To induce an appreciation of the design and implementation of a selection of algorithms. Objectives: To learn the general principles of effective algorithms design and analysis on some famous examples, which are used as fundamental subroutines in major computational procedures. To be able to apply these principles in the development of algorithms and make an informed choice between basic subroutines and data structures.
Content:
Algorithms and complexity. Main principles of effective algorithms design: recursion, divide-and-conquer, dynamic programming. Sorting and order statistics. Strassen's algorithm for matrix multiplication and solving systems of linear equations. Arithmetic operations over integers and polynomials (including Karatsuba's algorithm), Fast Fourier Transform method. Greedy algorithms. Basic graph algorithms: minimum spanning trees, shortest paths, network flows. Number-theoretic algorithms: integer factorization, primality testing, the RSA public key cryptosystem. Complexity classes P and NP. NP completeness.

COMP0029: Applications IV: compilers
Semester 2
Credits:
6
Contact:
Level: Level 2
Assessment: CW25 EX75
Requisites:
Co or Pre COMP0020, either Pre COMP0134 and Pre COMP0135 or COMP0140 or equivalent
Aims & Learning Objectives:
Aims: To give an introduction to the processes involved in compilation and the use of compiler generation tools and compiler support. Objectives: To know the phases of the compilation process and how to implement them. To be able to choose between different techniques and different representations, depending on the problem to be solved.
Content:
Formal grammars, lexical analysis using lex, parsing by recursive descent and by yacc, error handling in the parsing process, intermediate code representations, type checking, simple code generation. The interface to the operating system. Design of run-time systems and issues in storage management, including garbage collection.

COMP0069: Programming language implementation techniques
Semester 2
Credits:
6
Contact:
Level: Level 3
Assessment: EX75 CW25
Requisites: Pre COMP0029

Aims & Learning Objectives:
Aims: To acquire an appreciation of the suitability of different techniques for the analysis and representations for programming languages, followed by the various means to interpret them. Objectives: To be able to choose suitable techniques for lexing, parsing, type analysis, intermediate representation, transformation and interpretation given the properties of the language to be implemented.
Content:
Construction of lexical analysers, recursive descent parsing, construction of LR parser tables, type checking, polymorphic type synthesis, continuation passing style, combinators, lambda lifting, super-combinators, abstract interpretation, storage management, byte-code interpreters, code-threaded interpreters, partial evaluation, staging transformations.

COMP0070: Computer algebra
Semester 2
Credits:
6
Contact:
Level: Level 3
Assessment: EX75 CW25
Requisites:
Students must have A-level Mathematics, normally Grade B or better, or equivalent, in order to undertake this unit.
Aims & Learning Objectives:
Aims: To show how compute algebra can be used to solve some interesting mathematical problems Objectives: To understand the practical possibilities and limitations of symbolic computation, and to see how it is related to numerical computation.
Content:
Introduction to Reduce. Data representation questions. Normal and canonical forms. Polynomials, algebraic numbers, elementary numbers. Polynomial algebra: GCD and factorization algorithms, modular methods. LLL algorithm. Numerical and symbolic methods for solving systems of nonlinear equations: Newton, Wu's method Gröbner bases. Introduction to integration.

COMP0071: Application of logic
Semester 2
Credits:
6
Contact:
Level: Level 3
Assessment: EX75 CW25
Requisites: Pre COMP0019

Aims & Learning Objectives:
Aims: To explore the world of knowledge representation and knowledge manipulation. To gain an overview of ways of approaching problems that may be incompletely or inaccurately defined. To gain experience of different kinds of logics. Objectives: Students completing this course will have written some programs that represent and manipulate knowledge. They will appreciate the problems that are unique to this subject, and will have an overview of the techniques that are available to tackle them.
Content:
LISP Programming. Knowledge Representation: Predicates, semantic networks, slots and frames, objects. The Problems of Natural Language: top down, bottom up parsing,augmented transition networks. Searching: Breadth and depth first, backtracking, goal searching, alpha-beta pruning and games, GPS. Deduction: Predicate calculus, forward chaining and unification, backward chaining, non-monotonic reasoning, resolution. Reasoning under uncertainty: abduction, causality and evidence, problem solving, binary and Bayesian deduction. Production Systems and Toolkits.

COMP0072: Safety-critical computer systems
Semester 1
Credits:
6
Contact:
Level: Level 3
Assessment: EX100
Requisites:

Aims & Learning Objectives:
Aims: To give an appreciation of the current state of safe systems development. To develop an understanding of risk in systems. To give a foundation in hazard analysis models and techniques. To show how safety principles may be built into all stages of the software development process. Objectives: At the end of this course a student should be able to demonstrate the following skills: An understanding of the nature of risk in developing computer-based systems. The ability to choose and apply appropriate hazard analysis models for simple safety-related problems. An understanding of how to approach the design of safety-critical software systems.
Content:
The nature of risk: computers and risk; how accidents happen; human error. System safety: historical approaches to system safety; basic concepts and terminology. Managing the development of safety-critical systems. Modelling human error and the accident process. Hazard analysis: basic principles; models and techniques. Safety principles in the software lifecycle: hazard analysis as part of requirements analysis; designing for safety; designing the human-machine interface; verification of safety in computer systems.

COMP0073: Advanced algorithms & complexity
Semester 1
Credits:
6
Contact:
Level: Level 3
Assessment: EX100
Requisites: Pre COMP0028

Aims & Learning Objectives:
Aims: To present a detailed introduction to one of the central concepts of combinatorial algorithmics: NP-completeness; to extend this concept to real numbers computations; to study foundations of a more general problem of proving lower complexity bounds. Objectives: to be able to recognise NP-hard problems and prove the appropriate reductions. To cope with NP-complete problems. To know some fundamental methods of proving lower complexity bounds.
Content:
NP-completeness: Deterministic and Nondeterministic Turing Machines; class NP; versions of reducibility; NP- hard and NP-complete problems. Proof of NP-completeness of satisfiability problem for Boolean formulae. Other NP-complete problems: clique, vertex cover, travelling salesman, subgraph isomorphism, etc. Polynomial-time approximation algorithms for travelling salesman and some other NP-complete graph problems. Real Numbers Turing machines: Definitions; completeness of real roots existence problem for 4-degree polynomials. Lower complexity bounds: Straight-line programs and their complexities; complexity of matrix-vector multiplication; complexity of polynomial evaluation.

COMP0074: Concurrent computation
Semester 2
Credits:
6
Contact:
Level: Level 3
Assessment: EX75 CW25
Requisites: Pre COMP0019

Aims & Learning Objectives:
Aims: To gain first-hand experience of the problems that are unique to parallel systems and parallel programs. To see that the von Neumann single processor model only describes a tiny fraction of the world of computing, and that an entirely different way of thinking is required to write effective parallel programs. Objectives: Students on this course will have written some parallel programs. This will have given them an appreciation of the fact that parallel programming is really very different from sequential programming. They will have an overview of the many and varied approaches that are currently beingt aken in this still developing field.
Content:
Philosophy/Motivation: limitations of von Neumann, some large problems must be done concurrently. Architectures/Networks: shared and pseudo-shared memory, distributed, SIMD, MIMD, vector processing, pipelining. Process as data abstractions: from UNIX fork on up, resource allocation. Semaphores: basic, counting, critical regions. Implementing semaphores (Dijkstra/Lamport). Abstract synchronisation: CSP, futures, Linda,Time Warp. Parallel paradigms: divide and conquer, master/slave,producer/consumer. Load balancing: static and dynamic (process migration). Case study: parallelism in EuLisp. Deadlock, parallel debugging. Applications in computer algebra, expert systems, and discrete event simulation.

COMP0075: Advanced computer graphics
Semester 1
Credits:
6
Contact:
Level: Level 3
Assessment: EX75 CW25
Requisites:

Aims & Learning Objectives:
Aims: The primary aims are to understand the ways of representing, rendering and displaying pictures of three-dimensional objects (in particular). In order to achieve this it will be necessary to understand the underlying mathematics and computer techniques. Objectives: Students will be able to distinguish modelling from rendering. They will be able to describe the relevant components of Euclidean and projective geometry and their relationships to matrix algebra formulations. Students will know the difference between solid- and surface-modelling and be able to describe typical computer representations of each. Rendering for raster displays will be explainable in detail, including lighting models and a variety of visual effects and defects. Students will be expected to describe the sampling problem and solutions for both static and moving pictures.
Content:
Euclidean and projective geometry transformations. Modelling: Mesh models and their representation. Constructive solid geometry and its representation. Specialised models. Rendering: Raster images; illumination models; meshes and hidden surface removal; scan-line rendering. CSG: ray-casting; visual effects and defects. Rendering for animation. Ordered dither; resolution; aliasing; colour.

COMP0076: Project preparation
Semester 1
Credits:
6
Contact:
Level: Level 3
Assessment: OT100
Requisites:
The assessment for this unit is included in COMP0082 Post COMP0082
Aims & Learning Objectives:
Aims: To develop skills in planning, performing and writing reports on computing projects. Objectives: To demonstrate skills in the above aims by completing the project plan, the literature review, defining the structure of the report and completing the initial studies.
Content:
Effective and ineffective written communication. Project planning. Proposal writing. How to carry out a literature survey. Resource assessment and management. Report planning and writing.

COMP0078: Networking
Semester 2
Credits:
6
Contact:
Level: Level 3
Assessment: EX100
Requisites: Pre COMP0138

Aims & Learning Objectives:
Aims: To understand the Internet, and associated background and theory, to a level sufficient for a competent domain manager. Objectives: Students should be able to explain the acronyms and concepts of the Internet and how they relate. Students should be able to state the steps required to connect a domain to the Internet, and be able to explain the issues involved to both technical and non-technical audiences. Students should be able to discuss the ethical issues involved, and have an "intelligent layman's" grasp of the legal issues and uncertainties. Students should be aware of the fundamental security issues, and should be able to advise on the configuration issues surrounding a firewall.
Content:
The ISO 7-layer model. The Internet: its history and evolution - predictions for the future. The TCP/IP stack: IP, ICMP, TCP, UDP, DNS, XDR, NFS and SMTP. Berkeley Introduction to packet layout: source routing etc. The CONS/CLNS debate theory versus practice. Various link levels: SLIP, 802.5 and Ethernet, satellites, the "fat pipe", ATM. Performance issues: bandwidth, MSS and RTT; caching at various layers. Who 'owns' the Internet and who 'manages' it: RFCs, service providers, domain managers, IANA, UKERNA, commercial British activities. Routing protocols and default routers. HTML and electronic publishing. Legal and ethical issues: slander/libel, copyright, pornography, publishing versus carrying. Security and firewalls: Kerberos.

COMP0079: Computer speech processing
Semester 1
Credits:
6
Contact:
Level: Level 3
Assessment: EX100
Requisites:

Aims & Learning Objectives:
Aims: To introduce the essential concepts and techniques of automatic speech processing and to use speech processing as an illustration of an area of active research and development in computer technology that is both novel and lies near the limits of present capability. Objectives: Students will be able to i) outline the essential processes of human speech production and read and write simple phonetic transcriptions, ii) to demonstrate an understanding of signal processing, iii) to describe, compare and contrast digital schemes for sampling, coding and analysing speech, iv) to comprehend the theoretical and practical issues in automatic speech processing and v) to explain, and assess major speech synthesis and recognition techniques.
Content:
Speech production: the articulatory system; acoustic-phonetics and prosody; phonetic transcription and co- articulation; phonemes, phones, phonology and allophones. Speech signals: their nature, characterisation and representation in different domains; theory of elementary signal processing. Speech coding and analysis: simple PCM; sampling and quantisation errors; other coding schemes for data compression and feature extraction. Speech synthesis: articulatory, formant and other types of synthesis; synthesis by rule and text-to-speech synthesis. Speech recognition: matching complex and variable patterns; segmentation of connected and continuous speech; speaker dependence; time variations and warping; statistically-oriented techniques for recognition and some current methods; recognition versus understanding.

COMP0080: Computer vision
Semester 2
Credits:
6
Contact:
Level: Level 3
Assessment: EX100
Requisites:

Aims & Learning Objectives:
Aims: To present a broad account of computer vision, with the emphasis on the image processing required for its low level stages. Objectives: To induce an appreciation of the processes involved in robotic vision and how this differs from human vision.
Content:
Image formation. Colour versus monochrome. Preprocessing of the image. Edge finding: elementary methods and their shortcomings; more sophisticated methods such as those of Marr-Hildreth, Canny, and Prager. Optical flow. Hough transform. Global and local region segmentation techniques: histogram techniques, region growing. Representation of the results of low level processing. Some image interpretation methods employing probability arguments and fuzzy logic. Hardware. Practical problems based on an image processing package.

COMP0081: Hardware architecture & compilation
Semester 1
Credits:
6
Contact:
Level: Level 3
Assessment: EX100
Requisites: Pre COMP0029

Aims & Learning Objectives:
Aims: To demonstrate the impact that computer architecture is having on compiler design. To explore trends in hardware development, and examine techniques for efficient use of machine resources. Objectives: Students should be able to describe the philosophy of RISC and CISC architectures. They should know at least one technique for register allocation, and one technique for instruction scheduling. They should be able to write a simple code generator.
Content:
Description of several state-of-the-art chip designs. The implications for compilers of RISC architectures. Register allocation algorithms (colouring, DAGS, scheduling). Global data-flow analysis. Pipelines and instruction scheduling; delayed branches and loads. Multiple instruction issue. VLIW and the Bulldog compiler. Harvard architecture and Caches. Benchmarking.

COMP0082: Double module project
Semester 2
Credits:
12
Contact:
Level: Level 3
Assessment: OT100
Requisites:

Aims & Learning Objectives:
Aims: To satisfy as many of the objectives as possible as set out in the individual project proposal. Objectives: To produce the deliverables identified in the individual project proposal.
Content:
Defined in the individual project proposal.

COMP0105: Industrial placement
Academic Year
Credits:
60
Contact:
Level: Level 2
Assessment:
Requisites:


COMP0106: Study year abroad (BSc)
Academic Year
Credits:
60
Contact:
Level: Level 2
Assessment:
Requisites:


COMP0109: Formal methods & programming
Semester 1
Credits:
6
Contact:
Level: Postgraduate
Assessment: CW100
Requisites:
Co COMP0112

Aims & Learning Objectives:
Aims: (a) to give a foundation in software design and development; (b) to give a foundation in implementing software solutions, using an object-based programming language; (c) to develop an appreciation of the use of formal methods in software development, and to develop skills in simple specification and verification techniques. Objectives: By the end of this course a student should have the ability to: (a) use design techniques such as modularisation and object-oriented design to develop software solutions to given problems; (b) design, implement, test and document simple programmes using an object-based programming language; (c) use simple formal methods for specification and verification.
Content:
Building software: software lifecycle; the need for formal methods; program structures; simple program development. Principles of software design: modularisation - data hiding, clientship and reuse; object-oriented design - finding appropriate objects, classes and methods; using formal specification. Building and implementing classes: inheritance and inheritance hierachies; overriding methods; principles of dynamic binding; generic and abstract classes. Simple classes for data handling; stacks; queues; lists. Software testing: why test; stages of testing; designing test plans. Formal verification techniques. Reusability abnd extendibility: design principles revisited; adding and extending classes at run-time.

COMP0110: Human-computer interaction & virtual reality
Semester 1
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX75 CW25
Requisites:

Aims & Learning Objectives:
Aims: to engender a sensitivity towards the need to take into account human cognitive and behavioural performance when designing interactive computer systems; to show why so-called user friendliness may be essential if computers are to be fully and reliably exploited. Introduction to virtual reality and how such technology is constructed; to enable the student to acquire a critical appreciation of the impact of virtual reality systems. Objectives: Students should have: a clear understanding of relevant human factors that can influence the deployment and utilisation of computer technology; be able to make critical evaluations of human-computer interface designs; be capable of applying good practice to simple interactive computer design problems and know how to avoid at least some of the main pitfalls of bad design; have an appreciation of hoe virtual reality systems are constructed; have an understanding of the current state and possible future directions of virtual reality.
Content:
Human-Computer interaction: Human sensory systems and cognition; computer systems and input/output capabilities; differences between human and computer systems; problems of interfacing between human and computer systems; general ergonomics. Design principles for interactive computer systems: usability; aspects of the design process. Some current issues. Virtual Reality: Description of what virtual reality (also augmented reality) is. Motivations for the development of virtual reality. Principal components required in building virtual reality systems. Possible uses for virtual reality.

COMP0111: Virtual reality
Semester 1
Credits:
6
Contact:
Level: Postgraduate
Assessment:
Requisites:
Merged with COMP0110

COMP0112: Introduction to C & Unix
Semester 2
Credits:
3
Contact:
Level: Postgraduate
Assessment: CW100
Requisites:
Co COMP0109

Aims & Learning Objectives:
Aims: to introduce students to the C programming language, the Unix operating system, and to simple systems programming. Objectives: Students should be able to write simple programmes for the Unix operating system using the C programming language.
Content:
The C language. The Unix operating system: kernel/processes; the file system model, protection. Shells and the component philosophy; argc/argv, return codes. The requirement for defensive programming. C's interface to Unix; the kernel calls. The standard Unix libraries.

COMP0113: Algorithms & data structures
Semester 2
Credits:
3
Contact:
Level: Postgraduate
Assessment: CW100
Requisites: Pre COMP0109, Pre COMP0112

Aims & Learning Objectives:
Aims: To ensure students appreciate the concept of an algorithm as an effective procedure, To introduce the criteria by which algorithms may be chosen, and to demonstrate how algorithms may be used in conjunction with data structures for tasks such as sorting and searching. Objectives: Students should be able to choose appropriate algorithms for searching and sorting, and should be able to implement these algorithms in an appropriate programming language.
Content:
Brief introduction to algorithmic complexity and efficiency. Simple sorting algorithms such as Insertion sort, Selection sort and Quicksort. Simple searching algorithms such as linear and binary search. Advanced data structures such as trees and tables, and associated algorithms.

COMP0114: Multimedia
Semester 2
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX75 CW25
Requisites:

Aims & Learning Objectives:
Aims: the course aims to make students aware of the underlying technology and the methods of creating and organising mulitmedia systems, with a particular emphasis on CD-ROM and hypertext. Objectives: Students will be able to discuss hypermedia as a background to multimedia. They will understand a variety of CD-ROM formats, the encoding techniques needed for various source media and the consequences of each. They will be familiar with authoring tool concepts and will be aware of the basic legal consequences of publishing. Students should understand what makes a well-organised multimedia presentation.
Content:
Hypertext and hypermedia: formats and mechanisms; static and dynamic media. CD-ROM technology: multimedia formats (including also audio CD and Photo CD); sound representation; video and video compression; writable CD; interaction. Multimedia system design: authoring software, requirements and a practical example; legal considerations; organising material for the user.

COMP0119: Principles of computer operation & architecture
Semester 1
Credits:
3
Contact:
Level: Postgraduate
Assessment: EX100
Requisites:
This unit shares lectures and tutorials with the first 6 weeks of COMP0017
Aims & Learning Objectives:
Aims: To introduce students to the basic principles of computer operation and architecture. Objectives: Familiarity with the von Neumann model, the nature and function of each of the components, and general principles of operation of the machines, including input and output transfers and basic numeric manipulations.
Content:
Brief historical introduction to computing machines. Binary basis of computer operation and binary numeration systems. Von Neumann computers and the structure, nature and relationship of their major elements. Principles of operation of digital computers; use of registers and the instruction cycle; simple addressing concepts; programming. Integers and floating point numbers: basic principles and mechanisms of data transfer; programmed and data channel transfers; device status; interrrupt programming; buffering; devices.

COMP0120: Databases
Semester 1
Credits:
3
Contact:
Level: Postgraduate
Assessment: CW100
Requisites:
This unit shares lectures and tutorial with the first 6 weeks of COMP0018.
Aims & Learning Objectives:
Aims: To present an introductory account of the theory and practice of databases. Objectives: To demonstrate understanding of the basic structure of relational database systems and to be able to make elementary queries.
Content:
Network and relational models. Completeness of relational models, Codd's classification of canonical forms: first, second, third, and fourth normal forms. Keys, join, query languages (SQL, Query-by-example). Object databases.

COMP0121: Safety critical systems
Semester 1
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX75 CW25
Requisites:
This unit shares lectures and tutorials with COMP0072.
Aims & Learning Objectives:
Aims: To give an appreciation of the current state of safe systems development. To develop an understanding of risk in systems. To give a foundation in hazard analysis models and techniques. To show how safety principles may be built into all stages of the software development process. Objectives: At the end of this course a student should be able to demonstrate the following skills: An understanding of the nature of risk in developing computer-based systems. The ability to choose and apply appropriate hazard analysis models for simple safety-related problems. An understanding of how to approach the design of safety-critical software systems.
Content:
The nature of risk: computers and risk; how accidents happen; human error. System safety: historical approaches to system safety; basic concepts and terminology. Managing the development of safety-critical systems. Modelling human error and the accident process. Hazard analysis: basic principles; models and techniques. Safety principles in the software lifecycle: hazard analysis as part of requirements analysis; designing for safety; designing the human-machine interface; verification of safety in computer systems.

COMP0122: Projects and their management
Semester 2
Credits:
6
Contact:
Level: Postgraduate
Assessment: CW100
Requisites: Pre COMP0109

Aims & Learning Objectives:
Aims: To gain experience of working with other people and, on a small scale, some of the problems that arise in the development of software. Objectives: To carry out the full cycle of the first phase of development of a software package, namely; requirements analysis, design, implementation, documentation, testing and delivery. To know the main terms of the Data Protection Act and be able to explain its application in a variety of contexts.
Content:
Project Management: Practice of software engineering techniques, controlling software development, project planning/ management, design, quality assurance, testing. Professional Issues: Professional responsibilities: codes of professional practice, chartered engineers. Legal responisbilities: Data Protection Act, Computer Misuse Act, Consumer Protection Act. Intellectual property rights. Contracts.

COMP0123: Networking
Semester 2
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX75 CW25
Requisites:
This unit shares lectures and tutorials with COMP0078.
Aims & Learning Objectives:
Aims: To understand the Internet, and associated background and theory, to a level sufficient for a competent domain manager. Objectives: Students should be able to explain the acronyms and concepts of the Internet and how they relate. Students should be able to state the steps required to connect a domain to the Internet, and be able to explain the issues involved to both technical and non-technical audiences. Students should be able to discuss the ethical issues involved, and have an "intelligent layman's" grasp of the legal issues and uncertainties. Students should be aware of the fundamental security issues, and should be able to advise on the configuration issues surrounding a firewall.
Content:
The ISO 7-layer model. The Internet: its history and evolution - predictions for the future. The TCP/IP stack: IP, ICMP, TCP, UDP, DNS, XDR, NFS and SMTP. Berkeley Introduction to packet layout: source routing etc. The CONS/CLNS debate: theory versus practice. Various link levels: SLIP, 802.5 and Ethernet, satellites, the "fat pipe", ATM. Performance issues: bandwidth, MSS and RTT; caching at various layers. Who 'owns' the Internet and who 'manages' it: RFCs, service providers, domain managers, IANA, UKERNA, commercial British activities. Routing protocols and default routers. HTML and electronic publishing. Legal and ethical issues: slander/libel, copyright, pornography, publishing versus carrying. Security and firewalls: Kerberos.

COMP0124: Introduction to information technology
Semester 1
Credits:
3
Contact:
Level: Postgraduate
Assessment:
Requisites:
Unit for MA in Interpreting and Translating.

COMP0134: Programming 1
Semester 1
Credits:
12
Contact:
Level: Level 1
Assessment: CW40 EX60
Requisites:
Ex COMP0140
Students who undertake this unit should normally have at least 3 A-level passes, (or equivalent) including Mathematics, at grades A,B,B or above
Aims & Learning Objectives:
Aims: To introduce students to the development of computer software, including problem analysis, establishing requirements, designing, implementing and evaluating. To provide practical skills at reading and writing programs and producing programs to solve real world problems. Objectives: Students should be able to design, construct and test short programs. They should be able to defend design decisions. To understand the idea of type and to use data types appropriately. To be able to develop iterative and recursive programs. To be able to read, and comprehend the behaviour of programs written by others. To be able to assess the complexity of simple algorithms.
Content:
Introduction to computers and programming. Introduction to system development: problem analysis requirements synthesis; system design; evaluation. Scenario based design. Algorithms. Control structures: sequence, selection and iteration. Scope and extent. Simple data types. Testing. Object-orientation: reuse inheritance classes, objects and methods. Recursion. Complexity.

COMP0135: Programming II
Semester 2
Credits:
12
Contact:
Level: Level 1
Assessment: CW60 EX40
Requisites: Pre COMP0134,
Ex COMP0140

Aims & Learning Objectives:
Aims: To continue the practice of the programming process begun in Programming I. To extend the notion of object-oriented software development. To increase practical skills at reading and writing programs and producing programs to solve real world problems. Objectives: Students should be able to design, construct and evaluate substantial programs, using libraries as appropriate. They should be able to read, and comprehend the behaviour of, programs written by others. Given a problem description, they should be able to design suitable software systems.
Content:
Task based design. User interface design. Evaluation. Data structures. Algorithms and complexity. Exception handling. Abstract data types and classes. Inheritance vs composition. Abstract vs concrete classes. Self-referential classes. Event handling. Graphics. Multithreading. Network programming.

COMP0136: Software Engineering I
Semester 1
Credits:
6
Contact:
Level: Level 1
Assessment: CW25 EX75
Requisites:
Students who undertake this unit should normally have at least 3 A-level passes, (or equivalent) including Mathematics, at grades A,B,B or above
Aims & Learning Objectives:
Aims: To give the students an introductory understanding of requirements analysis, design modelling and specification, evaluation and testing. To raise students awareness of usability and human factors along with software engineering methods. Objectives: The students should be able to carry out analysis of domain, user, task and software requirements using a taught method of analysis. They should be able to produce specifications of designs and to set evaluation and test criteria with the ability to use simple forms of evaluation and testing.
Content:
Software design process models, task analysis, requirements analysis, domain analysis. Domain modelling, task modelling, conceptual design model, prototyping. Empirical evaluation methods, and simple analytical evaluation and performance testing methods.

COMP0137: Software Engineering II
Semester 2
Credits:
6
Contact:
Level: Level 1
Assessment: CW25 EX75
Requisites: Pre COMP0136, Pre COMP0134

Aims & Learning Objectives:
Aims: To give the students an understanding and practical knowledge of software engineering and human factors approaches to analysis, design and evaluation of software systems. To develop an approach to software design and development focussed upon analytical, and predictive modelling of domains, tasks, users and software. To introduce appropriate forms of abstraction for representing and reasoning about design issues. Objectives: To enable students to analyse design problems choosing between analytical approaches. To construct abstract models using appropriate formal and informal languages. To select and use correctly appropriate forms of evaluation criteria and methods. To use appropriate forms of design and prototyping approaches.
Content:
Analytical methods for gathering user, task, domain and software requirements, including participatory and traditional approaches. Formal and informal modelling languages, including process and object oriented approaches. Descriptive, predictive and prescriptive models. Experimental methods and formal methods of testing. Prototyping and redesign including paper and runnable forms.

COMP0138: Systems II: low-level programming & C
Semester 2
Credits:
6
Contact:
Level: Level 1
Assessment: CW25 EX75
Requisites:
Pre-requisite Units COMP0134 or COMP0140, and either COMP0017 or equivalent
Aims & Learning Objectives:
Aims: To provide practical skills in low-level programming and basic computer services Objectives: Students should be able to write short assembler-level programs, and call basic (Chapter 1) Unix service using C. They should be able to identify, use and package operating services. They should be able to write short programs in ANSI C.
Content: Assembler Programming:
low level programming and structures. Registers, memory and addressing modes. Subroutine structures, calling standards. Interrupts and system calls.
C Programming:
C programming structures. String handling in C. Input and output (both chapter 2 and chapter 3). Questioning the operating system and filing system. Binary structures, relocation concepts.

COMP0139: Computation I: numbers & structures
Semester 1
Credits:
6
Contact:
Level: Level 1
Assessment: CW25 EX75
Requisites:
Students who undertake this unit should normally have at least 3 A-level passes, (or equivalent) including Mathematics, at grades A,B,B or above
Aims & Learning Objectives:
Aims: To introduce logic and set theory, as used in computer science, and to give elementary explanations of the classical computational structures, such as the integers and the real numbers, and to indicate some of the applications. Objectives: Students should be able to understand and use the language of mathematics. Students should be able to write simple proofs, using, for example, induction.
Content:
Natural numbers, integers, rationals, reals, complex numbers. Set theoretic language. Relations, functions, predicates, equivalence relations. Standard logical operators, including quantifiers. Connection with Data base techniques. Proof. Induction. Binomial coefficients. Partially ordered sets. Well ordered sets. Induction and recursion in general. Proof of termination of algorithms, using well ordering. Modular arithmetic. Connection with cryptography. Iterative solutions of equations by Newton's method. Convergence. Connection with fractals. Arithmetic of polynomials and matrices. Concept of a ring.

COMP0140: Introduction to programming in Java
Semester 2
Credits:
6
Contact:
Level: Level 1
Assessment: CW50 EX50
Requisites:
Ex COMP0134,
Ex COMP0135
Students who undertake this unit should normally have A-level mathematics, or equivalent, at grade B or above
Aims & Learning Objectives:
Aims: To introduce object orientated programming in Java Objectives: To be able to write programs which solve simple problems of the sort which may occur in scientific applications. To understand the basic concepts of object oriented programming
Content:
Basic programming concepts. How Java works. Operators and control. Procedural use of Java. Arrays, references. Data types. Object orientation. Methods, objects, classes constructors, inheritance. Standard libraries. Scientific applications. Graphics and numerical libraries. Vectors and Matrices. Numerical computation. Some famous algorithms, such as, for example, Newton's method for finding solutions of an equation.

COMP0141: Advanced human computer interaction
Semester 2
Credits:
6
Contact:
Level: Level 3
Assessment: CW25 EX75
Requisites:
Some knowledge of programming, as approved by the Director of Studies
Aims & Learning Objectives:
Aims: To give students an advanced level understanding of current research issues in human computer interaction. To focus upon HCI research methods, HCI theory covering topics of user interface design, evaluation and modelling. Application areas such as safety and dependable systems, collaborative systems, virtual environments and agent interaction are examples of current application topics. Issues of HCI in mobile and embedded contexts. Objectives: The students should obtain an in-depth understanding of HCI theory and methods in state of the art research. Particular focus will be placed on the interdisciplinary nature of HCI and on the relationship between theory, and design practice. The students should be able to contribute to both HCI theory and HCI practice as a result.
Content:
Psychological theories of human behavior, contextual analysis, frameworks for HCI, model based design. Topics in agent-agent and human-agent interaction. Modelling collaborations, group work and domains of high safety or dependency requirements. HCI and creativity. Evolutionary theories of design. The role of formal methods in HCI. Advanced forms of interaction technologies.

COMP0142: Music & digital signal processing
Semester 1
Credits:
6
Contact:
Level: Level 3
Assessment: EX100
Requisites:
Some knowledge of programming; complex numbers; some knowledge of sine/cosine functions, integration and elementary calculus, as approved by the Director of Studies
Aims & Learning Objectives:
Aims: To introduce the basic ideas of DSP programming and the ways in which musical signals can be treated as data. Objectives: Students should be able to code simple digital filters, and construct simple oscillators. They will be able to control a frequency domain analysis and resynthesis, and use 3 synthesis methods.
Content:
Introduction: Musical signals: their nature, chacterisation and representation. Pitch, amplitude and timbre. PCM representation: sampling and quantisation errors. MIDI representation and its limitations. Software Systems: Music5 family,: Csound. Additive Synthesis: Simple oscillators and their coding; wavetable synthesis. Helmholz theory and Fourier analysis. Subtractive Synthesis: Noise, and digital filters. Filter types, IIR and FIR. Issues in filter design. Psycho-acoustics: Basic ideas and Shepard tones as an example. Lossy compression. MPEG level 2 and MPEG-4. Time and frequency domains: Phase vocoding. FFT and IFFT; analysis and resynthesis. Pitch changing. Physical Models: The wave equation. Delay lines and wave guides. The plucked string. FM and non-linear synthesis: Analysis and coding of FM. Introduction to Granular Synthesis, formants and FOF. Pitch changing. Spacialisation: Stereo panning, reverberation, localisation and audio clues. Composition: Process based, algorithmic composition. Pitch and Tuning: ET and Just; introduction to Sethares theory of consonance.

COMP0143: User interface programming
Semester 1
Credits:
6
Contact:
Level: Level 2
Assessment: CW40 EX60
Requisites: Pre COMP0134, Pre COMP0135, Pre COMP0136, Pre COMP0137

Aims & Learning Objectives:
Aims: To give the students knowledge, understanding and experience of designing, constructing and evaluating user interfaces. To introduce principles, methods and tools for user interface design. To focus upon user interaction. Objectives: The students should be able to program user input, application output, and user interface input/output event handling. Dialogue design. To design user interfaces to optimise usability and efficiency for the users' tasks. To be aware of relevant principles, guidelines and tools to support user interface design.
Content:
User interface display guides. Principles of user interface design, user interface management systems, user interface tool-sets, Java user interface programming, event handling, special features such as "help" and "undo". Analysis of usability of user interface designs.

COMP0144: Applications I: mathematics for applications
Semester 1
Credits:
6
Contact:
Level: Level 2
Assessment: CW25 EX75
Requisites: Pre COMP0139

Aims & Learning Objectives:
Aims: To introduce the linear algebra, and analysis which is needed in applications. Objectives: To demonstrate an understanding of some basic mathematical concepts and techniques which are needed in applications such as Graphics, Computer Vision, Computer Music.
Content:
Linear transformations, matrices and determinants, complexity of basic manipulations, vector operations and Euclidean geometry, eigenvalues and eigenvectors, bases, linear dependence and independence; complex numbers, sine and cosine and exponential functions, power series, limits, convergence, Fourier series; transforms. Discussion of applications.

COMP0145: Applications II: databases
Semester 1
Credits:
6
Contact:
Level: Level 2
Assessment: CW25 EX75
Requisites:

Aims & Learning Objectives:
Aims: To introduce students to database concepts. To provide practical skills at using database management systems, designing, using and managing databases. To teach database theories. Objectives: Given a description of user requirements, students should be able to design and build a database using a database management system. They should be able to answer non-trivial queries using databases produced by others. They should understand relational database theory and be aware of alternative models for databases. They should understand the mportance of data protection and be able to implement secure databases.
Content:
Introduction to databases and database management systems (DBMSs). User interaction with databases. Functions of a DBMS. Data models and conceptual modelling. Sets and relations. Union, intersection, relative complement, cross product, projection, selection. Relations as subsets of cross products. Connection between logical operations on ideas and set theoretic operations on relations. Logical database design, physical database design. Entity-relationship modelling. Constraints. Network and relational models. Completeness of relational models. Codd's classification of canonical forms. : first, second, third and fourth normal forms. Keys, join, SQL query language. Transaction management and database security. Data protection legislation.

COMP0147: Programming
Semester 1
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX50 CW50
Requisites:

Aims & Learning Objectives:
Aims: To introduce students to the development of computer software, including analysis, establishing requirements, designing, implementing and evaluating. To provide practical skills in reading and writing programs and producing programs to solve real world problems. Objectives: Students should be able to design, construct and test short programs. They should be able to defend design decisions. To understand the idea of type and to use data types appropriately. To be able to develop iterative and recursive programs. To be able to comprehend the behaviour of programs written by others. To be able to assess the complexity of simple algorithms.
Content:
Introduction to computers and programming. Introduction to systems development; problem analysis, requirements synthesis, system design, evaluation. Scenario based design. Algorithms, control structures; sequence selection, iteration and recursion. Scope, complexity and extent. Simple data types, and testing. Object-orientation, reuse, inheritance, classes, objects, methods. Core Reading; Single Text Course. D Arnow & G Weiss Introduction to Programming Using Java; an object-oriented approach Addison Wesley 1998.

COMP0148: Usability design & evaluation
Semester 1
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX50 ES50
Requisites:

Aims & Learning Objectives:
Aims. To give the students an introductory understanding of requirements, design, and evaluation. To raise students awareness of usability and human factors. To give students a grounding in different evaluation approaches. Objectives: The students should be able to carry out analysis of domains, user, and task requirements, using a method of analysis. They should be able to undertake different evaluations.
Content:
Task analysis, requirements analysis. Analytical and empirical evaluation of usability of user interface for supporting user tasks. Evaluation methods: general categories of empirical and analytical methods. Analytical: discount usability approaches and task analytic approaches. Empirical: experimental and observational (concurrent protocols and retrospective protocols). Core Reading; Largely from journal papers in the Journal of Human Computer Interaction and the International Journal of Human Computer Studies. J Nielsen Usability Engineering, Addison Wesley 1997 T Winograd & P Adler Usability; turning technologies into tools Oxford 1992 T Winograd Bringing Design to Software, Addison Wesley 1996.

COMP0149: Collaborative virtual environments
Semester 2
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX50 ES50
Requisites: Pre COMP0147

Aims & Learning Objectives:
Aims; To give students an advanced understanding of current research issues in human computer interaction. To focus upon human computer interaction research methods, and theory, covering topics in user interface design, evaluation and modelling. Applications areas such as safety and dependable systems, collaborative systems, virtual environments, and agent interaction are examples of current application topics. Issues of human computer and human-human interaction in mobile settings and using embedded devices. Objectives: The students should learn how to program user input, application output, and user interface input/output event handling. Dialogue design. To design user interfaces to optimise usability and efficiency for the users' tasks. T o be aware of relevant principles, guidelines and tools to support user interface design.
Content:
Computer-supported collaborative work - nature of collaboration. How collaboration is supported; successful and unsuccessful models and systems. How to model group work. Technological forms of virtual working environments - 'white boards', 'rooms'. Web- based versions of virtual environments. Immersive and non-immersive environments. Mobile and wearable environments. Core reading: T K Capin, I S Pandzic & N Magnenat-Thalmann (eds) Avatars in Networked Virtual Environments Wiley, 1999 C Greenhalgh Large-scale Collaborative Virtual Environments Springer Verlag 1999 Proceedings of ACM International Conference on Intelligent User Interfaces 1999 Proceedings of ACM Conference on Computer Supported Cooperative Work, 1999 S Wilbur & A Sellen (eds) Computer Mediated Communication, Prentice Hall 1998

COMP0150: Design
Semester 2
Credits:
6
Contact:
Level: Postgraduate
Assessment: CW100
Requisites: Pre COMP0147

Aims & Learning Objectives:
Aims: To enable students to understand and be able to apply current approaches to modelling and design of communication systems. To approach the design of communication systems from a human and task perspective and to consider the most suitable application and optimal design of the technologies to support effective human communication. Objectives: The students should be able to apply scientific and engineering principle s to the effective and creative design of communications systems. They should be able to critically assess communication systems and to identify how technologies may be applied to support more effective communication.
Content:
Introduction to participatory design. Understanding of how to model and specify group and communication requirements. Conceptual design models and metaphors. How to elaborate a design model. The unit will involve practical classes through groupwork in the design of communication systems; building exemplars, interface design, communication management design, security access design. Core Reading: W Hall et al (eds) Hypermedia and Multimedia Systems , Addison Wesley 1999 D Leebaert (ed) The Future of Software , M I T Press 1995 S Wilbur & A Sellen (eds) Computer Mediated Communication , Prentice Hall 1998 T Winograd Bringing Design to Software ,Addison Wesley 1996

COMP0152: Formal methods, specification & design
Modular unit - no specific semester
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX70 CW30
Requisites:


COMP0153: Object-orientated design & modelling
Modular unit - no specific semester
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX70 CW30
Requisites:


COMP0154: Requirements engineering
Modular unit - no specific semester
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX70 CW30
Requisites:


COMP0155: Software reliability, measurement & testing
Modular unit - no specific semester
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX70 CW30
Requisites:


COMP0156: System engineering & system architecture
Modular unit - no specific semester
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX70 CW30
Requisites:


COMP0157: Compiler technology for embedded systems
Modular unit - no specific semester
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX70 CW30
Requisites:


COMP0158: Concurrency & distributed systems
Modular unit - no specific semester
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX70 CW30
Requisites:


COMP0159: Concurrency with Java
Modular unit - no specific semester
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX70 CW30
Requisites:


COMP0160: Cryptography & security of computer systems
Modular unit - no specific semester
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX70 CW30
Requisites:


COMP0161: Human factors engineering
Modular unit - no specific semester
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX70 CW30
Requisites:


COMP0162: Mathematics structures for software engineering
Modular unit - no specific semester
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX70 CW30
Requisites:


COMP0163: Performance modelling
Modular unit - no specific semester
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX70 CW30
Requisites:


COMP0164: Safety critical systems
Modular unit - no specific semester
Credits:
6
Contact:
Level: Postgraduate
Assessment: EX70 CW30
Requisites:


COMP0165: Project
Modular unit - no specific semester
Credits:
30
Contact:
Level: Postgraduate
Assessment: DS100
Requisites:


COMP0167: Programming III: functional programming
Semester 1
Credits:
6
Contact:
Level: Level 2
Assessment: CW25 EX75
Requisites:
Pre-requisite units: COMP0134, COMP0135, OR COMP0140, or equivalent
Aims & Learning Objectives:
Aims: To illustrate how the logical and semantic foundations of programming languages are translated into usable programming languages. To give students practical experience of using a functional programming language. Objectives: Students should be able to use the notion of reduction in the lambda calculus. They should be able to explain how the lambda calculus provides a foundation for the functional family of programming languages. They should be able to demonstrate practical competence with the Lisp family of languages, typed functional languages and lazy functional languages, and they should be able to explain the key features of such languages.
Content:
From lambda calculus to Lisp and functional programming. The Church-Rosser theorem and applicative versus normal order evaluation. Typed lambda calculus and type inference. Combinatory logic and lazy functional languages. Programming in a functional style.

COMP0168: Programming IV: programming languages
Semester 2
Credits:
6
Contact:
Level: Level 2
Assessment: CW25 EX75
Requisites: Pre COMP0167

Aims & Learning Objectives:
Aims: To create an appreciation of the history of programming and programming languages, in order to provide perspective on current developments. To explore the relationship between computing as a discipline and the computing industry. To examine programming languages from a linguistic viewpoint. To examine current developments in programming languages. To provide the experience of giving a formal presentation. Objectives: The students should be able to demonstrate a basic knowledge of the early history of programming and the key programming languages that have affected the development of computing. They should know one of the standard ways in which programming languages are divided into families, and be able to argue for a particular categorization of a new language by its characteristics. They should be able to give an account of the evolution of the computing industry and to extrapolate current trends in the industry, while realising the weakness of extrapolation. They should also be able to discuss current developments in programming language research.
Content:
The pre-history (Pascal, Babbage, Turing, etc.) 1940s and 1950s: the birth of an industry and a subject. The four classical language families. Examples of languages such as Lisp, C++, Fortran, Cobol, Snobol, Icon, Apl, Perl, Fortran 90. Examination in detail of several new programming languages to understand where they fit in the families and what they offer that is new. Exploration of several advanced topics in programming languages chosen from current research activities.

COMP0170: Project (MSc)
Dissertation period
Credits:
42
Contact:
Level: Postgraduate
Assessment: DS100
Requisites: