Department of Computer Science, Unit Catalogue 2004/05 
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 Outcomes: 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 Outcomes: 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 Outcomes: 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: 
In taking this unit you cannot take CM10140 and before taking this unit you must take CM10134 (or equivalent approved by Director of Studies) 
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 Outcomes: 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 the importance of software engineering, requirements
analysis, design modelling and specification, and the role of ethics. Learning Outcomes: 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 demonstrate and evaluate the ACM/IEEE code of conduct for software engineers. Skills: Problem solving  Analytical thinking, Empirical methods (T/F, A), Working with Others (T/F, A). Content: Software design process models, task analysis, requirements analysis, domain analysis. Domain modelling, task modelling, conceptual design model, basic UML. Validation of requirements. Ethics. 
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 introduce concepts of project and people management. To introduce appropriate
forms of abstraction for representing and reasoning about design issues.
To introduce appropriate testing and validation strategies. Learning Outcomes: 1. To be able to schedule and manage projects and people appropriately. 2. To be able to construct abstract models using appropriate formal and informal languages. 3. To be able to use appropriate forms of design and prototyping approaches. 4. To be able to use appropriate testing and validation strategies. Skills: Problem solving (T/F, A), Working with others (T/F, A). Content: Project and people management. Bridging the gap between modelling and coding. Overview of formal specification. Formal methods of testing. Prototyping and redesign including paper and runnable forms. Basic interface design issues. 
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 Outcomes: 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 Outcomes: 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 Outcomes: 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 CM20144 or take MA20010 
Aims: To provide an introduction
to underlying mathematical techniques for capturing, synthesizing and displaying
images on a computer. Learning Outcomes: 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 Outcomes: 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: CW100 
Requisites: 
Before taking this unit you must take CM10134 and take CM10135 and take CM10136 and take CM20145 (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 Outcomes: 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 further enhance team working skills gained in previous units. 3. To consolidate material taught in previous programming and software engineering units. Skills: Communication (T/F, A), Working with others (T/F, A), Problem Solving (T/F, A). Content: Project Management: Practice of software engineering techniques, Controlling software development, Project planning/Management, Documentation, Design, Quality Assurance, Testing. Professional Issues: The practice of the computer professional  presentations by computer professionals to illustrate the importance of codes of practice, legal obligations and/or ethics in professional practice. 
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 Outcomes: 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 CM10135 or take CM10140) and take CM10020 and take CM10138 (or equivalents authorised by Director of Studies). Whilst taking this unit you must take CM10138 if not previously studied. 
Aims: To give an introduction
to the processes involved in compilation and the use of compiler generation
tools and compiler support. Learning Outcomes: 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: OT100 
Requisites: 
Before taking this unit you must take CM10134 and take CM10136 and take CM20026 and take CM20145 and in taking this unit you cannot take CM20106 
Aims: To provide practical experience
in an industrial or commercial environment applying knowledge and skills
gained within an undergraduate degree programme containing a substantial
portion of computer science. To develop personal skills, typically including
communication skills (oral and written), planning and time management, problem
solving and analytical skills, decisionmaking skills, the critical appraisal
of new information, and teamworking skills. To enable an understanding
to be gained of the general structure of an organisation and the contribution
of the individual to the aims and objectives of an organisation. Learning Outcomes: 1. To demonstrate further understanding of the application of Computer Science and a range of Key Skills within an industrial context. 2. To be able to work accurately and consistently to identify and achieve personal and company objectives. 3. To learn how the individual integrates into and interacts with an organisation for the mutual benefit of the individual and the organisation. 4. To demonstrate the ability to manage conflicting resource and time demands through prioritisation, allocation, tracking and control. 5. To be able to identify appropriate opportunities to apply knowledge, skills and understanding in new contexts to evaluate solutions and solve problems. 6. To build a range of group working skills, typically including effective onetoone and group communication, presentations and interaction, and effective personal contribution to team goals. Skills: Problem Solving (T/F), Working with others (T/F, A), Communications (T/F, A). Content: A period of paid employment, normally with an established company operating within the IT sector, performing a role in which the knowledge and skills gained from the degree programme can be applied and developed. The placement period shall incorporate regular critical selfevaluation and employer evaluation in order to enhance practice and identify new learning needs. 
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: CW50EX50 
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 Outcomes: 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. Mobile Interaction. Pervasive systems. Nonvisual 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 Outcomes: 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 I: database systems 
Credits: 6 
Level: Intermediate 
Semester: 1 
Assessment: CW25EX75 
Requisites: 
Before taking this unit you must take CM10134 (or equivalent first programming unit approved by Director of Studies). Students are expected to have a prior knowledge of requirements elicitation and analysis techniques and the software development process (completion of CM10136 or suitable prior reading). 
Aims: To introduce students to
database concepts. To provide practical skills at using database management
systems, designing, using and managing databases. To teach databse theories.
To provide a systemsbased insight into database management system implementation.
Learning Outcomes: 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 implementation issues, including security and reliability. 6. To understand the legal and ethical framework within which a database practitioner must operate. Skills: IT (T/F, A) (including legal awareness). Content: Introduction to databases and database management systems (DBMSs). Functions of a DBMS. The organisational context. Data models and conceptual modelling through entityrelationship models. Overview of alternative database models. Sets, the relational model and the relational algebra. Keys, joins, SQL query language. Logical database design. Completeness of relational models. Codd's classification of canonical forms: first, second, third, BCNF, fourth and fifth normal forms. Physical database design. Constraints and triggers, views. Concurrency, transaction management and database security. Recovery and Backup, Memory, File store and Index management. Query processing and optimization. Ethical foundations and professional practice, the legal framework for data protection and freedom of information. 
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 Outcomes: 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 Outcomes: 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 Outcomes: 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 Outcomes: 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 Outcomes: 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 Outcomes: 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: 
Before taking this unit you must take CM20001 
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 Outcomes: 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 nonphotorealistic rendering. Skills: Application of Number (T). Content: Classical Modelling: Mesh models and their representation. Constructive solid geometry (CSG) and its representation. Classical Rendering: Raster images; Illumination models; scan line rendering or mesh models an hidden surface removal; ray trace rendering of CSG models; radiosity rendering. Geometry: Projective geometry and homogenous transformations. Colour: colour spaces, limits of the human eye and of display devices; tradeoff techniques for screen display and for printing. Modern techniques: Nonphotorealistic rendering; imagebased rendering; tone mapping; Applications: Animation; parallel rendering; virtual reality and games. 
CM30076: Project preparation 
Credits: 6 
Level: Honours 
Semester: 1 
Assessment: OT100 
Requisites: 
After taking this unit you must take CM30082 and before taking this unit you must take CM10134 and take CM10135 (or equivalents authorized by the Director of Studies). Students are expected to have a prior knowledge of software engineering techniques (completion of CM10136 or CM20026 or suitable prior reading). 
Aims: To enable the choice of
projects and alloction 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 Outcomes: 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 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; 7. To understand the ethical and legal framework relating to project work. Skills: Project planning (T/F, A), Communication (T/F, A), IT (Legal awareness) (T/F). 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. Review and relation to the project of: laws relating to intellectual property, copyright and patent, Data Protection and Freedom of Information laws, professional practice, Ethical experimental practice. 
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 Outcomes: 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: EX75CW25 
Requisites: 
Before taking this unit you must (take CM10134 or take CM10140) or (take and take CM20144) or take MA20010 or equivalents (authorised by the Director of Studies). 
Aims: To understand the ways of
analysing images to get information out of them. In order to achieve this
it will be necessary to understand the underlyin mathematics and computer
techniques. Learning Outcomes: Students will be able to: 1. Distinguish lowlevel from highlevel Computer Vision methods, and appreciate the vision problem; 2. Describe edge detection as a linear filter and distinguish between linear filtering and morphology; 3. Describe multicamera geometry and understand its value in applications such as mosaicing and reconstruction; 4. Understand texture and segmentation, and the role of highlevel models in recognition; 5. Appreciate a broad range of contemporary Computer Vision. Skills: Application of number (T/F). Content: Low level vision: Convolution and linear filtering, edge detection and blurring; the role of scale. Morphology. Texture descriptors. Multicamera vision: Homographies, epipolar geometry, and the fundamental matrix. Mosaicing and 3D reconstruction. Segmentation: Hough transforms, unsupervised clustering, scale sieves. Recognition: The role of prior models: templates, geometry, and statistics. 
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 Outcomes: 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 demonstrate understanding of relevant legislation and ethical practice in the specification, design and development of a software product or experimental process; 6. To be able to evaluate systems in terms of general and specific attributes; 7. To be able to critique personal performance and achievement within the project; 8. To demonstrate academic writing skills within the production of a project dissertation. Skills: Project Management (T/F, A), Communication (T/F, A), IT (Legal Issues) (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 Outcomes: 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: 
Before taking this unit you must take CM10134 and take CM10135 and take CM20144 or equivalents (as approved by the Director of Studies, to include knowledge of programming; complex numbers; knowledge of sine/consine functions, integration and elementary calculus). 
Aims: To introduce the basic ideas
of DSP programming and the ways in which musical signals can be treated
as data. Learning Outcomes: 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. Skills: Application of Number (T). 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 Outcomes: 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 Outcomes: 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: 
CM50110: Humancomputer interaction & virtual reality 
Credits: 6 
Level: Masters 
Semester: 1 
Assessment: EX75CW25 
Requisites: 
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: 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: 
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: 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: 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: 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: 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: To introduce fundamental
principles of database design and implementation. Learning Outcomes: A student will be able to: * design and validate a database from a given description; * implement and use a data model. Content: Database concepts; relational algebra, normalisation, and the Relational Model; data modelling; implementation of a database; SQL; application programs; distributed databases; concurrency and transaction; integration of a database into the structure of an organisation. 
CM50177: Algorithms and data structures 
Credits: 6 
Level: Masters 
Semester: 2 
Assessment: CW100 
Requisites: 
Before taking this unit you must take CM50109 
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. 
