Term | Prerequisites | Core For |
1 & 2 | N/A | MScCS, MScIT |
1. COMPUTER SYSTEMS. Explains the design and operation of computer hardware and systems software. Students learn why computers are built the way they are and the effect this has on conventional high-level languages (and vice-versa). The courses are:
D0a2 - Computer Architecture. The operation of a conventional
register machine is explained and illustrated with the 68000. The aim is
to de-mystify computers. The principle components are introduced as is
a good deal of jargon.
D0b1 - Computer Hardware. A short course showing how the basic components of the computer can be built from simple electronic components.
D0a3 - Operating Systems Fundamentals. The operation of a typical general-purpose; operating system is examined. Topics include: processes; concurrency; inter-process communication; memory management; input-output mechanisms; scheduling.
D0b2 - A Very Short Compilers Course (VSCC). A small compiler for a simple language is developed to introduce the students to the basics of compiler construction. The course closes the gap between the notations used in high-level programming and the realities of computer hardware.
2. SOFTWARE ENGINEERING. These courses cover the basic techniques of software engineering: Systems analysis and design; programming notations; common data structures and programming techniques; the analysis of algorithms and the design of human-computer interfaces.
D0a1 - Introductory Programming. The basic principles of programming are introduced and illustrated using Java. The course stresses the importance of arguing (informally) about the behaviour of a program and suggests how to relate the concepts of functions; iteration and choice to common structures found in many simple programming problems. A simple graphics package is used to illustrate the main program structures and to give a rich source of examples and exercises for the practical sessions.
D0a4 - Software Engineering Fundamentals. This course consists of three components; covering (a) human-computer interaction and the design of user interfaces; (b) systems analysis and design; and (c) an introduction to software engineering principles; project management and cost estimation.
D0b3 - Algorithmics. With the basic principles of programming
covered in the first term; this second term unit covers some of the more
formal aspects of algorithms and data structures. The abstract properties
of data structures such as queues; tables and trees are presented along
with some standard algorithms for solving common problems. Techniques for
analysing the complexity of algorithms are covered before moving on to
define the limits of what can be computed though a formal model of computation.
3. SUPPORT COURSES. Two non-examinable support modules provide essential background required elsewhere in the course:
D0x1 - Use of Unix. A basic introduction to the facilities of
the Unix operating system covering: logging in; simple use of windows;
electronic mail; the text editors; files; directories; on-line manuals;
various Unix commands and the World Wide Web.
D0x2 - Mathematics. Not a mathematics course in the traditional sense; but an introduction to the various notations; manipulations and results used elsewhere in the basic course and in the options.
Weighting | No. Exam Questions | No. Courseworks |
3 equally-weighted
examinations (D0a, D0b & D0c) + practical work |
D0a has 3 questions (D0a1, D0a2, D0a3)
D0b has 3 questions (D0b1, D0b2, D0b3 complexity) D0c has 2 questions (D0a4, D0b3 algorithmics) |
Various |
The use of electronic calculators is not permitted.