Department of Computer Science, Unit Catalogue 2003/04 
CM10017: Systems I: architecture & operating systems 
Credits: 6 
Level: Certificate 
Semester: 1 
Assessment: CW25EX75 
Requisites: 
Students who undertake this unit should normally
have at least 3 Alevel passes, (or equivalent) at grades A,B,B or above.
Aims: To introduce students to the structure, basic design, operation and programming of conventional, von Neumann and nonvon 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. Learning Objectives: 1) To demonstrate an understanding of how the forms and conventions of high level languages are related to the machine level; 2) To experience how structured programming can be applied in low as well as high level languages.; 3) To be able to assess the potential advantages and disadvantages of different architectures and how these may affect system software such as operating systems; 4) To demonstrate an understanding the basic functions and possible organizations of operating system software. Skills: IT (T/F, A), Application of Number (T/F, A). Content: 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, lowlevel programming concepts. Prototypical operating systems and the history of operating systems. Operating systems (e.g. Windows, NT, Unix). 
CM10020: Computation II: computability & decidability 
Credits: 6 
Level: Certificate 
Semester: 2 
Assessment: EX100 
Requisites: 
Before taking this unit you must take CM10139 (or equivalent authorised by Director of Studies) 
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. Learning Objectives: 1.To appreciate the limitations of finitestate machines, and the availability of different possible standard formalisations of Turing machines; 2.To understand what can and cannot be computed using Turing machines, and the relationship between Turing machines and algorithms; 3.In the lambda calculus, students should be able to find normal forms, when these exist, using alpha and beta reduction. Skills: IT (T/F, A), Application of Number (T/F, A). Content: Languages and regular expressions. The basic properties of finitestate machines. Nondeterministic finitestate machines. What can and cannot be computed using finitestate 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. ChurchRosser Theorem. 
CM10134: Programming 1 
Credits: 12 
Level: Certificate 
Semester: 1 
Assessment: CW40EX60 
Requisites: 
In taking this unit you cannot take CM10140 
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.
Learning Objectives: On completion of this unit students will be able to: 1) design, construct and test short objectoriented programs. 2) defend design decisions. 3) understand the idea of type and to use data types appropriately. 4) develop iterative and recursive programs. 5) read, and comprehend the behaviour of, programs written by others. Skills: Problem solving (T/F, A), IT (T/F, A) Content: Introduction to computers and programming. Introduction to objectoriente systems development. Algorithms. Control structures: sequence, selection and iteration. Scope and extent. Primitive data types. Testing. Objectorientation: reuse inheritance classes, objects and methods. Recursion. Exception Handling. Files and Streams. 
CM10135: Programming II 
Credits: 12 
Level: Certificate 
Semester: 2 
Assessment: CW60EX40 
Requisites: 
Before taking this unit you must take CM10134 (or equivalent approved by Director of Studies), and in taking this unit you cannot take CM10140 
Aims: To continue the practice
of the programming process begun in Programming I. To extend the notion
of objectoriented software development. To increase practical skills at
reading and writing programs and producing programs to solve real world
problems. Learning Objectives: 1) To be able to design, construct and evaluate substantial data structures by developing abstract data types. 2) To be able to read, and comprehend the behavior of, complex abstractions 3) To be able to design suitable software systems from a problem description. Skills: Problem Solving (T/F, A). Content: Data structures. Algorithms and complexity. Exception handling. Abstract data types and classes (lists, stacks, queues, etc.) Inheritance vs composition. Abstract vs concrete classes. Selfreferential classes. Event handling. Graphics. Multithreading. Network programming. 
CM10136: Software Engineering I 
Credits: 6 
Level: Certificate 
Semester: 1 
Assessment: CW25EX75 
Requisites: 
While taking this unit you must take CM10134 
Students who undertake this unit should normally
have at least 3 Alevel passes (or equivalent) at grades A,B,B or above.
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. Learning Objectives: 1) To be able to carry out analysis of domain, user, task and software requirements using a taught method of analysis; 2) To be able to produce specifications of designs; 3) To be able to set evaluation and test criteria with the ability to use simple forms of evaluation and testing. Skills: Problem Solving (T/F, A), Working with Others (T/F, A), Analytical thinking, Empirical methods. Content: Software design process models, task analysis, requirements analysis, domain analysis. Domain modeling, task modeling, conceptual design model, prototyping. Empirical evaluation methods, and simple analytical evaluation and performance testing methods. 
CM10137: Software Engineering II 
Credits: 6 
Level: Certificate 
Semester: 2 
Assessment: CW25EX75 
Requisites: 
Before taking this unit you must take CM10134 and take CM10136 
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. Learning Objectives: 1) To be able to analyse design problems choosing between analytical approaches. 2) To be able to construct abstract models using appropriate formal and informal languages. 3) To be able to select and use correctly, appropriate forms of evaluation criteria and methods. 4) To be able to use appropriate forms of design and prototyping approaches. Skills: Problem Solving (T/F, A), Working with Others (T/F, A) 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. 
CM10138: Systems II: programming & C 
Credits: 6 
Level: Certificate 
Semester: 2 
Assessment: CW25EX75 
Requisites: 
Before taking this unit you must (take CM10134 or take CM10140) and take CM10017 (or equivalents authorised by the Director of Studies) 
Aims: To provide practical skills
in C programming, skills that might be of use in industry: Learning Objectives: 1) To be able to write small programs in C. 2) To be able to use and write C libraries and use C tools. 3) To be aware of professional practice issues regarding C. Skills: Problem Solving (T/F, A) Content: C Programming: coverage of all the C programming language, with special emphasis on pointers and their usage. C Libraries and Tools: Compilation, linking and archiving; dividing programs into reusable units (libraries), C programming methods for data hiding and opaque typing; Professional Issues: programming style; debugging techniques, safetyfirst programming methods. 
CM10139: Computation I: numbers & structures 
Credits: 6 
Level: Certificate 
Semester: 1 
Assessment: CW25EX75 
Requisites: 
In taking this unit you cannot take MA10001 and take MA10004 
Students who undertake this unit should normally
have at least 3 Alevel passes, (or equivalent) at grades A,B,B or above.
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. Learning Objectives: 1) To be able to understand and use the language of mathematics. 2) To be able to write simple proofs using, for example, induction. Skills: Application of Number (T/F, A). Content: Standard logical operators, predicates, quantifiers. Settheoretic language. Maps, functions. Injective, surjective, bijective maps. Proof by induction and its relation to recursion. Cartesian products, relations, equivalence relations. Rational numbers. Cauchy sequences, real numbers. Partially ordered sets. Groups, rings, fields. 
CM10140: Introduction to programming in Java 
Credits: 6 
Level: Certificate 
Semester: 2 
Assessment: CW30EX70 
Requisites: 
In taking this unit you cannot take CM10134 
Students who undertake this unit should normally
have Alevel mathematics, or equivalent, at grade B or above. Aims: To introduce object orientated programming in Java. Learning Objectives: 1) To understand the need for specification and design of solutions to complex problems. 2) To be able to design and write programs which solve simple problems of the sort of which may occur in scientific applications. 3) To understand the basic concepts of object oriented developments. Skills: Problem Solving (T/F, A). 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. 
CM20001: Foundations of computer graphics 
Credits: 6 
Level: Intermediate 
Semester: 2 
Assessment: CW25EX75 
Requisites: 
Before taking this unit you must (take CM10134 and take CM10135, or take CM10140) and take CM20144 
Aims: To provide an introduction
to underlying mathematical techniques for capturing, synthesizing and displaying
images on a computer. Learning Objectives: 1. To know how digital cameras and digital display technologies work; 2. To understand the effects of sampling and to conceive of an image in several different ways; 3. To be able to synthesise a simple animation using simple twodimensional objects. Skills: Application of number (T/F) Content: Capture and display technologies. Homogeneous coordinates and projective geometries. Fourier analysis, convolution, and linear filtering; removing noise. Modelling twodimensional primitives using functions and polylines. Animations using affine transforms. Simple vector analysis in threedimensions. 
CM20019: Computation III: introduction to formal logic & semantics 
Credits: 6 
Level: Intermediate 
Semester: 1 
Assessment: EX75CW25 
Requisites: 
Before taking this unit you must take CM10139 
(or equivalent approved by Director of Studies).
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 first order logic and of programming languages.. Learning Objectives: 1) To be able to use a formal deductive system such as a semantic tableaux for proof in the predicate calculas. 2) To be able to translate statements in natural language into a first order language, and then into clausal form. 3) To understand the Gvdel completeness theorem. 4) To be able to write, and to understand the behaviour of, programs in a logic programming language, such as Prolog. 5) To have a basic understanding of semantics. Skills: Problem Solving  Formalization of ideas, precise use of language (T/F, A) 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, Gvdel completeness theorem. Logic programming . 
CM20026: Software project 
Credits: 6 
Level: Intermediate 
Semester: 2 
Assessment: CW90OT10 
Requisites: 
Before taking this unit you must take CM10134 and take CM10135 and take CM10136 
(or equivalents authorised by Director of Studies)
Aims: To gain experience of working with other people and, on a smallscale, some of the problems that arise in the development of software. Learning Objectives: 1. 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. 2. To know the main terms of the Data Protection Act and be able to explain its application in a variety of contexts. 3. To be able to design a presentation for a given audience. 4. To be able to assess a presentation critically. Skills: Communication (T/F, A), Working with Others (T/F, A), Problem Solving (F, A). 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. 
CM20028: Computation IV: Algorithms 
Credits: 6 
Level: Intermediate 
Semester: 2 
Assessment: CW25EX75 
Requisites: 
Before taking this unit you must take CM10139 
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.
Learning Objectives: 1. To learn the general principles of effective algorithm design and analysis on some famous examples which are used as fundamental subroutines in major computational procedures; 2. To be able to apply these principles in the development of algorithms; 3. To be able to make informed choices between basic subroutines and data structures. Skills: Problem Solving (F, A) Content: Algorithms and complexity. Main principles of effective algorithms design: recursion, divideandconquer, 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. Numbertheoretic algorithms: integer factorization, primality testing, the RSA public key cryptosystem. Complexity classes P and NP. NP completeness. 
CM20029: Applications IV: compilers 
Credits: 6 
Level: Intermediate 
Semester: 2 
Assessment: CW25EX75 
Requisites: 
Before taking this unit you must (take CM10134 and take CM10135) or take CM10140 and take CM10020 
Aims: To give an introduction
to the processes involved in compilation and the use of compiler generation
tools and compiler support. Learning Objectives: 1. To know the phases of the compilation process and how to implement them. 2. To be able to choose between different techniques and different representations, depending on the problem to be solved. Skills: IT (T/A). 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 runtime systems and issues in storage management, including garbage collection. 
CM20105: Industrial placement 
Credits: 60 
Level: Intermediate 
Academic Year 
Assessment: 
Requisites: 
Content: Industrial Placement 
CM20106: Study year abroad (BSc) 
Credits: 60 
Level: Intermediate 
Academic Year 
Assessment: 
Requisites: 
Content: BSc Study Year Abroad 
CM20143: User interface programming 
Credits: 6 
Level: Intermediate 
Semester: 1 
Assessment: CW40EX60 
Requisites: 
Before taking this unit you must take CM10134 and take CM10135 and take CM10136 and take CM10137 
(or equivalents approved by Director of Studies)
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. Learning Objectives: 1. To be able to program user input, application output, and user interface input/output event handling. 2. To understand the principles of interaction design. 3. To design user interfaces to optimise usability and support for the users' tasks. 4. To be aware of relevant principles, guidelines and tools to support user interface design. Skills: Problem Solving (F) Content: Humancomputer interaction and usability. Usability evaluation. Introduction to GUI programming and Java Swing. Swing Components. Layout Managers. Event handling. The ModelViewController paradigm. Trees and Tables. Mobile Interaction. 
CM20144: Applications I: mathematics for applications 
Credits: 6 
Level: Intermediate 
Semester: 1 
Assessment: CW25EX75 
Requisites: 
Before taking this unit you must take CM10139 
(or equivalent approved by Director of Studies).
Aims: To introduce the linear algebra, and analysis which is needed in applications. Learning Objectives: 1) To demonstrate an understanding of some basic mathematical concepts and techniques which are needed in applications such as Graphics, Computer Vision, Computer Music. 2) To be able to understand and construct simple proofs. 3) To write simple procedures implementing mathematical algorithms. Skills: Communication in the language of mathematics (T/F, A). 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. 
CM20145: Applications II: databases 
Credits: 6 
Level: Intermediate 
Semester: 1 
Assessment: CW25EX75 
Requisites: 
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.
Learning Objectives: 1. To be able to design and build a database using a database management system, given a description of user requirements; 2. The ability to answer nontrivial queries using databases produced by others; 3. To demonstrate understanding of relational database theory; 4. To be aware of alternative models for databases; 5. To understand the importance of data protection and be able to implement secure databases. Skills: IT (T, A) (including Legal Awareness) 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. Entityrelationship 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. 
CM20167: Programming III: functional programming 
Credits: 6 
Level: Intermediate 
Semester: 1 
Assessment: CW25EX75 
Requisites: 
Before taking this unit you must (take CM10134 and take CM10135) or take CM10140 
(or equivalent approved by Director of Studies).
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. Learning Objectives: 1) To recognise the connections between mathematical logic and the development of programming languages; 2) To use the notion of reduction in the lambda calculus; 3) To be able to explain how the lambda calculus provides a foundation for the functional family of programming languages; 4) To be able to demonstrate practical competence with the Lisp family of languages, typed functional languages and lazy functional languages; 5) To be able to explain the key features of such languages. Skills: IT (T, A), Application of Number  inference (T, A). Content: From lambda calculus to Lisp and functional programming. The ChurchRosser theorem and applicative versus normal order evaluation. Typed lambda calculus and type inference. Combinatory logic. Lazy functional languages. Programming in a functional style. Other calculi. 
CM20168: Programming IV: programming languages 
Credits: 6 
Level: Intermediate 
Semester: 2 
Assessment: CW25EX75 
Requisites: 
Before taking this unit you must take CM20167 
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.
Learning Objectives: 1) Demonstrate a basic knowledge of the early history of programming and the key programming languages that have affected the development of computing; 2) To know one of the standard ways in which programming languages are divided into families; 3 ) To be able to argue for a particular categorization of a new language by its characteristics; 4) Give an account of the evolution of the computing industry and to extrapolate current trends in the industry, while realising the weakness of extrapolation; 5) To be able to discuss current developments in programming language research. Skills: Working with others (F), Communications (F, A). Content: The prehistory (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. 
CM30070: Computer algebra 
Credits: 6 
Level: Honours 
Semester: 1 
Assessment: EX75CW25 
Requisites: 
ALevel Mathematics grade A/B (or equivalent authorised
by Director of Studies) Aims: To show how computer algebra can be used to solve some interesting mathematical problems. Learning Objectives: 1. To understand the practical possibilities and limitations of symbolic computation; 2. To be able to solve problems using symbolic computation. Skills: Application of number (T/F). Content: Introduction to Reduce. Data representation questions. Normal and canonical forms. Polynomials, algebraic numbers, elementary numbers. Polynomial algebra: GCD and factorization algorithms, modular methods. Numerical and symbolic methods for solving systems of nonlinear equations. Gröbner bases. Introduction to integration. 
CM30071: Logic & its applications 
Credits: 6 
Level: Honours 
Semester: 2 
Assessment: EX75CW25 
Requisites: 
Before taking this unit you must take CM20019 
Aims: To explore the world of
formal logics from the perspectives of truth, proof and computation. To
gain an overview of both the foundational and applicative roles of logics
in the computational sciences. Learning Objectives: 1. To understand the interaction between syntax and semantics for several significant systems of logic, covering classical, intuitionistic and substructural ideas. 2. To know how logics may be adapted to describe computational phenomena and how to build computational tools, such as programming languages or theorem provers, from systems of logic. 3. To address issues such as philosophical questions related Goedel's incompleteness theorems, and/or related applied topics such as expert systems or neural networks. Skills: Problem Solving(F), Communication (F), Application of Number(F). Content: Classical logic: models and proof systems. Intuitionistic logic: models and proof systems, computational significance. Lambda calculus and its semantics, normalization. Sequent calculi as a basis for logic programming, algorithmic questions. Modality and program logics. Fuzzy logic. Substructural logics: semantics, proof theory, computational significance. Related foundational and applied topics. 
CM30072: Safetycritical computer systems 
Credits: 6 
Level: Honours 
Semester: 1 
Assessment: EX100 
Requisites: 
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. Learning Objectives: At the end of this course a student should be able to demonstrate the following: 1. An understanding of the nature of risk in developing computerbased systems. 2. The ability to choose and apply appropriate hazard analysis models for simple safetyrelated problems. 3. An understanding of how to approach the design of safetycritical software systems. Skills: IT (T, A). 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 safetycritical systems. Modeling 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 humanmachine interface; verification of safety in computer systems. 
CM30073: Advanced algorithms & complexity 
Credits: 6 
Level: Honours 
Semester: 2 
Assessment: EX100 
Requisites: 
Before taking this unit you must take CM20028 
Aims: To present a detailed introduction
to one of the central concepts of combinatorial algorithmics: NPcompleteness;
to extend this concept to real numbers computations; to study foundations
of a more general problem of proving lower complexity bounds. Learning Objectives: 1. To be able to recognise NPhard problems and prove the appropriate reductions. 2. To cope with NPcomplete problems. 3. To know some fundamental methods of proving lower complexity bounds. Content: NPcompleteness: Deterministic and Nondeterministic Turing Machines; class NP; versions of reducibility; NPhard and NPcomplete problems. Proof of NPcompleteness of satisfiability problem for Boolean formulae. Other NPcomplete problems: clique, vertex cover, travelling salesman, subgraph isomorphism, etc. Polynomialtime approximation algorithms for travelling salesman and some other NPcomplete graph problems. Real Number Turing machines: Definitions; completeness of real roots existence problem for 4degree polynomials. Lower complexity bounds: Algebraic computation trees and their complexities; complexity of distinctness problem and of knapsack. 
CM30075: Advanced computer graphics 
Credits: 6 
Level: Honours 
Semester: 1 
Assessment: EX75CW25 
Requisites: 
Aims: The primary aims are to
understand the ways of representing, rendering and displaying pictures of
threedimensional objects (in particular). In order to achieve this it will
be necessary to understand the underlying mathematics and computer techniques.
Learning Objectives: 1. To be able to distinguish modelling from rendering. 2. To be able to describe the relevant components of Euclidean and projective geometry and their relationships to matrix algebra formulations. 3. To know the difference between solid and surfacemodelling and be able to describe typical computer representations of each. 4. To be able to explain in detail rendering for raster displays, including lighting models and a variety of visual effects and defects. 5. To be able to describe the sampling problem and solutions for both static and moving pictures. Skills: Application of Number (T). 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; scanline rendering. CSG: raycasting; visual effects and defects. Rendering for animation. Ordered dither; resolution; aliasing; colour. 
CM30076: Project preparation 
Credits: 6 
Level: Honours 
Semester: 1 
Assessment: OT100 
Requisites: 
After taking this unit you must take CM30082 
(or equivalents authorized by the Director of Studies)
Aims: To enable the choice of projects and allocation of project supervisor(s). To facilitate the development of an agreed project proposal. To apply abilities in requirements capture and analysis. To apply skills in project planning and management. To develop skills in academic writing and critiquing technical proposals. Learning Objectives: 1.Understand the academic requirements of the project; 2.To be able to critique personal abilities and skills in scoping and planning a project; 3.To be able to gather requirements and translate these into objectives within a project plan constrained by available resources; 4.To be understand the requirements for academic writing, including referencing and the appropriate use of graphs, diagrams and tables; 5.To gain experience and demonstrate skills in scholarly research and its presentation through academic writing; 6.To demonstrate the ability to critically analyse previous work and identify appropriate techniques that will produce successful solutions. Skills: Project Planning (F, A), Project Management (F, A), Communication (T/F, A). Content: The requirements of a final year Computer Science project. Selecting a project and preparing your proposal. Proposal structure. Project bounding and planning using appropriate Project Management techniques. Effective and ineffective written communication. When to use graphs, diagrams and pictures. Citing and use of references. Styles of written English. The project dissertation. Conducting effective background research. 
CM30078: Networking 
Credits: 6 
Level: Honours 
Semester: 2 
Assessment: EX100 
Requisites: 
Before taking this unit you must take CM10138 
(or equivalent authorised by the Director of Studies)
Aims: To understand the Internet, and associated background and theory, to a level sufficient for a competent domain manager. Learning Objectives: Students should be able to: 1. Explain the acronyms and concepts of the Internet and how they relate; 2. State the steps required to connect a domain to the Internet and explain the issues involved to both technical and nontechnical audiences; 3. Discuss the ethical issues involved with the internet, and have an "intelligent layman's" grasp of the legal issues and uncertainties. 4. Be aware of the fundamental security issues; 5. Be able to advise on the configuration issues surrounding a firewall. Skills: IT  Networking, Legal Awareness (T, A). Content: The ISO 7layer 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. 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, MANs, 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. 
CM30080: Computer vision 
Credits: 6 
Level: Honours 
Semester: 2 
Assessment: EX100 
Requisites: 
Aims: To present a broad account
of computer vision, with the emphasis on the image processing required for
its low level stages. Learning Objectives: 1. 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 MarrHildreth, 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. Practical problems based on an image processing package. 
CM30082: Double module project 
Credits: 12 
Level: Honours 
Semester: 2 
Assessment: OT100 
Requisites: 
Before taking this unit you must take CM30076 
Aims: To facilitate the development
of an individual Computer Science Project according to an agreed project
proposal. To develop skills in research and in the application of new and
previously acquired knowledge to the development of a computer science product.
Learning Objectives: 1. To apply background research to the development of a new product or the production of original research results; 2. To apply appropriate management techniques, using a preagreed project plan, and to adapt the plan in the face of resource constraints; 3. To be able to learn independently and transfer knowledge into unfamiliar situations in a spirit of critical enquiry; 4. To investigate, select and apply appropriate methods, tools and techniques for the development and delivery of a computer science product. 5. To be able to evaluate systems in terms of general and specific attributes; 6. To be able to critique personal performance and achievement within the project; 7. To demonstrate academic writing skills within the production of a project dissertation. Skills: Project Planning (F, A), Project Management (F, A), Communication (T/F, A). Content: The programme of study for each project will be that defined by the agreed project proposal, produced within CM30076. Individual project supervisors provide academic direction and appropriate tutorial support during the project. This will include direction to appropriate academic material and skills training that may be required by the student. 
CM30141: Advanced human computer interaction 
Credits: 6 
Level: Honours 
Semester: 2 
Assessment: CW25EX75 
Requisites: 
Before taking this unit you must take CM10134 or take CM10140 
Aims: To give students an advanced
level understanding of current research issues in human computer interaction.
To focus upon human computer interaction research methods, human computer
interaction theory, covering topics of user interface design, evaluation
and modelling. Application areas such as collaborative systems, virtual
environments and agent interaction are examples of current application topics.
Issues of human computer interaction in mobile and embedded contexts. Learning Objectives: 1. To obtain an indepth understanding of human computer interaction theory and methods in stateoftheart research. 2. To understand the interdisciplinary nature of human computer interaction and the relationship between theory and design practice. 3. To be able to contribute to both human computer interaction theory and human computer interaction practice. Skills: Problem solving (T/F, A), working with others (T/F, A). Content: Psychological theories of human behavior, contextual analysis, frameworks for human computer interaction, model based design. Modelling individual and collaborative tasks and group work. Human computer interaction and creativity. Evolutionary theories of design. The role of analysis, design and evaluation methods in human computer interaction. Advanced forms of interaction technologies. 
CM30142: Music & digital signal processing 
Credits: 6 
Level: Honours 
Semester: 1 
Assessment: EX100 
Requisites: 
Aims: To introduce the basic ideas
of DSP programming and the ways in which musical signals can be treated
as data. Learning Objectives: 1. To be able to code simple digital filters, and construct simple oscillators; 2. To be able to control a frequency domain analysis and resynthesis; 3. To be able to use three synthesis methods. Content: Introduction: Musical signals: their nature, characterisation 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. Psychoacoustics: Basic ideas and Shepard tones as an example. Lossy compression. MPEG level 2 and MPEG4. 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 nonlinear 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. 
CM30171: Advanced compilers 
Credits: 6 
Level: Honours 
Semester: 1 
Assessment: EX75CW25 
Requisites: 
Before taking this unit you must take CM20029 
(or equivalent authorised by Director of Studies)
Aims: To acquire an appreciation of the suitability of different techniques for the analysis of and representations for programming languages, followed by the various means to interpret them. 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. Learning Objectives: 1.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. 2.To be able to describe the philosophy of RISC and CISC architectures. 3.Knowledge of at least one technique for register allocation, and one technique for instruction scheduling. 4.The ability to write a simple code generator. Skills: Problem solving (T/F, A). Content: Construction of lexical analysers, recursive descent parsing, construction of LR parser tables, type checking, polymorphic type synthesis, abstract interpretation, storage management, bytecode interpreters, codethreaded interpreters, partial evaluation, staging transformations.Description of several stateoftheart chip designs. The implications for compilers of RISC architectures. Register allocation algorithms (colouring, DAGS, scheduling). Global dataflow analysis. Pipelines and instruction scheduling; delayed branches and loads. Multiple instruction issue. VLIW and the Bulldog compiler. Harvard architecture and Caches. Benchmarking. 
CM30174: Ecommerce & agents 
Credits: 6 
Level: Honours 
Semester: 1 
Assessment: EX50CW50 
Requisites: 
Before taking this unit you must take CM10134 and take CM10135 
(or equivalent authorised by Director of Studies)
Aims: To introduce students to the principles of agents, agency, institutions and agent software development. Learning Objectives: 1.Students will know the factors that differentiate agents from other software systems and be able to classify agents according to their competencies. 2.Students will be able to describe and contrast different agent architectures, platforms and approaches to agent development. 3.Students will be able to develop simple agentbased software systems. Skills: Working with Others (F, A), Problem Solving (T/F, A). Content: Agent architectures, agent platforms (Jade, FIPAOS, LEAP), standards (FIPA), communication and content languages (FIPAACL, KQML), agentoriented software engineering, virtual enterprise formation, institutions and norms, auctions, B2C, B2B, case studies of practical applications. 
Postgraduate Units: 
CM50109: Formal methods & programming 
Credits: 12 
Level: Masters 
Semester: 1 
Assessment: CW100 
Requisites: 
Aims & Learning Outcomes: Aims:
(a) to give a foundation in software design and development; (b)
to give a foundation in implementing software solutions, using a modular
programming language and an objectoriented 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.
Learning Outcomes: A student will be able to: * use design techniques such as modularisation and objectoriented design to develop software solutions to given problems; * design, implement, test and document simple programs using both a modular programming language and an objectoriented programming language; * use simple formal methods for specification and verification; * specify, implement and use standard data structures. Content: Building software: the software lifecycle; the need for formal methods; program structures; program development. Principles of software design  modularisation, encapsulation, data hiding, clientship and reuse. Abstractionbased design  finding appropriate data abstractions and procedural abstractions. Using formal specification. Standard data abstractions: stack, queues, lists. Software testing: stages of testing; designing test plans. Formal verification techniques. Extending software development principles to an objectoriented language. Introducing objectoriented techniques for window and mouse management, memory management, garbage collection, socket communication for Internet programming, multiprogramming via threads. Introduction to graphical user interfaces for Internet programming. 
CM50110: Humancomputer interaction & virtual reality 
Credits: 6 
Level: Masters 
Semester: 1 
Assessment: EX75CW25 
Requisites: 
Aims & Learning Outcomes:
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 socalled 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 possible impact of virtual reality systems.
Learning Outcomes: A student will be able to: * understand the relevant human factors that can influence the deployment and utilisation of computer technology; * make critical evaluations of humancomputer interface designs; * apply good practice to simple interactive computer design problem and know how to avoid some of the main pitfalls of bad design; * understand how virtual reality systems are constructed; * understand the current state and possible future directions of virtual reality. Content: HumanComputer 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. 
CM50114: Multimedia 
Credits: 6 
Level: Masters 
Semester: 2 
Assessment: EX75CW25 
Requisites: 
Aims & Learning Outcomes:
Aims: The course aims to make students aware of the underlying technology and the methods of creating and organising multimedia systems, with a particular emphasis on CDROM.
Learning Outcomes: A student will be able to; * discuss hypermedia as a background to multimedia; * understand a variety of CDROM formats, the encoding techniques needed for various source media and the consequences of each; * understand authoring tool concepts and the basic legal consequences of publishing; * understand what makes a wellorganised multimedia presentation. Content: Hypertext and hypermedia: formats and mechanisms; static and dynamic media. CDROM 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. 
CM50121: Safety critical systems 
Credits: 6 
Level: Masters 
Semester: 1 
Assessment: EX75CW25 
Requisites: 
This unit shares lectures and tutorials with CM30072.
Aims & Learning Outcomes: 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. Learning Outcomes: A student will be able to: * understand the concepts of safety, risk and the role of human factors in the design and operation of safety critical systems; * understand the nature and role of the safety lifecycle in developing safety related systems; * choose and apply appropriate hazard identification and analysis techniques for a variety of safety related problems; * critically evaluate and reason effectively about hazardous situations in safety critical 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 safetycritical 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; designingthe humanmachine interface; verification of safety in computer systems. 
CM50122: Projects and their management 
Credits: 6 
Level: Masters 
Semester: 2 
Assessment: CW100 
Requisites: 
Before taking this unit you must take CM50109 
This unit shares lectures with CM20026.
Aims & Learning Outcomes: Aims: To gain experience of working with other people and, on a smallscale, some of the problems that arise in the development of software. Learning Outcomes: A student will 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. * understand the main terms of the Data Protection Act and explain its application in a variety of contexts. 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. 
CM50123: Networking 
Credits: 6 
Level: Masters 
Semester: 2 
Assessment: EX75CW25 
Requisites: 
This unit shares lectures and tutorials with CM30078.
Aims & Learning Outcomes: Aims: To understand the Internet, and associated background and theory, to a level sufficient for a competent domain manager. Learning Outcomes: A student will be able to: * explain the acronyms and concepts of the Internet and how they relate; * state the steps required to connect a domain to the Internet and explain the issues involved to both technical and nontechnical audiences; * understand the ethical issues involved in the use of the Internet, and have an "intelligent layman's" grasp of the legal issues and uncertainties; * understand fundamental security issues, and advise on the configuration issues surrounding a firewall. Content: The ISO 7layer 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. 
CM50147: Programming 
Credits: 6 
Level: Masters 
Semester: 1 
Assessment: EX50CW50 
Requisites: 
While taking this unit you must take CM50148 and take PS50067 and take XX50125 
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. Objectorientation, reuse, inheritance, classes, objects, methods. Core Reading; Single Text Course. D Arnow & G Weiss Introduction to Programming Using Java; an objectoriented approach Addison Wesley 1998. 
CM50148: Usability design & evaluation 
Credits: 6 
Level: Masters 
Semester: 1 
Assessment: EX50ES50 
Requisites: 
While taking this unit you must take CM50147 and take PS50067 and take XX50125 
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. 
CM50149: Collaborative virtual environments 
Credits: 6 
Level: Masters 
Semester: 2 
Assessment: EX50ES50 
Requisites: 
Before taking this unit you must take CM50147 and take CM50148 and take PS50067 and take XX50125 and while taking this unit you must take CM50150 and take XX50126 and take XX50127 and take XX50128 
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 humanhuman 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: Computersupported 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 nonimmersive environments. Mobile and wearable environments. Core reading: T K Capin, I S Pandzic & N MagnenatThalmann (eds) Avatars in Networked Virtual Environments Wiley, 1999 C Greenhalgh Largescale 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 
CM50150: Design 
Credits: 6 
Level: Masters 
Semester: 2 
Assessment: CW100 
Requisites: 
Before taking this unit you must take CM50147 and take CM50148 and take PS50067 and take XX50125 and while taking this unit you must take CM50149 and take XX50126 and take XX50127 and take XX50128 
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 
CM50170: Dissertation 
Credits: 30 
Level: Masters 
Dissertation period 
Assessment: DS100 
Requisites: 
Before taking this unit you must take CM50175 
Before taking this unit, students must obtain the required standard in the MSc in Computer Science taught units.
Aims & Learning Outcomes: Aims: To develop skills of individual project effort in a computer based practical undertaking with original development content related to one or more of the lecture modules studied. Learning Outcomes: A student will be able to; * identify the tasks to be completed in a project proposal, plan a scheme of work, and complete the project to a professional standard; * assemble and create the necessary software tools, carry out the development of the solution of a technical problem in computer science, and evaluate the effectiveness of the solution against common standards of quality; * demonstrate the successful completion of these tasks in a wellstructured and coherently written dissertation. Content: The student will follow an appropriate problem solving route, building on the project proposal written in CM50175 Research Project Preparation. The student will analyse possible problem solutions and choose appropriate methods and approaches. This will lead to the implementation of the chosen solution, its testing and evaluation. Projects are usually softwarebased, but suitable experimental or theoretical projects may be undertaken. A comprehensive dissertation will be submitted at the completion of the project. 
CM50175: Research project preparation 
Credits: 6 
Level: Masters 
Semester: 2 
Assessment: PR20CW80 
Requisites: 
Before taking this unit you must take CM50109 and After taking this module you must take XX50053 
Aims & Learning Outcomes: Aims: To acquire the skills to undertake a research project in fundamental or applied computer science. Learning Outcomes: A student will be able to: * undertake a literature review; * critically review previous work in a chosen subject area; * prepare a project proposal; * understand the principles of structuring a dissertation. Content: Writing for scientific reports, papers and dissertation. A series of research seminars. Having identified the area of work and been assigned a project advisor, the student will undertake a conceptual review, a literature search, and a critical analysis of previous work. In consultation with the project advisor the student will write a comprehensive research review and proposal for a subsequent research project. 
CM50176: Databases and data management 
Credits: 6 
Level: Masters 
Semester: 1 
Assessment: CW100 
Requisites: 
While taking this unit you must take CM50109 
Aims & Learning Outcomes: Aims: To acquire the skills to undertake a research project in fundamental or applied computer science. Learning Outcomes: A student will be able to: * undertake a literature review; * critically review previous work in a chosen subject area; * prepare a project proposal; * understand the principles of structuring a dissertation. Content: Writing for scientific reports, papers and dissertation. A series of research seminars. Having identified the area of work and been assigned a project advisor, the student will undertake a conceptual review, a literature search, and a critical analysis of previous work. In consultation with the project advisor the student will write a comprehensive research review and proposal for a subsequent research project. 
CM50177: Algorithms and data structures 
Credits: 6 
Level: Masters 
Semester: 2 
Assessment: CW100 
Requisites: 
Before taking this unit you must take CM50109 
Aims & Learning Outcomes: 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. Learning Outcomes: A student will be able to: * use a variety of approaches to algorithm design; * understand the importance of space and time complexity in choosing algorithmic solutions; * evaluate and choose appropriate data structures and algorithms for a range of programming problems. Content: Brief introduction to the C programming language for implementing algorithms. Introduction to algorithmic complexity and efficiency: O() notation, growth rate, estimating complexity, space/time trade offs. Classes of algorithm: for example, divide and conquer, greedy algorithms. Storage and retrieval by key: linear and binary searching, linked representations, hashing and binary search trees, introduction to other types of tree. String matching algorithms. Sorting algorithms: insertion sort, selection sort, heapsort, quicksort. 
XX50053: Project dissertation 
Credits: 30 
Level: Masters 
Dissertation period 
Assessment: DS100 
Requisites: 
Aims & Learning Objectives: To develop skills of individual project effort in a computer based practical undertaking with original development content related to one or more of the lecture modules previously studied.
On completion of the Unit students should be able to survey the literature related to a broadly specified area of technology and present an orderly written survey which places an individual project undertaking in context. They should be able to identify the tasks to be completed, plan a scheme of work, and complete the project to the standard expected of a young professional in the undertaking chosen. They should be able to assemble and create the necessary software tools, carry out the development of the solution of a technical problem in multimedia, and evaluate the effectiveness of their solution against common standards of quality. They should be able to demonstrate the successful completion of these tasks in a well structured and coherently written dissertation.
Content: Students will choose a project from a list of topics offered by the Departments, or propose their own. The project will be implemented in software but could also involve the use of low level hardware. The students will be expected to follow through the accepted problem solving route, beginning with the identification and specification of the problem and searching of the relevant literature. They should then proceed to proposals for solution, analysis of alternatives, implementation of the chosen solution and final evaluation and testing. A written dissertation will be submitted at the completion of the project. 
XX50127: Communication, interaction & tasks 
Credits: 6 
Level: Masters 
Semester: 2 
Assessment: ES80OR20 
Requisites: 
Before taking this unit you must take CM50147 and take CM50148 and take PS50067 and take XX50125 and while taking this unit you must take CM50149 and take CM50150 and take XX50126 and take XX50128 
Aims & Learning Objectives: To enable students to assess and understand the human social causes and consequences of communication technologies, and their developments. To enable students to contribute to the design, development and application of communication technologies to improve humanhuman communication. Students will be able to analyse humanhuman communication in terms of the social, communication, task, and cognitive aspects. To critically and creatively apply communication technologies to support humanhuman communication. To understand and apply theories of cognition, collaboration, interaction, communication and tasks. To consider resource loads. Content: The unit will look at interaction systems and the implication of systems for the design of tasks. It will explore the relationship between communication systems and the social context, particularly the social origins and factors in communication, and the social consequences of such developments. How far can we design organisations and cultures? What are the implications of this ability? The unit will also explore 'agentagent' interaction, and models of communication implied by these developments. Core Reading: J B Carroll (ed) Scenario Based Design Wiley 1995 W Hall et al (eds) Hypermedia and Multimedia Systems, Addison Wesley 1999 B A Nardi (ed) Context and Consciousness; activity theory and humancomputer interaction M I T Press 1996 B A Nardi & V L O'Day Information Ecologies; using technology with heart, M I T Press 1999 D A Norman Defending Human Attributes in the Age of the Machine, Voyager CDRom 1999 
XX50128: Project 1 
Credits: 12 
Level: Masters 
Semester: 2 
Assessment: CW100 
Requisites: 
Before taking this unit you must take CM50147 and take CM50148 and take PS50067 and take XX50125 and while taking this unit you must take CM50149 and take CM50150 and take XX50126 and take XX50127 
Aims & Learning Objectives: To acquire the skills of planning independent research. Students will be able to complete a literature review and write a research proposal. Content: Students will undertake an original piece of work, which would normally bridge the disciplines involved in the programme. The first stage of the Project will comprise a literature/conceptual review and research proposal which may comprise theoretical, empirical or design components. Students completing the Diploma will be assessed on this report. Students progressing to the masters degree will be assessed and will use this work as the basis for the study that forms the second stage of the Project. 
