CS/ECE 581C1: Embedded Machine Learning (FA20)

Instructor: Dr. Sudeep Pasricha (sudeep.pasricha@colostate.edu), ENGR B119

Lectures: Tu/Thu 12:30pm – 1:45pm, BHSCI 107 (online recordings will be available)

Office Hours: 9am – 11am, Fridays

Course Description: Machine learning is becoming pervasive in embedded computing platforms, such as smart mobile systems, wearable IoT devices, and autonomous vehicles. This course will present recent advances towards the goal of enabling efficient implementation of deep machine learning models on embedded systems. Specifically, it will provide an overview of 1) the theoretical foundations and motivations behind various deep learning models, 2) software modeling and optimization techniques for these models, 3) hardware platforms and architectures to support efficient execution of machine learning models, and 4) hardware-software co-design approaches for machine learning. The course will cover emerging machine learning models, custom hardware accelerators, as well as paradigms including processing-in-memory, memristors, and photonics for machine learning. The course is very topical and relevant for graduate and senior undergraduate students in computer engineering, computer science, data science, and electrical engineering, as well as practitioners in industry and students in other engineering departments who are interested in data engineering, machine learning, and embedded systems. The course does not assume prior expertise in machine learning; however knowledge of Python is essential. Some background in computer architecture (ECE452 or similar) would also be helpful. Students will get hands-on experience in the design and optimization of deep machine learning models, as well as the analysis of these models on emerging hardware platforms. This is a unique course that is well suited for beginners and experts alike, who want to comprehend the state-of-the-art in deep machine learning software and hardware design, and understand future trends and opportunities in this exciting field.

Prerequisites: ECE251 or equivalent computer organization course; programming experience in Python

Grading: Homework/Lab Assignments: 30%; Reading Assignments: 20%; Course Project: 40%; Participation: 10%

Textbook: None. The course will cover materials from various books and conference/journal articles.

Syllabus (tentative):

Content: Slides, lecture recordings, readings, and assignments can be found at the course page on CSU Canvas