COURSE OUTLINE: This course on Embedded systems will first the students to the fundamental requirements of embedded systems and the interaction between hardware and software in such systems. Next, the course will discuss some basic steps of hardware design, introduce the students to ASIPs, ASICs and FPGAs. Next, the students will be exposed to the very important issue of designing for less power consumption and introduce them to the techniques that are adopted to this end. Since many of the embedded systems will have real time constraints, basic issues of real time operating systems will be discussed. This will be followed by formal specification models and languages, mapping the specification to hardware and software components along with decisions on design tradeoffs and hardware software partitioning. Next, the synthesis of hardware and software along with a few of the optimization techniques will be presented. The course will end with a brief overview of design verification methods that are adopted for embedded system design.