Student must complete the following three units
Data Structures and Algorithms
This unit introduces students to fundamental data structures and algorithms used in computing. The material covered forms the basis for further studies in programming and software engineering in later units. The unit focuses on the ideas of data abstraction, object-oriented programming, and software reuse. Issues relating to computational complexity of algorithms are addressed throughout the session. Topics covered include: the fundamental abstract data types (lists, stacks, queues, trees, hash tables, graphs); recursion; complexity of algorithms; internal and external sorting and searching algorithms; file structures; and B trees.
Three abstract models of computation are studied in this unit. The first is the finite automaton, together with regular languages and regular expressions. The second is the pushdown automaton, together with the associated languages and grammars. The third is the Turing machine. This allows study of the power of computers in general and their limitations, in particular situations: it is shown that there are problems for which there is no algorithmic solution. This unit explores the application of formal languages in the design of compilers and text processors.
This unit is concerned with the design, development and post-delivery maintenance of software systems. The unit pays special attention to requirements engineering, formal specification techniques and design methodologies. The B-method is used to produce consistent, re-usable specifications and develop code that is both efficient and correct.
And choose one of
This unit provides basic studies in the major areas of artificial intelligence: search, knowledge representation, logic programming, machine learning and knowledge based systems, agent planning and learning. The first part of this unit will focus on the foundation of artificial intelligence: search algorithms and their implementations, game playing, logics and knowledge representation, and inference in reasoning systems. The second part will cover the principles of knowledge based systems (intelligent systems), planning, and machine learning.
Computer graphics is a fascinating area of computer science. It is widely used as a tool for visualising information in a broad variety of fields, including science and engineering, medicine, architecture, and entertainment. This unit teaches the concepts and techniques of computer graphics. It is designed as an introduction to the study of visual presentation techniques. Topics covered are intended to provide students with an understanding of the basic principles for design, use and understanding of graphics systems. The unit covers the basic concepts in computer graphics using VOGLE library on UNIX. Techniques and algorithms will be emphasized and programming in C or C++ under UNIX will be required.
This unit is the first of two mathematics units to be completed by students enrolled in an engineering degree. It covers the following topics: Differential and integral calculus of a single variable, complex numbers, aspects of matrix algebra, bectors and some elementary statistics and probability theory.
This unit develops algebraic thought to a high level. The abstract concepts involved in the main topics (group theory and number theory) have many applications in science and technology, and the unit includes an application to cryptography.
The unit builds on the basic statistical concepts introduced in first year and also prepares students for broader application of statistics for students majoring in both science and business. In broad terms, the unit consists of some common Probability Distributions, Revision of Hypothesis Testing; Analysis of Categorical Data; Analysis of Variance Simple and Multiple Linear Regression Analysis and Correlation; Some Nonparametric Methods, Fundamentals of Time Series Analysis
Introduction to Operations Research
This unit introduces the ideas of systems and their mathematical modelling, with special reference to the allocation, inventory, scheduling, queuing and other processes taking place within social systems. It introduces modelling and heuristic problem solving techniques and goes on to introduce the standard techniques of linear programming, network analysis, critical path analysis, inventory control and simulation. Throughout, an emphasis is placed upon the mathematical development of algorithms and their computerisation.