The course covers a broad range of hardware and software topics in the context of smart/intelligent embedded systems. Traditional embedded systems are passive electronic devices that perform a single task and operate in isolation. In contrast, modern embedded systems are intelligent devices that involve complex hardware and software to perform a multitude of cognitive functions collaboratively. Designing such systems requires us to have deep understanding of the target application domains, as well as an appreciation for the coupling between the hardware and the software subsystems. To this end, the course is designed to help students come up to speed on various aspects of edge computing hardware and software, including interactions with remote cloud computing systems and microcontroller edge endpoints. Each year the course focuses on one or more emerging areas, including but not limited to autonomous vehicles, robotics, mobile, etc. The course is ideal for students that are interested in cross-layer and interdisciplinary work. It is a seminar-style course so students are expected to discuss and interact after reading the assigned research papers. Finally, there are programming assignments that provide the foundation for a course project.