The module reviews the theory and practice of designing digital systems. Boolean logic and binary number systems are reviewed.Design of combination circuits is covered including truth tables and a range of basic circuits (decoders, encoders, multiplexers, adders, subtracters, multipliers). Use of Karnaugh maps for logic minimisation is explained. Design of sequential circuits is covered including basic elements (clocks, latches and flip-flops) and basic circuits (counts, shift registers). Specification and design of Finite State Machines is explained. Memory systems are described. Design issues including race conditions, hazards and glitches are considered.