CS249r: Tiny Machine Learning

Applied Machine Learning on Embedded IoT Devices

Fall 2022

Previous Years: [Fall 2020]

Course Overview

About the Course

Tiny Machine Learning (TinyML) is an introductory course at the intersection of Machine Learning and Embedded IoT Devices. The pervasiveness of ultra-low-power embedded devices, coupled with the introduction of embedded machine learning frameworks like TensorFlow Lite for Microcontrollers, will enable the mass proliferation of AI-powered IoT devices. The rapid growth of machine learning and how easy it is to use platforms like TensorFlow (TF) make it an important subject for computer science and electrical engineering students to learn about today.

Course Topics

The course will cover all things related to machine learning on embedded devices. The topics range from tinyML applications and algorithms to the design of the frameworks built for running ML on embedded systems to the microcontroller hardware designed, optimized, and built for ultra-low power (milliwatts) computing:

  • tinyML Applications and Usecases

  • tinyML algorithms machine learning algorithms and optimizations

  • tinyML frameworks, tools, and techniques

  • Ultra-low-power system design

What You'll Learn & Do in the Course

At the end of the course, you would have been exposed to the following:

  • Brief introduction to ML and IoT

  • Industry talks about real-world deployments

  • Discussion of bleeding edge academic research

  • Practical experience through hands-on project assignments

At the end of the course, you would have achieved the following:

  • Gained familiarity with cutting edge literature in the field of tinyML

  • Learnt to train and deploy models on microcontrollers with TF-micro

  • Conceived and developed a (novel) TinyML application running on a MCU


Teaching Assistants

John L. Loeb Associate Professor of Engineering and Applied Sciences,

Harvard University

Class Information


Class meets every Monday

  • 12:45 PM - 3:30 PM

General Information


Class Time and Location


Monday, 12:45pm - 3:30pm

@SEC LL2.223

*See schedule for dates



Link to details on when assignments are due and what will be taught every day.


Recommended but not required: TinyML book


Submission link for assignments, paper reviews

Reference Book

We recommend TinyML book as a reference for the projects and programming assignments. The book is a good primer for anyone new to embedded devices and machine learning. It serves as a good starting point for understanding the machine learning workflow, starting from data collection to training a model that is good enough for deploying on ultra-low power computing devices.

The course builds on top of some concepts covered within this book. We are also preparing an e-book that is a good primer to fill-in material that is supplementary to this book. Stay tuned!

Coding Assignments

To get everyone familiar with coding on embedded systems with ML, we will be using the examples provided in this book as a starting point. Each assignment will build on the examples provided.


The course will culminate with project demos! You will have an opportunity to showcase what you have learned by incorporating your experience into a hands-on project of your liking. Alternatively, we will provide a list of suggested projects that will allow you to start from the class assignments.


You must be confident and comfortable with the following topics:

  • Proficiency in C/C++ and Python. All class assignments will be involve one or both languages.

  • Familiarity with command line tools in Mac, Windows or Linux. Assignments will require you to operate a terminal.

You will get more out of the class if you have familiarity with:

  • College Calculus, Linear Algebra, Basic Probability, and Statistics: Many ML topics revolve around taking derivatives, understanding matrix vector operations and notation, and the concepts of gaussian distributions, means, standard deviations, etc.

  • Basic Machine Learning / Aritificial Intellifence: The class will provide some introductory material but/and any previous knowledge you have will allow you to dive deeper into the material.


  • Paper Reviews: 10%

  • Paper Presentation: 25%

  • Class Participation: 5%

  • Programming assignments: 15%

  • Final Project: 45%

Development Platforms

Cortex-M4 Microcontroller

You will learn to run your ML models on a Nordic nrf52840 processor (256KB RAM, 1 MB Flash, 64 MHz) on the Arduino Nano 33 BLE Sense platform.

TensorFlow Lite (Micro)

You will use TF Lite (Micro) to deploy your ML models,
which is offered free of cost by Google.

Active Learning Labs Staff