- 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.
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
|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|
|Mon Dec 3||Presentations|
|Wed Dec 5||Presentations|
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:
- Operating Systems: Principles and Practice (2nd Edition) by Thomas Anderson and Michael Dahlin
- Operating Systems: Three Easy Pieces by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau
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.
- 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 firstname.lastname@example.org. 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.
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.
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.