Smart IoT devices with sensors, actuators, embedded intelligence, and near-ubiquitous access to cloud services for machine learning and information processing are revolutionizing our society by creating “smart” human-cyber-physical systems at scales from personal to urban to planetary. This course is designed to provide students with an understanding of the key design and architecture principles behind such systems. The goal is to enable the students to approach the implementation of these systems not in an ad hoc “maker” manner but instead in a manner that is informed by sound engineering principles and leads to systems that are efficient, robust, and secure.
WHO CAN TAKE THIS COURSE? The course as targeted as a foundational course for those undergraduate students in the Computer Engineering degree program who are interested in going in depth into computing systems that interact with the physical world. Graduate students are also welcome to take this course, but are allowed to count only one of CS/ECE M119 or CS M213A/ECE M202A for their degree.
COURSE FORMAT. Course will be organized around a series of modules covering differing aspects of networked embedded systems, with each module having lectures and an associated assignment with a programming or hands-on mini-project. There will also be an in-class midterm, and a take-home final-exam/project.The precise grading schema will be announced in the near future.
PREREQUISITES. The course requires that you be very familiar with programming in C/C++, reasonably familiar with programming in Python, and comfortable using Linux command line shell. You also need to know probability and linear algebra concepts, and structure of computer systems, processors, and networks.
Topics