An embedded system (ES) can be described as a computing system which is part of a larger physical system. Examples of ESs range from a simple elevator controller to a complex avionics control system. Unlike a general purpose computer system, ESs are typically designed for specific functionalities, often with stringent performance objectives and constraints related to real-time accuracy, area, power, cost etc. Their implementations may include both software and hardware components and may necessitate integration with sensors and actuators. The increase in complexity of modern ESs mandates automation in their design. Given a system which we intend to implement, the design process majorly evolves through distinct but often overlapping and iterative phases which include,i. modeling of the intended system behavior, ii. design of appropriate structural representations and implementation methodologies, corresponding to the specified behavior, iii. verification and validation of the correctness and performance related properties that the designed system should satisfy, and iv. testing whether the prototyped / manufactured implementation actually performs the required behaviour. The proposed course will systematically cover all these topics so that the student gains an end-to-end understanding of the overall ES design process.