Embedded Operating Systems for the IoT

  • Course: CS6501 (006) - Fall 2018
  • Instructor: Brad Campbell
  • Time: M/W 10:30am-11:45am
  • Location: 340 Rice
  • Office Hours: 241 Olsson: Tu 2-3pm, and Wed noon-1pm

The Internet of Things promises to revolutionize how we interact with computers by making embedded computation ubiquitous. New devices will be added to cities, to homes, to factories, to ourselves (inside and out), to cars, and to many other facets of life. The hope is that this influx of technology will help us solve many pressing societal issues in areas such as energy, personal health, the environment, and safety. While there are a range of challenges to enabling this scale, this course will focus on the software environments running on IoT devices.

Embedded operating systems and software stacks running on embedded nodes must balance numerous challenges while effectively supporting developers and potential applications. OSes for embedded devices often operate with very different assumptions and have different constraints than desktop and server operating systems. Embedded devices often are expected to run unattended for months or years, without a user interface, on a minimal energy budget, while responding to application-specific events and using an often unreliable wireless network interface. How should embedded operating systems manage these constraints while providing a programming model to developers that encourages reliable and effective devices for a range of applications?

This course will dive into the details of embedded operating systems using three case studies to ground the discussion. It will start with motivating applications to highlight what embedded devices may be tasked with, and describe the types of hardware platforms OSes may run on. Then, the course will explore different operating systems, their design decisions and tradeoffs, and a range of requirements that are critical in the IoT space.

As a graduate seminar, this course will focus on reading, analyzing, and discussing research papers. The course will focus on very recent research (last 2-5 years), but will also include older, more foundational papers for certain topics. There will also be an instruction component to the course to establish fundamental principles in this space.


This class requires three main deliverables from students.

1. Paper Reviews

Before each class with assigned papers you must read and write a short review of each assigned paper. The review should answer the following questions:

  • What is the problem this paper addresses, and why is it important?
  • What is the hypothesis of this paper?
  • What are two key assumptions that this paper makes?
  • What are the two main strengths of this paper?
  • What are the two main weaknesses of this paper?
  • Which figure or experiment was most compelling in support of the hypothesis, and why?

Additionally, the review should include ratings for how you perceive the paper in the following categories:

  • Presentation (1-5)
  • Interest (1-5)
  • Impact (1-5)
  • Overall (1-5)
  • Confidence (1-5)

The reviews must be entered in the review site before the start of each class and should be used as reference notes for the in-class discussion.

Note: it will always be easier to find weaknesses than it is to find strengths when reviewing a paper. After all, the authors had a limited number of pages! Try to find the merits that lead to the paper getting accepted while you read each paper.

2. In-class Discussion Lead

You must select one class (that has assigned papers) where you will be the discussion lead for the assigned papers. You should come prepared to give an overview of the paper, and guide a discussion about the strengths, weaknesses, potential for impact, and connections to the operating system principles discussed in class.

3. Homework

There will be short homeworks throughout the course. These will both cover in-class lectures and discussions, and extend the general concepts.

4. Course Project

This class will feature a semester-long course project. The project can be one of:

  • An IoT project using hardware and an embedded OS (not Arduino).
  • A 6 page research paper.
  • A different project subject to instructor approval.


  • 15%: Discussion Lead
  • 15%: Paper Reviews
  • 15%: In-class Participation and Discussion
  • 15%: Quizzes
  • 40%: Final Project and Presentation


Class Topic Lead Details
Wed Aug 29 Introduction Campbell Overview of the topic and course. Ubiquitous Computing
  Motivating Applications   What is the IoT trying to do?
Mon Sep 3 Smart Cities & Urban Environments Campbell (1) Array of Things, (2) SeaGlass
Wed Sep 5 Smart Buildings Campbell (1) MotionSync, (2) Multi Modal Occupancy
Mon Sep 10 Personal Health Campbell (1) LIBS, (2) Geophones
Wed Sep 12 Security & Financial (Project Info) Campbell (1) Hardware Tokens, (2) Microgrids
  Hardware Platforms   What hardware are OSes running on?
Mon Sep 17 Motes and More Campbell (1) OpenMote, (2) RISC-V, (3) Iot Platforms
Wed Sep 19 Pushing the Boundaries Campbell (1) Flicker, (2) M3
  Embedded Operating Systems    
Mon Sep 24 Overview (1) Campbell Embedded OS Goals
Wed Sep 26 Overview (2) Campbell  
Mon Oct 1 Embedded Programming Campbell (1) Programming Models, (2) No review. WSN Programming
Wed Oct 3 Case Study 1: TinyOS Campbell (1) TinyOS, (2) No review. nesC
Mon Oct 8 ✘ No Class. Reading Day.    
Wed Oct 10 Requirement 1: Sensing Narayan (1) Synthetic Sensors, (2) Opo
Mon Oct 15 Requirement 2: Communication Nasir (1) SeamBlue, (2) OpenChirp
Wed Oct 17 Case Study 2: Contiki Hallier (1) Contiki, (2) No review. Protothreads
Mon Oct 22 Requirement 3: Onboard Intelligence Yang (1) DeepASL, (2) SpareSep
Wed Oct 24 Requirement 4: Long Running Tasks Collins (1) HarvOS, (2) DINO
Mon Oct 29 Case Study 3: Tock Campbell (1) Tock
Wed Oct 31 Hack Day    
Mon Nov 5 ✘ No Class. SenSys 2018.    
Wed Nov 7 ✘ No Class. SenSys 2018.    
Mon Nov 12 Other Embedded OSes Paul (1) RIOT, (2) Ceu
Wed Nov 14 Requirement 5: Time Yeprem (1) Mayfly, (2) OpenClock
Mon Nov 19 Requirement 6: Security & Privacy Le (1) Tethys, (2) Ditio
Wed Nov 21 ✘ No Class. Thanksgiving.    
Mon Nov 26 Requirement 7: User Interface Camacho (1) LumiWatch, (2) Distance Pointing
Wed Nov 28 Requirement 8: Coordination and Robotics Ashe (1) Drone Platform, (2) No review. Robotic Softness
Mon Dec 3 Presentations    
Wed Dec 5 Presentations    

