This course defines the fundamentals and design of embedded systems using a modern methodology. The course defines the basic components of embedded systems, especially the various types of processors, which include the single-purpose processors, the applications-specific processors and general purpose processors. This is in addition to learning the basics of Verilog language used in the design of single-purpose processors. We also introduce the various types of memory, and input and output equipment which are necessary to build embedded systems and how to deal with them. Then we identify the communication protocols using buses or wirelessly to ensure the processor connection with peripherals or with other systems. Finally, we demonstrate the role of real-time operating systems in accelerating the development of embedded system applications and the characteristics they must achieve to ensure that they can meet the needs of these applications. Intended Learning Outcomes: Identify embedded systems and their properties. Reminder of the fundamentals of logical and sequential logic circuits. Understand how custom single-purpose processors are designed. Identify the basics of Verilog HDL at logic gates level. Identify the basics of Verilogs for combinational circuits. Identify the basics of the Verilog for sequential circuits. Identify the basic components of general purpose processors. Identify some commonly used standard Peripherals. Identifying types of memories, their properties and methods of composing memories. Understand methods of interfacing processors using buses. Identify the protocols of parallel, serial and wireless communication. Identify real-time operating systems and their properties.