Skip to main content


The syllabus for the second year of computer science in 1985-6 was:

CS2A (core)

The aim of this course is to study the applications, requirements,
design, operation and programming of large software systems.  It consists
of four sections as follows:
(a)  Files.  Characteristics of tape, disc and mass storage.  Sequential,
     random and indexed files.  Merging, direct access, hash functions.
     Criteria for file organisations, external sorting.
(b)  Programming in 'C'.
(c)  Operating systems and system management.  Batch systems, single user
     systems, multiprogramming and interactive systems.  Virtual
     addressing schemes.  Concept of a kernel and related sub-sysytems.
     Concurrent processes and resource management.  Implications for real
     time systems.
(d)  Programming languiages and compilers.  Language features.  Definition
     of languages.  General overview of compilers and interpreters.
     Symbol tables, terminal analysis, top down recursive descent.

CS2B (hardware)

The aim of the course is to give the student an understanding of:
(a)  the design process for circuits involving both combinatorial and
     sequential logic, and inluding the problem of race conditiond.
(b)  the elementary components of a digital system and how they might
     be combined.
(c)  the organisation of a computer and its peripheral devices.
(d)  the principles and techniques of digital communications as required
     in computer networking applications.
The lectures will be supplemented by laboratory sessions.

CS2C (theory)

The aim of the course is to give the student an understanding of:
(a)  the basic discrete mathematics and probability theory which is
     necessary to model problems arising in both theoretical and practical
     computer science, and to develop mathematical reasoning ability.
(b)  the nature of functional programming languages and application of
     logic programming.
(c)  funcdamental concepts of programming, especially program correctness and