Paper Results

1: (4.50) DeepASL: Enabling Ubiquitous and Non-Intrusive Word and Sentence-Level Sign Language Translation
2: (4.14) TinyOS: An Operating System for Sensor Networks
3: (4.00) LumiWatch: On-Arm Projected Graphics and Touch Input
4: (4.00) A Lightweight And Inexpensive In-ear Sensing System For Automatic Whole-night Sleep Stage Monitoring
5: (3.89) Synthetic Sensors: Towards General-Purpose Sensing

1: (4.33) Multiprogramming a 64 kB Computer Safely and Efficiently
2: (4.29) Create Your Own Internet of Things
3: (4.25) DeepASL: Enabling Ubiquitous and Non-Intrusive Word and Sentence-Level Sign Language Translation
4: (4.22) Synthetic Sensors: Towards General-Purpose Sensing
5: (4.00) TinyOS: An Operating System for Sensor Networks

1: (3.78) Array of Things: A Scientific Research Instrument in the Public Way
2: (3.75) Sparsification and Separation of Deep Learning Layers for Constrained Resource Inference on Wearables
3: (3.75) DeepASL: Enabling Ubiquitous and Non-Intrusive Word and Sentence-Level Sign Language Translation
4: (3.71) TinyOS: An Operating System for Sensor Networks
5: (3.50) Multiprogramming a 64 kB Computer Safely and Efficiently

1: (3.89) A Lightweight And Inexpensive In-ear Sensing System For Automatic Whole-night Sleep Stage Monitoring
2: (3.86) Create Your Own Internet of Things
3: (3.75) DeepASL: Enabling Ubiquitous and Non-Intrusive Word and Sentence-Level Sign Language Translation
4: (3.44) Synthetic Sensors: Towards General-Purpose Sensing
5: (3.44) Array of Things: A Scientific Research Instrument in the Public Way

1: (2.89) Platform for controlling and getting data from network connected drones in indoor environments
2: (2.86) Create Your Own Internet of Things
3: (2.78) Synthetic Sensors: Towards General-Purpose Sensing
4: (2.67) A Lightweight And Inexpensive In-ear Sensing System For Automatic Whole-night Sleep Stage Monitoring
5: (2.56) MotionSync: Personal Energy Analytics through Motion Tags and Wearable Sensing


While graduate standing is the only prerequisite for this course, a general understand of operating system principles will be helpful for understanding the particular challenges of embedded operating systems. The following textbooks are used in introductory operating systems courses and may be useful for background information:


I trust every student in this course to fully comply with all of the provisions of the University’s Honor Code. By enrolling in this course, you have agreed to abide by and uphold the Honor System of the University of Virginia.

Specific expectations:

  • Each paper review should be done individually. You can and are encouraged to read other students’ reviews, but only after fully submitting your own review.
  • The homeworks should be completed individually and without collaboration with others.
  • The final project may be done individually or in groups of two. Collaboration both within the project group and the class as a whole is encouraged.


The University of Virginia strives to provide accessibility to all students. If you require an accommodation to fully access this course, please contact the Student Disability Access Center (SDAC) at (434) 243-5180 or sdac@virginia.edu. If you are unsure if you require an accommodation, or to learn more about their services, you may contact the SDAC at the number above or by visiting their website at http://studenthealth.virginia.edu/student-disability-access-center/faculty-staff.

Your Wellbeing

The Computer Science Department and SEAS aims to promote their students’ wellbeing. If you are feeling overwhelmed, stressed, or isolated, there are many individuals here who are ready and wanting to help. If you wish, you can make an appointment with me and come to my office to talk in private.

Alternatively, there are also other University of Virginia resources available. The Student Health Center offers Counseling and Psychological Services (CAPS) for its students. Call 434-243-5150 (or 434-972-7004 for after hours and weekend crisis assistance) to get started and schedule an appointment. If you prefer to speak anonymously and confidentially over the phone, call Madison House’s HELP Line at any hour of any day: 434-295-8255.

If you or someone you know is struggling with gender, sexual, or domestic violence, there are many community and University of Virginia resources available. The Office of the Dean of Students, Sexual Assault Resource Agency (SARA), Shelter for Help in Emergency (SHE), and UVA Women’s Center are ready and eager to help. Contact the Director of Sexual and Domestic Violence Services at 434-982-2774.

Religious Accommodations

It is the University’s long-standing policy and practice to reasonably accommodate students so that they do not experience an adverse academic consequence when sincerely held religious beliefs or observances conflict with academic requirements. Students who wish to request academic accommodation for a religious observance should submit their request in writing directly to me by email as far in advance as possible. Students and instructors who have questions or concerns about academic accommodations for religious observance or religious beliefs may contact the University’s Office for Equal Opportunity and Civil Rights (EOCR) at UVAEOCR@virginia.edu or 434-924-3200. Accommodations do not relieve you of the responsibility for completion of any part of the coursework missed as the result of a religious observance.