This module covers a broad range of concepts and methodologies in embedded systems design. The main areas covered are embedded system development using custom processors and general purpose processor platforms. Key topics of the module include design of digital logic circuits using hardware description language, verification of custom processor design on Field Programmable Gate Arrays (FPGAs), as well as firmware development for general purpose processors using C programming language. Students will work with typical communication protocols used for inter-device communications, such as Universal Asynchronous Receiver-Transmitter (UART) and Serial Peripheral Interface (SPI). Students will also develop the essential skills in various development tools commonly used in the industry.