Undergraduate Teaching 2023-24

Engineering Tripos Part IIB, 4F14: Computer Systems, 2020-21

Engineering Tripos Part IIB, 4F14: Computer Systems, 2020-21

Not logged in. More information may be available... Login via Raven / direct.

PDF versionPDF version

Module Leader

Dr AH Gee


Dr AH Gee and Dr Jason Jacques

Timing and Structure

Lent Term. 75% exam / 25% coursework


Part 1 Digital Circuits and Computing assumed


The aims of the course are to:

  • Describe the computer hardware that underlies modern information processing systems.
  • Explain how to write multithreaded software that runs on such hardware.


As specific objectives, by the end of the course students should be able to:

  • Appreciate the basic components needed to construct a computer and the different ways to interconnect these components, including the various ways of exploiting parallelism.
  • Compare the instruction sets, implementation issues and performance of CISC and RISC architectures.
  • Design efficient hardware for computer arithmetic.
  • Understand the operation of pipelined datapaths.
  • Describe memory organisation, addressing schemes and the use of caches; and their effects on performance.
  • Compare the various ways of handling input and output in a computer system.
  • Understand the concept of a memory model.
  • Understand basic concurrency concepts.
  • Design and implement thread-safe algorithms in C++.


Computer Systems (8L + 2 examples classes, Dr Andrew Gee)

  • Computer architecture, historical perspectives.
  • Instruction set architectures, RISC vs CISC.
  • ALU design, datapaths and control, pipelining.
  • Memory hierarchy, caches, virtual memory.
  • Input/output, bus organization, polling and interrupt-driven I/O, DMA.
  • Parallel processing, SIMD and MIMD architectures.

Assessment: examination (75%), candidates to attempt two questions from a choice of three

Parallel Programming (4L, Dr Jason Jacques)

  • C++11/14/17 memory model.
  • Race conditions, mutual exclusion, synchronization, starvation.
  • Thread-safe data structures.
  • C++11/14/17 threading library.

Assessment: coursework (25%)


Multithreaded programming using the C++11/14/17 memory model and threading libraries. The programming exercise is an opportunity to experience how theoretical concepts from the lectures translate into actual working code using a state-of-the-art industry standard threading library. Time required: 4-8 hours programming plus 15 minutes demonstrating and discussing your code with an assessor. Please note that coursework assessment is not anonymous.

Coursework Format

Due date

& marks

Multithreaded programming

Learning objectives:

  • To gain practical experience with the C++11/14/17 threading library.
  • To design and implement thread-safe data structures.
  • To practice concurrency control so as to avoid race conditions and starvation.


Demonstrating your software

Not anonymously marked

Software to be written during Lent Term or Easter vacation

Assessment at start of Easter Term




Please refer to the Booklist for Part IIB Courses for references to this module, this can be found on the associated Moodle course.

Examination Guidelines

Please refer to Form & conduct of the examinations.

Last modified: 01/09/2020 10:39