Undergraduate Teaching 2023-24

Engineering Tripos Part IIB, 4F14: Computer Systems, 2023-24

Engineering Tripos Part IIB, 4F14: Computer Systems, 2023-24

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

PDF versionPDF version

Module Leader

Prof Andrew Gee


Prof Andrew Gee and Prof Per Ola Kristensson

Timing and Structure

Lent Term. 12 lectures and 2 examples classes. 75% exam / 25% coursework. Lectures will be recorded.


Part 1 Digital Circuits and Computing, including an understanding of C++ as taught in the Mars Lander project and the Part 1B Device Programming exercise. Students will be expected to write small programs in C++.


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 (8 lectures and 2 examples classes, Prof 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 (4 lectures, Prof Per Ola Kristensson)

  • 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

Assessment at end of Lent Term [15/60]



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: 30/05/2023 15:31