University of Oxford Logo University of OxfordDepartment of Computer Science - Home

Digital Systems:  2010-2011




ModerationsComputer Science



There are 8 lectures in HT and 16 in TT.

This course covers the fundamentals of the electronic circuits that are used to build computers, and outlines the software components that support their use. From the functions of individual transistors, it constructs a complete implementation of a simple processor, explaining in a structured way how complex behaviours are built up from simpler parts. This is followed by an overview of the software components of a complete computer system. Students will gain an understanding of the factors that affect the performance of hardware, and how these factors change with changes of scale, for example in the size of the data that a computer system handles. They will also gain experience in the important technique of hierarchical specification, implementation and proof of correctness using logic and data representation.

Learning outcomes

After studying this course, undergraduates will be able to:

  1. Design small combinational and sequential circuits from logic gates.
  2. Understand the design of processors with simple architectures.
  3. Implement simple programs in assembly language.
  4. Understand the characteristics and limitations of computer arithmetic.
  5. Understand the rôles of interpreters, compilers, and assemblers.
  6. Be familiar with operating system services such as the file system, virtual memory, and simple network services.
  7. Distinguish between specification and implementation, and appreciate the use of rigorous correctness arguments.


There will be two practicals: one on simulating a carry-look ahead adder in Haskell; the other will use a MIPS simulator to run simple code related to exercises on compiling expressions.


Simple design of combinational and sequential circuits; standard design elements. Computer arithmetic for integers and floating-point numbers; basic error analysis. Register transfer level design of a simple microprocessor. Simple programming in assembly language. Rôle of assemblers, compilers and linkers. Memory hierarchy. Simple operating system services: file systems, processes. Principples of networked services.

Reading list