Skip to main content

Unit information: Computer Architecture in 2020/21

Please note: you are viewing unit and programme information for a past academic year. Please see the current academic year for up to date information.

Unit name Computer Architecture
Unit code COMS10015
Credit points 20
Level of study C/4
Teaching block(s) Teaching Block 1 (weeks 1 - 12)
Unit director Dr. Page
Open unit status Not open




School/department Department of Computer Science
Faculty Faculty of Engineering


Using a set of fundamental techniques and technologies, the computer systems theme broadly explains how computing platforms work: it does so a) at various levels of abstraction, including both software and hardware, and by bridging between theory and practice, and b) both in isolation, and in combination, i.e., considering large, diverse, complex systems vs. individual platforms.

Forming part of said theme, this unit delivers an introduction to computer architecture: the focus is on bridging the gap between high-level programming languages and the hardware (e.g., micro-processors) on which associated programs execute. The unit content can be described as three main topics, which gradually build from lower to higher level concepts:

1. From Mathematics and Physics to digital logic:

  • Boolean algebra, integer representation and arithmetic,
  • physical design of logic components (e.g., logic gates from transistors),
  • use of combinatorial logic components (e.g., Karnaugh maps),
  • use of sequential logic components (e.g., state machines)

2. From digital logic to computer processors:

  • processor paradigms: counter, accumulator, and register machines; von Neumann vs. Harvard architecture; RISC vs. CISC,
  • memory paradigms: von Neumann bottleneck, memory hierarchy; cache memories,
  • instruction set design: instruction classes; addressing modes; instruction encoding and decoding,
  • processor design: buses; control and data paths; ALU; microcoded vs. hardwired control; fetch-decode-execute cycle.

3. From computer processors to software applications:

  • development tools: assembly language; assembly and linkage processes; debuggers,
  • support for structured programming (e.g., function calls),
  • support for operating systems (e.g., interrupts, protection).

Intended learning outcomes

On successful completion of this unit, students will be able to:

  1. Recall and apply basic fundamental principles that support the design of computer systems,
  2. Explain the design, implementation, integration, and configuration of principal components within a typical computer system, including both hardware and software and any trade-offs involved, and
  3. Demonstrate how high-level (e.g., C) programs are executed by and interact with the underlying hardware, and therefore how to use said hardware in the most effective manner.

Teaching details

Teaching will be delivered through a combination of synchronous and asynchronous sessions, including lectures, practical activities supported by drop-in sessions, problem sheets and self-directed exercises.

Assessment Details

100% January timed assessment

Reading and References

  • Tanenbaum, Andrew S. and Austin, Todd, Structured Computer Organization (Pearson, 2012) ISBN 978-0132916523
  • Patterson, David A. and Hennessy, John L., Computer Organization and Design: The Hardware/Software Interface (Morgan Kaufmann, 2011) ISBN 978-0080886138
  • Nisan, Noam and Schocken, Shimon, The Elements of Computing Systems: Building a Modern Computer from First Principles (MIT Press, 2008) 978-0262640688
  • Harris, David and Harris, Sarah, Digital Design and Computer Architecture (Morgan Kaufmann, 2012) ISBN 978-0123944245