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

Lecturers

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.

Prerequisites

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++.

Aims

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.

Objectives

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++.

Content

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%)

Coursework

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.

Individual

Demonstrating your software

Not anonymously marked

Software to be written during Lent Term

Assessment at end of Lent Term [15/60]

 

Booklists

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