Hardware/Software Design of Embedded Systems (Spring 2023)
Instructor: Dr. Sudeep Pasricha (email@example.com), ENGR B119
Lectures: Tu/Thu 4:00pm – 5:15pm, Eddy, Room 7
Office Hours: 9am – 11am, Fridays or by appointment (send email to set one up)
Course Description: Embedded systems run the computing devices hidden inside a vast array of everyday products and appliances such as smartphones, tablets, GPS units, cameras, and laptops. Cars are full of them, as are airplanes, satellites, and advanced military and medical equipments. As applications grow increasingly complex, so do the complexities of the embedded computing devices. The goal of this course is to develop a comprehensive understanding of the underlying technologies and design techniques used to build such embedded systems. The course provides an overview of the various building blocks of embedded systems, including processors, memories, peripherals, communication architectures, OS, middleware and embedded software. Additionally, several topics relevant to the design of contemporary and emerging embedded systems are covered, including security, reliability, writing embedded software, system level modeling and specification, design space exploration, hardware-software partitioning, high level synthesis (hardware/software interface), and real time scheduling. Real world examples will be used to demonstrate and explain concepts.
Prerequisites: ECE452 or equivalent computer organization course; basic programming experience in C/C++ and using Linux; basic knowledge of data structures and algorithms
Textbook: None. The course will cover materials from various books and conference/journal articles. Slides will be posted on Canvas. A sample list of reference books is given below:
- P. Marwedel, “Embedded System Design”, Kluwer 2018.
- M. Wolf, “Computers as Components: Principles of Embedded Computing System Design”, MK Pub, 2016.
Content: Slides, lecture recordings, readings, and assignments can be found at the course page on CSU Canvas