CS210 – Computer Systems & Architecture

Credits 20
Level 2
Prerequisites CS106 Computer Systems & Organisation or CS107 Fundamentals of Computer Systems
Availability Possible elective
Contact Lectures: 44 | Labs: 40
Assignments: 62 | Self study: 54
Assessment Assessment will be based 30% on coursework assessments (which will include problem-based learning submissions as well as programming assignments) and 70% on a two-hour examination.Given that the coursework component is the primary means of reinforcing and consolidating knowledge and understanding of the class content, exemption from the examination will be awarded to students who achieve a consistently high standard in terms of the level of engagement with their coursework and the quality of their submissions.
Resit The resit for the class will take the form of a two-hour examination. The resit examination will be designed to test all aspects of the course. The mark returned for the resit attempt will be based upon the resit examination alone.
Lecturer Kostas Liaskos | Dr Sotirios Terzis


To enable the student to develop a deeper understanding of typical computer architectures and their instruction sets and the complex tradeoffs between CPU clock speed, cache size, bus organization, number of core processors, etc., that influence their design and have a fundamental inpact on their performance.

The class will also further the student’s knowledge of the need for, and the design and implementation of, those other vital components of a modern computer, namely memory and storage hierarchies, operating systems and communication networks. The interactions between many of these components will be investigated by means of significant practical work that consolidates the lecture content in the context of: (i) (instruction set) architecture, (ii) performance evaluation, (iii) device interfacing, (iv) communications and (v) operating system capabilities. Software developed in appropriate programming languages will form the basis of much of the practical work thus enabling the student to enhance their software design and implementation skills in this domain.

Learning Outcomes

On completion of the class, a student should be able to:

  • Understand the key concepts that are likely to be included in the design of any modern computer system.
  • Understand and to evaluate the impact that programming languages, their compilers and underlying operating systems have on the design of computer systems.
  • Understand and to apply the basic metrics and techniques by which new and existing computer systems may be evaluated.
  • Apply programming techniques made possible by languages such as C to understand execution characteristics and performance issues arising therefrom.
  • Understand and to evaluate the impact that I/O devices and networks, their interconnection and underlying data operations have on the design of computer systems.
  • Display knowledge of the fundamental techniques used in operating systems and other systems software.
  • Understand threading and concurrency mechanisms.
  • Appreciate the need for memory management and to display knowledge of concepts and techniques involved in virtual memory management.
  • Appreciate the resource requirements of multimedia applications and the design, implementation, and operation of high-performance computer/communication/operating systems developed to meet these requirements.


  • Introduction: historical overview; economic trends; underlying technologies.
  • Computer Performance: the metrics of performance; popular performance metrics; comparing and summarising performance.
  • Instruction Set Design: Alternatives and Principles: classifying instruction set architectures; operations in the instruction set; type and size of operands; instruction representations.
  • Processor Implementation Techniques: processor datapath and steps of execution; hardwired control; microprogrammed control; interrupts; pipeline and superscalar implementations.
  • Memory Systems: principle of locality, principles of memory hierarchy, caches, main memory, virtual memory.
  • Input/Output: I/O performance measures, types and characteristics of I/O devices, buses: connecting I/O devices to processor and memory, interfacing I/O devices to memory, processor, and operating system.
  • Networks: ISO 7-layer reference model in general and its instantiation in TCP/IP; overview of Physical and Data Link layer concepts; Internetworking and routing; transport layer services.
  • Operating Systems: basic concepts and structure (concurrency, process and processor, system calls); virtual machines.

Indicative Reading*

* This list is indicative only – the class lecturer may recommend alternative reading material. Please do not purchase any of the reading material listed below until you have confirmed with the class lecturer that it will be used for this class.

Computer Organization and Design: The Hardware/software Interface, 4th edition, David A. Patterson and John L. Hennessy, Morgan Kaufmann, 2009

Operating Systems Concepts with Java, 8th edition, A. Silberschatz, P.B.Galvin and G. Gagne, John Wiley & Sons, 2011.