Overview

Description

The objective of this course is to learn how to design and build a distributed network of devices that are connected in an ‘Internet of Things’. For devices we will focus on simple devices that collect data through sensors and control aspects of their environment. Examples include weather stations, crop monitors, LED lights, etc. The true value of these devices can only be realized by aggregating the data they produce over time and using these aggregated data to make system level decisions. This course will examine the “full stack” from devices to data aggregation to data visualization.

A second objective of this course is to gain experience with building system software. Generally, systems building requires integrating a variety of existing programs and libraries with custom software to create an integrated whole. In the case of this course, this includes writing software to interact with services provided by 3rd parties and software that is partitioned across multiple platforms. This requires developing skills beyond those taught in more general programming classes including reading and understanding documentation for large software packages, learning how to build, test, and debug in an often complex distributed environment.

The course will combine practical hands-on programming exercises (to build a working system) with an exploration of the key technical ideas that make it possible to build secure, distributed, networks of devices and applications that access the data these devices provide.

Prerequisites

To take this course you should have completed the introductory programming (051) and data structures courses (062). While some students will have had computer systems (105), that is not a prerequisite. Thus, I will assume some sophistication in programming with Java, but not count on experience in C.

Instructor

  • Professor Geoffrey Brown
    • Office: Edmunds Hall 128
    • Office hours: M 2:00-3:30, W 1:00-2:30 (also: when the door is open or by appointment)

Lectures

  • Time: TR 9:35-10:50
  • Location: Lincoln Room 1135

Labs

  • Time: Tuesday 1:15-4:00
  • Location: Edmunds 105
  • Note: There is no lab the first week of classes

Grades

  • Labs/Assignments: 65%
  • Midterms: 0
  • Lecture Summaries : 10%
  • Final Project: 25%

Due to the Covid-19 disruption, for the second half of the semester, all lectures are on-line and asynchronous. I will hold open zoom sessions at the normal class time to discuss the lecture material and answer questions. You will be responsible for writing one summary (1-2 pages) each week discussing the lectures of that week. You should add a directory to your git repo called lectures. Each week you should create a summary called lectures_x-y.md. The summaries will be due the Monday following each week. My expectation is:

  • you will write in complete sentences and paragraphs (no bullets like this)
  • your summary will start by describing the the topic(s) and, in separate paragaphs, some of the key points of the lectures(s).

The grading rubric will be:

  • Introduction : 20%
  • Clear organization : 20%
  • Reasonable summary of the lecture topics : 60%

Communication

  • General questions : please use Piazza for questions that might be of interest to your classmates
  • Private questions : email me: geoffrey.brown [at] pomona.edu
  • Gradebook : I will use sakai to post grade information

Assignments

Weekly Assignments

All assignments will be started in the laboratory sessions. Unless otherwise noted, the due date for every assignment is before the start of the following laboratory session. For each graded assignment you will write a concise report and you will be graded on the report as well as successful completion of the assignment goals.

Working in Pairs

Except for the first few assignments, which are tutorials, you will have the opportunity to work with a partner. If you choose to work with a partner, each of you must write your own report. The final project should be done with a partner.

Final Project

The last assignment of the semester is an open-ended project. You will pick an application area and design an IoT system for this domain. The objectives are to determine the architectural requirements of such a system and to prototype selected sub-systems using the techniques learned in class. The following grading rubric is subject to change prior the the project start.

  • Design + Report - 75%
  • Presentation (slides) - 25%

Disability Accommodations

Pomona College is committed to providing equal opportunity for participation in all programs, services and activities. Requests for accommodations may be made by contacting the Disability Coordinator on your home campus. At Pomona College, that person is Associate Dean of Students Jan Collins-Eaglin. Pomona College’s policy on disability accommodations can be found at the Dean of Student’s website.

Accommodation forms must be submitted and accommodations agreed upon by the last day to add classes, or within five days of the date on which the form was signed by an appropriate dean, whichever comes later. Many accommodations will be handled through the Student Disability Resource Center in the Tranquada Student Services Center.