D0: Basic Computer Science

D0 is the name given to the compulsory courses for the conversion MSc in Computer Science and the MSc in Information Technology. The basic course provides students with a solid background in the skills, techniques and principles of computer science. On the practical side, this entails developing analytical and problem solving skills; learning to produce algorithmic solutions to problems and becoming familiar with a wide range of standard programming techniques. On the theoretical side, students will gain an understanding of the principles behind good software design, understand the trade-offs and compromises that affect the design of digital computers, and learn some of the fundamental limitations of algorithms. At the same time, the course contains enough technical detail and practical background to enable students to follow the second term options and to undertake the summer project. MSc CS students take all of the courses; MSc IT students take D0a1, D0a2 and D0a3, D0x1 and D0x2.
 
Term Prerequisites Core For
1 & 2 N/A MScCS, MScIT

Taught By

Various staff (please see individual components)

Syllabus

Three broad strands run though the course:

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.

Assessment

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

Examination Rubric

D0a - answer all questions. Time allowed: 2.5 hours.
D0b - answer all questions. Time allowed: 2.5 hours.
D0c - answer all questions. Time allowed: 2.5 hours.

The use of electronic calculators is not permitted.

Reading list

See individual syllabus sheets for the various courses which make up the D0 series.