University home | Catalogues for 2002/03 | for UGs | for PGs |
Department of Computer Science, Unit Catalogue 2002/03 |
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 A-level passes, (or equivalent) including Mathematics, at
grades A,B,B or above Aims and Learning Objectives: Aims: To introduce students to the structure, basic design, operation and programming of conventional, von Neumann and non-von Neumann computers at the machine level. To explore the correspondence between high level programming language control and data structures and what happens at the machine level. Objectives: To demonstrate an understanding of how the forms and conventions of high level languages are related to the machine level. To experience how structured programming can be applied in low as well as high level languages. To be able to assess the potential advantages and disadvantages of different architectures and how these may affect system software such as operating systems. To demonstrate an understanding the basic functions and possible organizations of operating system software. Contents: Principles of digital computer operation: use of registers and the instruction cycle; simple addressing concepts; Integers and floating point numbers. Input and output. Introduction to digital logic. Aspects of modern computer architectures: Von Neumann and Non von Neumann architectures and modern approaches to machine design, including, for example, RISC (vs CISC) architectures. Topics in contemporary machine design, such as pipelining; parallel processing and multiprocessors. The interaction between hardware and software. Prototypical operating systems and the history of operating systems. Program loaders (e.g. DOS, Windows), operating systems (e.g. Windows, NT, Unix). |
CM10020: Computation II: computability & decidability |
Credits: 6 |
Level: Certificate |
Semester: 2 |
Assessment: EX100 |
Requisites: | Before taking this unit you must take CM10139 |
Aims & Learning Objectives: Aims: To introduce the capabilities of different kinds of machines, to explore the relationship between Turing machines and algorithms, and to explore the limitations of Turing computability. To introduce the Lambda calculus. Objectives: Students should appreciate the limitations of finite-state machines, and the availability of different possible standard formalisations of Turing machines. Students should understand what can and cannot be computed using Turing machines, and the relationship between Turing machines and algorithms. In the lambda calculus, students should be able to find normal forms, when these exist, using alpha and beta reduction. Content: Languages and regular expressions. The basic properties of finite-state machines. Nondeterministic finite-state machines. What can and cannot be computed using finite-state machines.Turing Machines. Connecting standard Turing Machines together Grammars, languages and the Chomsky classification. Introduction to Church's Thesis. Universal Turing Machines and limitations of Turing computability. Undecidability, the Halting Problem, reduction of one unsolvable problem to another. Lambda calculus. Alpha and Beta reduction. Confluence. Church-Rosser Theorem. |
CM10134: Programming 1 |
Credits: 12 |
Level: Certificate |
Semester: 1 |
Assessment: CW40EX60 |
Requisites: | In taking this unit you cannot take CM10140 |
Students who undertake this unit should normally
have at least 3 A-level passes, (or equivalent) including Mathematics, at
grades A,B,B or above Aims & Learning Objectives: Aims: To introduce students to the development of computer software, including problem analysis, establishing requirements, designing, implementing and evaluating. To provide practical skills at reading and writing programs and producing programs to solve real world problems. Objectives: Students should be able to design, construct and test short programs. They should be able to defend design decisions. To understand the idea of type and to use data types appropriately. To be able to develop iterative and recursive programs. To be able to read, and comprehend the behaviour of programs written by others. To be able to assess the complexity of simple algorithms. Content: Introduction to computers and programming. Introduction to system development: problem analysis requirements synthesis; system design; evaluation. Scenario based design. Algorithms. Control structures: sequence, selection and iteration. Scope and extent. Simple data types. Testing. Object-orientation: reuse inheritance classes, objects and methods. Recursion. Complexity. |
CM10135: Programming II |
Credits: 12 |
Level: Certificate |
Semester: 2 |
Assessment: CW60EX40 |
Requisites: | Before taking this unit you must take CM10134, and you cannot take CM10140 |
Aims & Learning Objectives: Aims: To continue the practice of the programming process begun in Programming I. To extend the notion of object-oriented software development. To increase practical skills at reading and writing programs and producing programs to solve real world problems. Objectives: Students should be able to design, construct and evaluate substantial programs, using libraries as appropriate. They should be able to read, and comprehend the behaviour of, programs written by others. Given a problem description, they should be able to design suitable software systems. Content: Task based design. User interface design. Evaluation. Data structures. Algorithms and complexity. Exception handling. Abstract data types and classes. Inheritance vs composition. Abstract vs concrete classes. Self-referential classes. Event handling. Graphics. Multithreading. Network programming. |
CM10136: Software Engineering I |
Credits: 6 |
Level: Certificate |
Semester: 1 |
Assessment: CW25EX75 |
Requisites: |
Students who undertake this unit should normally
have at least 3 A-level passes, (or equivalent) including Mathematics, at
grades A,B,B or above Aims & Learning Objectives: Aims: To give the students an introductory understanding of requirements analysis, design modelling and specification, evaluation and testing. To raise students awareness of usability and human factors along with software engineering methods. Objectives: The students should be able to carry out analysis of domain, user, task and software requirements using a taught method of analysis. They should be able to produce specifications of designs and to set evaluation and test criteria with the ability to use simple forms of evaluation and testing. Content: Software design process models, task analysis, requirements analysis, domain analysis. Domain modelling, task modelling, conceptual design model, prototyping. Empirical evaluation methods, and simple analytical evaluation and performance testing methods. |
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 & Learning Objectives: Aims: To give the students an understanding and practical knowledge of software engineering and human factors approaches to analysis, design and evaluation of software systems. To develop an approach to software design and development focussed upon analytical, and predictive modelling of domains, tasks, users and software. To introduce appropriate forms of abstraction for representing and reasoning about design issues. Objectives: To enable students to analyse design problems choosing between analytical approaches. To construct abstract models using appropriate formal and informal languages. To select and use correctly appropriate forms of evaluation criteria and methods. To use appropriate forms of design and prototyping approaches. Content: Analytical methods for gathering user, task, domain and software requirements, including participatory and traditional approaches. Formal and informal modelling languages, including process and object oriented approaches. Descriptive, predictive and prescriptive models. Experimental methods and formal methods of testing. Prototyping and redesign including paper and runnable forms. |
CM10138: Systems II: low-level 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 equivalent Aims & Learning Objectives: Aims: To provide practical skills in low-level programming and basic computer services Objectives: Students should be able to write short assembler-level programs, and call basic Unix services using C. They should be able to identify, use and package operating services. They should be able to write short programs in ANSI C. Content: Assembler Programming: low level programming and structures. Registers, memory and addressing modes. Subroutine structures, calling standards. Interrupts and system calls. C Programming: C programming structures. String handling in C. Input and output (both chapter 2 and chapter 3). Questioning the operating system and filing system. Binary structures, relocation concepts. |
CM10139: Computation I: numbers & structures |
Credits: 6 |
Level: Certificate |
Semester: 1 |
Assessment: CW25EX75 |
Requisites: |
Students who undertake this unit should normally
have at least 3 A-level passes, (or equivalent) including Mathematics, at
grades A,B,B or above Aims & Learning Objectives: Aims: To introduce logic and set theory, as used in computer science, and to give elementary explanations of the classical computational structures, such as the integers and the real numbers, and to indicate some of the applications. Objectives: Students should be able to understand and use the language of mathematics. Students should be able to write simple proofs, using, for example, induction. Content: Natural numbers, integers, rationals, reals, complex numbers. Set theoretic language. Relations, functions, predicates, equivalence relations. Standard logical operators, including quantifiers. Connection with Data base techniques. Proof. Induction. Binomial coefficients. Partially ordered sets. Well ordered sets. Induction and recursion in general. Proof of termination of algorithms, using well ordering. Modular arithmetic. Connection with cryptography. Iterative solutions of equations by Newton's method. Convergence. Connection with fractals. Arithmetic of polynomials and matrices. Concept of a ring. |
CM10140: Introduction to programming in Java |
Credits: 6 |
Level: Certificate |
Semester: 2 |
Assessment: CW50EX50 |
Requisites: | In taking this unit you cannot take CM10135 or take CM10134 |
Students who undertake this unit should normally
have A-level mathematics, or equivalent, at grade B or above Aims & Learning Objectives: Aims: To introduce object orientated programming in Java Objectives: To be able to write programs which solve simple problems of the sort which may occur in scientific applications. To understand the basic concepts of object oriented programming Content: Basic programming concepts. How Java works. Operators and control. Procedural use of Java. Arrays, references. Data types. Object orientation. Methods, objects, classes constructors, inheritance. Standard libraries. Scientific applications. Graphics and numerical libraries. Vectors and Matrices. Numerical computation. Some famous algorithms, such as, for example, Newton's method for finding solutions of an equation. |
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 & Learning Objectives: Aims: To provide an introduction to underlying mathematical techniques for capturing, synthesizing and displaying images on a computer. Objectives: Students should know how digital cameras and digital display technologies work. They should understand the effects of sampling and should be able to conceive of an image in several different ways. They should be able to synthesise a simple animation using simple two-dimensional objects. Content: Capture and display technologies. Homogeneous coordinates and projective geometries. Fourier analysis, convolution, and linear filtering; removing noise. Modelling two-dimensional primitives using functions and polylines. Animations using affine transforms. Simple vector analysis in three-dimensions. |
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 |
Aims & Learning Objectives: Aims: To give the student an understanding of formal logic. To illustrate how these ideas are implemented or partly implemented in logic programming. To introduce semantics of programming languages and domain theory. Objectives: Students should be able to use semantic tableaux and the sequent calculus for proof in the predicate calculus. They should understand the Gvdel completeness theorem. Students should be able to write and to understand the behaviour of programs in a logic programming language, such as Prolog . They should have a basic understanding of semantics. Content: Formal grammar and languages, term algebras, unification. Predicate calculus, first order languages, translating from informal to formal language, logical validity, conjunctive normal form, disjunctive normal form, prenex normal form, Skolem form, clausal form. Semantic tableaux, sequent calculus, Gvdel completeness theorem. Logic programming. Introduction to Scott domains and denotational semantics. |
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 |
Aims & Learning Objectives: Aims: To gain experience of working with other people and, on a small-scale, some of the problems that arise in the development of software. Objectives: To be able to carry out the full cycle of the first phase of development of a software package, namely; requirements analysis, design, implementation, documentation, testing, and delivery. To know the main terms of the Data Protection Act and be able to explain its application in a variety of contexts. To be able to design a presentation for a given audience. To be able to assess a presentation critically. Content: Project Management: Practice of software engineering techniques, Controlling software development, Project planning/ Management, Documentation, Design, Quality Assurance,Testing. Professional Issues: Professional responsibilities: codes of professional practice, Chartered Engineers. Legal responsibilities: Data Protection Act, Computer Misuse Act, Consumer Protection Act. Intellectual property rights. Contracts. Presentation Skills: Practice in constructing explanations and presentations. |
CM20028: Computation IV: Algorithms |
Credits: 6 |
Level: Intermediate |
Semester: 2 |
Assessment: CW25EX75 |
Requisites: | Before taking this unit you must take CM10139 or (take ME10138 and take ME10139) |
Aims & Learning Objectives: Aims: To present a detailed account of some fundamentally important and widely used algorithms. To induce an appreciation of the design and implementation of a selection of algorithms. Objectives: To learn the general principles of effective algorithms design and analysis on some famous examples, which are used as fundamental subroutines in major computational procedures. To be able to apply these principles in the development of algorithms and make an informed choice between basic subroutines and data structures. Content: Algorithms and complexity. Main principles of effective algorithms design: recursion, divide-and-conquer, dynamic programming. Sorting and order statistics. Strassen's algorithm for matrix multiplication and solving systems of linear equations. Arithmetic operations over integers and polynomials (including Karatsuba's algorithm), Fast Fourier Transform method. Greedy algorithms. Basic graph algorithms: minimum spanning trees, shortest paths, network flows. Number-theoretic algorithms: integer factorization, primality testing, the RSA public key cryptosystem. Complexity classes P and NP. NP completeness. |
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 |
Co or Pre CM10020. Aims & Learning Objectives: Aims: To give an introduction to the processes involved in compilation and the use of compiler generation tools and compiler support. Objectives: To know the phases of the compilation process and how to implement them. To be able to choose between different techniques and different representations, depending on the problem to be solved. Content: Formal grammars, lexical analysis using lex, parsing by recursive descent and by yacc, error handling in the parsing process, intermediate code representations, type checking, simple code generation. The interface to the operating system. Design of run-time systems and issues in storage management, including garbage collection. |
CM20105: Industrial placement |
Credits: 60 |
Level: Intermediate |
Academic Year |
Assessment: |
Requisites: |
No Description Available |
CM20106: Study year abroad (BSc) |
Credits: 60 |
Level: Intermediate |
Academic Year |
Assessment: |
Requisites: |
No description available |
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 |
Aims & Learning Objectives: Aims: To give the students knowledge, understanding and experience of designing, constructing and evaluating user interfaces. To introduce principles, methods and tools for user interface design. To focus upon user interaction. Objectives: The students should be able to program user input, application output, and user interface input/output event handling. Dialogue design. To design user interfaces to optimise usability and efficiency for the users' tasks. To be aware of relevant principles, guidelines and tools to support user interface design. Content: User interface display guides. Principles of user interface design, user interface management systems, user interface tool-sets, Java user interface programming, event handling, special features such as "help" and "undo". Analysis of usability of user interface designs. |
CM20144: Applications I: mathematics for applications |
Credits: 6 |
Level: Intermediate |
Semester: 1 |
Assessment: CW25EX75 |
Requisites: | Before taking this unit you must take CM10139 |
Aims & Learning Objectives: Aims: To introduce the linear algebra, and analysis which is needed in applications. Objectives: To demonstrate an understanding of some basic mathematical concepts and techniques which are needed in applications such as Graphics, Computer Vision, Computer Music. Content: Linear transformations, matrices and determinants, complexity of basic manipulations, vector operations and Euclidean geometry, eigenvalues and eigenvectors, bases, linear dependence and independence; complex numbers, sine and cosine and exponential functions, power series, limits, convergence, Fourier series; transforms. Discussion of applications. |
CM20145: Applications II: databases |
Credits: 6 |
Level: Intermediate |
Semester: 1 |
Assessment: CW25EX75 |
Requisites: |
Aims & Learning Objectives: Aims: To introduce students to database concepts. To provide practical skills at using database management systems, designing, using and managing databases. To teach database theories. Objectives: Given a description of user requirements, students should be able to design and build a database using a database management system. They should be able to answer non-trivial queries using databases produced by others. They should understand relational database theory and be aware of alternative models for databases. They should understand the mportance of data protection and be able to implement secure databases. Content: Introduction to databases and database management systems (DBMSs). User interaction with databases. Functions of a DBMS. Data models and conceptual modelling. Sets and relations. Union, intersection, relative complement, cross product, projection, selection. Relations as subsets of cross products. Connection between logical operations on ideas and set theoretic operations on relations. Logical database design, physical database design. Entity-relationship modelling. Constraints. Network and relational models. Completeness of relational models. Codd's classification of canonical forms. : first, second, third and fourth normal forms. Keys, join, SQL query language. Transaction management and database security. Data protection legislation. |
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 Aims & Learning Objectives: Aims: To illustrate how the logical and semantic foundations of programming languages are translated into usable programming languages. To give students practical experience of using a functional programming language. Objectives: Students should be able to use the notion of reduction in the lambda calculus. They should be able to explain how the lambda calculus provides a foundation for the functional family of programming languages. They should be able to demonstrate practical competence with the Lisp family of languages, typed functional languages and lazy functional languages, and they should be able to explain the key features of such languages. Content: From lambda calculus to Lisp and functional programming. The Church-Rosser theorem and applicative versus normal order evaluation. Typed lambda calculus and type inference. Combinatory logic and lazy functional languages. Programming in a functional style. |
CM20168: Programming IV: programming languages |
Credits: 6 |
Level: Intermediate |
Semester: 2 |
Assessment: CW25EX75 |
Requisites: | Before taking this unit you must take CM20167 |
Aims & Learning Objectives: Aims: To create an appreciation of the history of programming and programming languages, in order to provide perspective on current developments. To explore the relationship between computing as a discipline and the computing industry. To examine programming languages from a linguistic viewpoint. To examine current developments in programming languages. To provide the experience of giving a formal presentation. Objectives: The students should be able to demonstrate a basic knowledge of the early history of programming and the key programming languages that have affected the development of computing. They should know one of the standard ways in which programming languages are divided into families, and be able to argue for a particular categorization of a new language by its characteristics. They should be able to give an account of the evolution of the computing industry and to extrapolate current trends in the industry, while realising the weakness of extrapolation. They should also be able to discuss current developments in programming language research. Content: The pre-history (Pascal, Babbage, Turing, etc.) 1940s and 1950s: the birth of an industry and a subject. The four classical language families. Examples of languages such as Lisp, C++, Fortran, Cobol, Snobol, Icon, Apl, Perl, Fortran 90. Examination in detail of several new programming languages to understand where they fit in the families and what they offer that is new. Exploration of several advanced topics in programming languages chosen from current research activities. |
CM30070: Computer algebra |
Credits: 6 |
Level: Honours |
Semester: 1 |
Assessment: EX75CW25 |
Requisites: |
Students must have A-level Mathematics, normally
Grade B or better, or equivalent, in order to undertake this unit. Aims & Learning Objectives: Aims: To show how compute algebra can be used to solve some interesting mathematical problems Objectives: To understand the practical possibilities and limitations of symbolic computation, and to see how it is related to numerical computation. Content: Introduction to Reduce. Data representation questions. Normal and canonical forms. Polynomials, algebraic numbers, elementary numbers. Polynomial algebra: GCD and factorization algorithms, modular methods. LLL algorithm. Numerical and symbolic methods for solving systems of nonlinear equations: Newton, Wu's method Gr~o:~bner bases. Introduction to integration. |
CM30071: Application of logic |
Credits: 6 |
Level: Honours |
Semester: 2 |
Assessment: EX75CW25 |
Requisites: | Before taking this unit you must take CM20019 |
Aims & Learning Objectives: Aims: To explore the world of knowledge representation and knowledge manipulation. To gain an overview of ways of approaching problems that may be incompletely or inaccurately defined. To gain experience of different kinds of logics. Objectives: Students completing this course will have written some programs that represent and manipulate knowledge. They will appreciate the problems that are unique to this subject, and will have an overview of the techniques that are available to tackle them. Content: LISP Programming. Knowledge Representation: Predicates, semantic networks, slots and frames, objects. The Problems of Natural Language: top down, bottom up parsing,augmented transition networks. Searching: Breadth and depth first, backtracking, goal searching, alpha-beta pruning and games, GPS. Deduction: Predicate calculus, forward chaining and unification, backward chaining, non-monotonic reasoning, resolution. Reasoning under uncertainty: abduction, causality and evidence, problem solving, binary and Bayesian deduction. Production Systems and Toolkits. |
CM30072: Safety-critical computer systems |
Credits: 6 |
Level: Honours |
Semester: 1 |
Assessment: EX100 |
Requisites: |
Aims & Learning Objectives: Aims: To give an appreciation of the current state of safe systems development. To develop an understanding of risk in systems. To give a foundation in hazard analysis models and techniques. To show how safety principles may be built into all stages of the software development process. Objectives: At the end of this course a student should be able to demonstrate the following skills: An understanding of the nature of risk in developing computer-based systems. The ability to choose and apply appropriate hazard analysis models for simple safety-related problems. An understanding of how to approach the design of safety-critical software systems. Content: The nature of risk: computers and risk; how accidents happen; human error. System safety: historical approaches to system safety; basic concepts and terminology. Managing the development of safety-critical systems. Modelling human error and the accident process. Hazard analysis: basic principles; models and techniques. Safety principles in the software lifecycle: hazard analysis as part of requirements analysis; designing for safety; designing the human-machine interface; verification of safety in computer systems. |
CM30073: Advanced algorithms & complexity |
Credits: 6 |
Level: Honours |
Semester: 2 |
Assessment: EX100 |
Requisites: | Before taking this unit you must take CM20028 |
Aims & Learning Objectives: Aims: To present a detailed introduction to one of the central concepts of combinatorial algorithmics: NP-completeness; to extend this concept to real numbers computations; to study foundations of a more general problem of proving lower complexity bounds. Objectives: to be able to recognise NP-hard problems and prove the appropriate reductions. To cope with NP-complete problems. To know some fundamental methods of proving lower complexity bounds. Content: NP-completeness: Deterministic and Nondeterministic Turing Machines; class NP; versions of reducibility; NP- hard and NP-complete problems. Proof of NP-completeness of satisfiability problem for Boolean formulae. Other NP-complete problems: clique, vertex cover, travelling salesman, subgraph isomorphism, etc. Polynomial-time approximation algorithms for travelling salesman and some other NP-complete graph problems. Real Numbers Turing machines: Definitions; completeness of real roots existence problem for 4-degree polynomials. Lower complexity bounds: 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 & Learning Objectives: Aims: The primary aims are to understand the ways of representing, rendering and displaying pictures of three-dimensional objects (in particular). In order to achieve this it will be necessary to understand the underlying mathematics and computer techniques. Objectives: Students will be able to distinguish modelling from rendering. They will be able to describe the relevant components of Euclidean and projective geometry and their relationships to matrix algebra formulations. Students will know the difference between solid- and surface-modelling and be able to describe typical computer representations of each. Rendering for raster displays will be explainable in detail, including lighting models and a variety of visual effects and defects. Students will be expected to describe the sampling problem and solutions for both static and moving pictures. Content: Euclidean and projective geometry transformations. Modelling: Mesh models and their representation. Constructive solid geometry and its representation. Specialised models. Rendering: Raster images; illumination models; meshes and hidden surface removal; scan-line rendering. CSG: ray-casting; visual effects and defects. Rendering for animation. Ordered dither; resolution; aliasing; colour. |
CM30076: Project preparation |
Credits: 6 |
Level: Honours |
Semester: 1 |
Assessment: OT100 |
Requisites: |
The assessment for this unit is included in post
requisite CM30082. Aims & Learning Objectives: Aims: To develop skills in planning, performing and writing reports on computing projects. Objectives: To demonstrate skills in the above aims by completing the project plan, the literature review, defining the structure of the report and completing the initial studies. Content: Effective and ineffective written communication. Project planning. Proposal writing. How to carry out a literature survey. Resource assessment and management. Report planning and writing. |
CM30078: Networking |
Credits: 6 |
Level: Honours |
Semester: 2 |
Assessment: EX100 |
Requisites: | Before taking this unit you must take CM10138 |
Aims & Learning Objectives: Aims: To understand the Internet, and associated background and theory, to a level sufficient for a competent domain manager. Objectives: Students should be able to explain the acronyms and concepts of the Internet and how they relate. Students should be able to state the steps required to connect a domain to the Internet, and be able to explain the issues involved to both technical and non-technical audiences. Students should be able to discuss the ethical issues involved, and have an "intelligent layman's" grasp of the legal issues and uncertainties. Students should be aware of the fundamental security issues, and should be able to advise on the configuration issues surrounding a firewall. Content: The ISO 7-layer model. The Internet: its history and evolution - predictions for the future. The TCP/IP stack: IP, ICMP, TCP, UDP, DNS, XDR, NFS and SMTP. Berkeley Introduction to packet layout: source routing etc. The CONS/CLNS debate theory versus practice. Various link levels: SLIP, 802.5 and Ethernet, satellites, the "fat pipe", ATM. Performance issues: bandwidth, MSS and RTT; caching at various layers. Who 'owns' the Internet and who 'manages' it: RFCs, service providers, domain managers, IANA, UKERNA, commercial British activities. Routing protocols and default routers. HTML and electronic publishing. Legal and ethical issues: slander/libel, copyright, pornography, publishing versus carrying. Security and firewalls: Kerberos. |
CM30080: Computer vision |
Credits: 6 |
Level: Honours |
Semester: 2 |
Assessment: EX100 |
Requisites: |
Aims & Learning Objectives: Aims: To present a broad account of computer vision, with the emphasis on the image processing required for its low level stages. Objectives: To induce an appreciation of the processes involved in robotic vision and how this differs from human vision. Content: Image formation. Colour versus monochrome. Preprocessing of the image. Edge finding: elementary methods and their shortcomings; more sophisticated methods such as those of Marr-Hildreth, Canny, and Prager. Optical flow. Hough transform. Global and local region segmentation techniques: histogram techniques, region growing. Representation of the results of low level processing. Some image interpretation methods employing probability arguments and fuzzy logic. Hardware. Practical problems based on an image processing package. |
CM30082: Double module project |
Credits: 12 |
Level: Honours |
Semester: 2 |
Assessment: OT100 |
Requisites: |
Aims & Learning Objectives: Aims: To satisfy as many of the objectives as possible as set out in the individual project proposal. Objectives: To produce the deliverables identified in the individual project proposal. Content: Defined in the individual project proposal. |
CM30141: Advanced human computer interaction |
Credits: 6 |
Level: Honours |
Semester: 2 |
Assessment: CW25EX75 |
Requisites: |
Some knowledge of programming, as approved by the
Director of Studies Aims & Learning Objectives: Aims: To give students an advanced level understanding of current research issues in human computer interaction. To focus upon HCI research methods, HCI theory covering topics of user interface design, evaluation and modelling. Application areas such as safety and dependable systems, collaborative systems, virtual environments and agent interaction are examples of current application topics. Issues of HCI in mobile and embedded contexts. Objectives: The students should obtain an in-depth understanding of HCI theory and methods in state of the art research. Particular focus will be placed on the interdisciplinary nature of HCI and on the relationship between theory, and design practice. The students should be able to contribute to both HCI theory and HCI practice as a result. Content: Psychological theories of human behavior, contextual analysis, frameworks for HCI, model based design. Topics in agent-agent and human-agent interaction. Modelling collaborations, group work and domains of high safety or dependency requirements. HCI and creativity. Evolutionary theories of design. The role of formal methods in HCI. Advanced forms of interaction technologies. |
CM30142: Music & digital signal processing |
Credits: 6 |
Level: Honours |
Semester: 1 |
Assessment: EX100 |
Requisites: |
Some knowledge of programming; complex numbers;
some knowledge of sine/cosine functions, integration and elementary calculus,
as approved by the Director of Studies Aims & Learning Objectives: Aims: To introduce the basic ideas of DSP programming and the ways in which musical signals can be treated as data. Objectives: Students should be able to code simple digital filters, and construct simple oscillators. They will be able to control a frequency domain analysis and resynthesis, and use 3 synthesis methods. Content: Introduction: Musical signals: their nature, chacterisation and representation. Pitch, amplitude and timbre. PCM representation: sampling and quantisation errors. MIDI representation and its limitations. Software Systems: Music5 family,: Csound. Additive Synthesis: Simple oscillators and their coding; wavetable synthesis. Helmholz theory and Fourier analysis. Subtractive Synthesis: Noise, and digital filters. Filter types, IIR and FIR. Issues in filter design. Psycho-acoustics: Basic ideas and Shepard tones as an example. Lossy compression. MPEG level 2 and MPEG-4. Time and frequency domains: Phase vocoding. FFT and IFFT; analysis and resynthesis. Pitch changing. Physical Models: The wave equation. Delay lines and wave guides. The plucked string. FM and non-linear synthesis: Analysis and coding of FM. Introduction to Granular Synthesis, formants and FOF. Pitch changing. Spacialisation: Stereo panning, reverberation, localisation and audio clues. Composition: Process based, algorithmic composition. Pitch and Tuning: ET and Just; introduction to Sethares theory of consonance. |
CM30171: Advanced compilers |
Credits: 6 |
Level: Honours |
Semester: 1 |
Assessment: EX75CW25 |
Requisites: | Before taking this unit you must take CM20029 |
Aims & Learning Objectives: Aims: To acquire an appreciation of the suitability of different techniques for the analysis and representations for programming languages, followed by the various means to interpret them. To demonstrate the impact that computer architecture is having on compiler design. To explore trends in hardware development, and examine techniques for efficient use of machine resources. Objectives: 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. Students should be able to describe the philosophy of RISC and CISC architectures. They should know at least one technique for register allocation, and one technique for instruction scheduling. They should be able to write a simple code generator. Content: Construction of lexical analysers, recursive descent parsing, construction of LR parser tables, type checking, polymorphic type synthesis, continuation passing style, combinators, lambda lifting, super-combinators, abstract interpretation, storage management, byte-code interpreters, code-threaded interpreters, partial evaluation, staging transformations.Description of several state-of-the-art chip designs. The implications for compilers of RISC architectures. Register allocation algorithms (colouring, DAGS, scheduling). Global data-flow analysis. Pipelines and instruction scheduling; delayed branches and loads. Multiple instruction issue. VLIW and the Bulldog compiler. Harvard architecture and Caches. Benchmarking. |
CM30174: E-commerce & agents |
Credits: 6 |
Level: Honours |
Semester: 1 |
Assessment: EX50CW50 |
Requisites: | Before taking this unit you must take CM10134 and take CM10135 |
Aims & Learning Objectives: Aims: To introduce students to the principles of agents, agency, institutions and agent software development Objectives: Students will know the factors that differentiate agents from other software systems and be able to classify agents according to their competencies. Students will be able to describe and contrast different agent architectures, platforms and approaches to agent development. Students will be able to develop simpleagent-based software systems. Content: Agent architectures, agent platforms (Jade, FIPA-OS, LEAP), standards (FIPA), communication and content languages (FIPA-ACL, KQML), agent-oriented software engineering, virtual enterprise formation, institutions and norms, auctions, B2C, B2B, case studies of practical applications. |
CM50109: Formal methods & programming |
Credits: 12 |
Level: Masters |
Semester: 1 |
Assessment: CW100 |
Requisites: |
Aims & Learning Objectives: 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 object-oriented programming language; (c) to develop an appreciation of the use of formal methods in software development, and to develop skills in simple specification and verification techniques. Objectives: By the end of this course a student should have the ability to: (a) use design techniques such as modularisation and object-oriented design to develop software solutions to given problems; (b) design, implement, test and document simple programs using both a modular programming language and an object-oriented programming language; (c) use simple formal methods for specification and verification. 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. Abstraction-based 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 object-oriented language. Introducing object-oriented 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: Human-computer interaction & virtual reality |
Credits: 6 |
Level: Masters |
Semester: 1 |
Assessment: EX75CW25 |
Requisites: |
Aims & Learning Objectives: Aims: to engender a sensitivity towards the need to take into account human cognitive and behavioural performance when designing interactive computer systems; to show why so-called user friendliness may be essential if computers are to be fully and reliably exploited. Introduction to virtual reality and how such technology is constructed; to enable the student to acquire a critical appreciation of the impact of virtual reality systems. Objectives: Students should have: a clear understanding of relevant human factors that can influence the deployment and utilisation of computer technology; be able to make critical evaluations of human-computer interface designs; be capable of applying good practice to simple interactive computer design problems and know how to avoid at least some of the main pitfalls of bad design; have an appreciation of hoe virtual reality systems are constructed; have an understanding of the current state and possible future directions of virtual reality. Content: Human-Computer interaction: Human sensory systems and cognition; computer systems and input/output capabilities; differences between human and computer systems; problems of interfacing between human and computer systems; general ergonomics. Design principles for interactive computer systems: usability; aspects of the design process. Some current issues. Virtual Reality: Description of what virtual reality (also augmented reality) is. Motivations for the development of virtual reality. Principal components required in building virtual reality systems. Possible uses for virtual reality. |
CM50114: Multimedia |
Credits: 6 |
Level: Masters |
Semester: 2 |
Assessment: EX75CW25 |
Requisites: |
Aims & Learning Objectives: Aims: the course aims to make students aware of the underlying technology and the methods of creating and organising mulitmedia systems, with a particular emphasis on CD-ROM and hypertext. Objectives: Students will be able to discuss hypermedia as a background to multimedia. They will understand a variety of CD-ROM formats, the encoding techniques needed for various source media and the consequences of each. They will be familiar with authoring tool concepts and will be aware of the basic legal consequences of publishing. Students should understand what makes a well-organised multimedia presentation. Content: Hypertext and hypermedia: formats and mechanisms; static and dynamic media. CD-ROM technology: multimedia formats (including also audio CD and Photo CD); sound representation; video and video compression; writable CD; interaction. Multimedia system design: authoring software, requirements and a practical example; legal considerations; organising material for the user. |
CM50121: Safety critical systems |
Credits: 6 |
Level: Masters |
Semester: 1 |
Assessment: EX75CW25 |
Requisites: |
This unit shares lectures and tutorials with CM30072.
Aims & Learning Objectives: Aims: To give an appreciation of the current state of safe systems development. To develop an understanding of risk in systems. To give a foundation in hazard analysis models and techniques. To show how safety principles may be built into all stages of the software development process. Objectives: At the end of this course a student should be able to demonstrate the following skills: An understanding of the nature of risk in developing computer-based systems. The ability to choose and apply appropriate hazard analysis models for simple safety-related problems. An understanding of how to approach the design of safety-critical software systems. Content: The nature of risk: computers and risk; how accidents happen; human error. System safety: historical approaches to system safety; basic concepts and terminology. Managing the development of safety-critical systems. Modelling human error and the accident process. Hazard analysis: basic principles; models and techniques. Safety principles in the software lifecycle: hazard analysis as part of requirements analysis; designing for safety; designing the human-machine interface; verification of safety in computer systems. |
CM50122: Projects and their management |
Credits: 6 |
Level: Masters |
Semester: 2 |
Assessment: CW100 |
Requisites: |
Before taking this unit you must take CM50109 |
Aims & Learning Objectives: Aims: Aims: To gain experience of working with other people and, on a small-scale, some of the problems that arise in the development of software. Objectives: To carry out the full cycle of the first phase of development of a software package, namely; requirements analysis, design, implementation, documentation, testing and delivery. To know the main terms of the Data Protection Act and be able to explain its application in a variety of contexts. Content: Project Management: Practice of software engineering techniques, Controlling software development, Project planning/ Management, 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 (but not tutorials) with
CM30078. Aims & Learning Objectives: Aims: To understand the Internet, and associated background and theory, to a level sufficient for a competent domain manager. Objectives: Students should be able to explain the acronyms and concepts of the Internet and how they relate. Students should be able to state the steps required to connect a domain to the Internet, and be able to explain the issues involved to both technical and non-technical audiences. Students should be able to discuss the ethical issues involved, and have an "intelligent layman's" grasp of the legal issues and uncertainties. Students should be aware of the fundamental security issues, and should be able to advise on the configuration issues surrounding a firewall. Content: The ISO 7-layer model. The Internet: its history and evolution - predictions for the future. The TCP/IP stack: IP, ICMP, TCP, UDP, DNS, XDR, NFS and SMTP. Berkeley Introduction to packet layout: source routing etc. The CONS/CLNS debate: theory versus practice. Various link levels: SLIP, 802.5 and Ethernet, satellites, the "fat pipe", ATM. Performance issues: bandwidth, MSS and RTT; caching at various layers. Who 'owns' the Internet and who 'manages' it: RFCs, service providers, domain managers, IANA, UKERNA, commercial British activities. Routing protocols and default routers. HTML and electronic publishing. Legal and ethical issues: slander/libel, copyright, pornography, publishing versus carrying. Security and firewalls: Kerberos. |
CM50147: Programming |
Credits: 6 |
Level: Masters |
Semester: 1 |
Assessment: EX50CW50 |
Requisites: |
Aims & Learning Objectives: Aims: To introduce students to the development of computer software, including analysis, establishing requirements, designing, implementing and evaluating. To provide practical skills in reading and writing programs and producing programs to solve real world problems. Objectives: Students should be able to design, construct and test short programs. They should be able to defend design decisions. To understand the idea of type and to use data types appropriately. To be able to develop iterative and recursive programs. To be able to comprehend the behaviour of programs written by others. To be able to assess the complexity of simple algorithms. Content: Introduction to computers and programming. Introduction to systems development; problem analysis, requirements synthesis, system design, evaluation. Scenario based design. Algorithms, control structures; sequence selection, iteration and recursion. Scope, complexity and extent. Simple data types, and testing. Object-orientation, reuse, inheritance, classes, objects, methods. Core Reading; Single Text Course. D Arnow & G Weiss Introduction to Programming Using Java; an object-oriented approach Addison Wesley 1998. |
CM50148: Usability design & evaluation |
Credits: 6 |
Level: Masters |
Semester: 1 |
Assessment: EX50ES50 |
Requisites: |
Aims & Learning Objectives: Aims. To give the students an introductory understanding of requirements, design, and evaluation. To raise students awareness of usability and human factors. To give students a grounding in different evaluation approaches. Objectives: The students should be able to carry out analysis of domains, user, and task requirements, using a method of analysis. They should be able to undertake different evaluations. Content: Task analysis, requirements analysis. Analytical and empirical evaluation of usability of user interface for supporting user tasks. Evaluation methods: general categories of empirical and analytical methods. Analytical: discount usability approaches and task analytic approaches. Empirical: experimental and observational (concurrent protocols and retrospective protocols). Core Reading; Largely from journal papers in the Journal of Human Computer Interaction and the International Journal of Human Computer Studies. J Nielsen Usability Engineering, Addison Wesley 1997 T Winograd & P Adler Usability; turning technologies into tools Oxford 1992 T Winograd Bringing Design to Software, Addison Wesley 1996. |
CM50149: Collaborative virtual environments |
Credits: 6 |
Level: Masters |
Semester: 2 |
Assessment: EX50ES50 |
Requisites: |
Before taking this unit you must take CM50147 |
Aims & Learning Objectives: Aims; To give students an advanced understanding of current research issues in human computer interaction. To focus upon human computer interaction research methods, and theory, covering topics in user interface design, evaluation and modelling. Applications areas such as safety and dependable systems, collaborative systems, virtual environments, and agent interaction are examples of current application topics. Issues of human computer and human-human interaction in mobile settings and using embedded devices. Objectives: The students should learn how to program user input, application output, and user interface input/output event handling. Dialogue design. To design user interfaces to optimise usability and efficiency for the users' tasks. T o be aware of relevant principles, guidelines and tools to support user interface design. Content: Computer-supported collaborative work - nature of collaboration. How collaboration is supported; successful and unsuccessful models and systems. How to model group work. Technological forms of virtual working environments - 'white boards', 'rooms'. Web- based versions of virtual environments. Immersive and non-immersive environments. Mobile and wearable environments. Core reading: T K Capin, I S Pandzic & N Magnenat-Thalmann (eds) Avatars in Networked Virtual Environments Wiley, 1999 C Greenhalgh Large-scale Collaborative Virtual Environments Springer Verlag 1999 Proceedings of ACM International Conference on Intelligent User Interfaces 1999 Proceedings of ACM Conference on Computer Supported Cooperative Work, 1999 S Wilbur & A Sellen (eds) Computer Mediated Communication, Prentice Hall 1998 |
CM50150: Design |
Credits: 6 |
Level: Masters |
Semester: 2 |
Assessment: CW100 |
Requisites: |
Before taking this unit you must take CM50147 |
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: Project (MSc) |
Credits: 30 |
Level: Masters |
Dissertation period |
Assessment: DS100 |
Requisites: |
Aims & Learning Objectives: 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. Objectives: Students should 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. They should be able to 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 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: 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 software-based, 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: OT100 |
Requisites: |
Before taking this unit you must take CM50109 and After taking this module you must take XX50053 |
Aims & Learning Objectives: Aims: To acquire the skills to undertake a research project in fundamental or applied software engineering. Objectives: Students will be able to demonstrate the ability to undertake a literature review, critically review previous work in the subject, and prepare a project proposal. 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 Objectives: Aims: To introduce fundamental principles of database design and implementation. Objectives: Students will be able to design and validate a database from a given description; implement and use a data model, in particular, the Relational Model; implement a data model using Access. Content: Database concepts; relational algebra, normalisation, and the Relational Model; data modelling; implementation of a database using Access; 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 & Learning Objectives: Aims: To ensure students appreciate the concept of an algorithm as an effective procedure, To introduce the criteria by which algorithms may be chosen, and to demonstrate how algorithms may be used in conjunction with data structures for tasks such as sorting and searching. Objectives: Students should be able to: use a variety of approaches to algorithm design, and 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. |
University home | Catalogues for 2002/03 | for UGs | for PGs |
Student Records & Examinations Office, University of Bath, Bath BA2 7AY |