COMP_ENG 365, 465: Internet-of-Things Sensors, Systems, and Applications



Helpful but not required: experience with embedded systems and microprocessors (e.g. COMP_ENG 346, 347, 366, 355), basic understanding of signals and systems (e.g. COMP_SCI 213, ELEC_ENG 222); knowledge of communication systems (e.g. ELEC_ENG 307) and data structures (e.g. COMP_SCI 214).



INSTRUCTOR: James Moawad

Buildings that recognize and adapt to their occupants, teams of drones that perform search and rescue or survey architectural digs, invisible implantable or wearables devices that support and protect patients in hospitals and homes, swarms of postage-stamp sized satellites orbiting earth supporting global scale space experiments. These applications and others have motivated the development of the Internet-of-Things (IoT); a paradigm for computing where trillions of tiny, even invisible computers support daily life, infrastructure, and humanity in general. While promising to revolutionize computing and the world, this there are still many challenges, but most prominently in how we manage the computation, storage, and analysis of the immense amount of data generated by these tiny sensors.

Edge Computing is a new paradigm shift in IoT systems, where computing occurs within (or near) a IoT device or sensor. Devices have become increasingly more connected with the ability to transmit data to the cloud or centralized servers. Should collected data be sent off to the cloud? Should it be kept local at the “edge”? Where should computation be performed? When designing a connected device, there are numerous tradeoffs regarding where the compute should occur, how data is transmitted, what data is needed where, etc.

This course presents a view of the tasks required in connected systems beginning with data collection, storage and movement of data, and tradeoffs regarding computing on data at the “edge” rather than in the cloud or centralized servers. The course focuses on developing the necessary skillsets to solve real-world design challenges for IoT and connected applications, using industry-standard methodologies.

We will first explore collecting input data from sensors, using hands-on labs with basic sensors such as temperature sensors and accelerometer data. We will then discuss storage of the data and design decisions related to where the stored data should reside, whether locally on the IoT device itself or in the cloud / remote server. We will then explore topics related to edge compute and benefits that can be achieved: data transmission reduction, latency reduction, responsiveness. Design tradeoffs such as data precision and accuracy will be explored as well as power efficiency.

We will also discuss how Deep Learning inference can be implemented at the edge rather than in the cloud. This can be combined with discussion of using imaging/video as an input sensor and how transmitting video up to the cloud quickly becomes costly and difficult to scale.


When a student completes this course, s/he should be able to:

•     Understand what is meant by the term “edge” within a connected system.

•     Explain options for where computation can be performed within a connected system.

•     Understand the tradeoffs associated with performing compute in the cloud or a centralized server cluster.

•     Explain the reasons why it may be advantageous to compute at the edge.

•     Know how to reduce compute complexity in order to fit within the compute envelope of edge devices.

•     Build a device which performs edge compute and sends resulting decimated data to the cloud.


This course is project oriented. Students will gain experience in software programming for hardware architectures using commercial off-the-shelf ARM SoC FPGA boards and IoT sensors. Students will use industry standard computer-aided design tools to develop, simulate and synthesize the hardware designs. Each student will have the opportunity to design several projects individually and work in groups for the final project.


Students will utilize the Intel Quartus and Microsoft Azure. Intel Quartus is available to download for free or may be used in the CG50 computer labs. A free Azure for Students account on Microsoft Azure will need to be created.


Grading is team-based, and is composed of the following:

•      50% Weekly Labs (5)

•      30% Final Project & Presentation

•      20% Class Participation


Week 1:
·      Lecture 1: Connected Devices; Edge vs. Cloud; software vs. hardware

·      Lab 1: Using an ARM Cortex-A9 System

Week 2:
·      Lecture 2: Physical computing: Sensors, actuators, data generation

·      Lab 2: Getting Started with Linux on ARM Cortex-A9

Week 3:
·      Lecture 3: Tradeoffs: power, bandwidth, latency, costs, etc.

·      Lab 3: Developing Linux Programs that Communicate with Wifi and Bluetooth Low Energy (BLE)

Week 4:
·      Lecture 4: Computational Complexity: Precision vs. Accuracy, Quantization

·      Lab 4: Image Edge Detection on Microsoft Azure (cloud) vs. locally

Week 5:
·      Lecture 5: Computing architectures: CPU, GPU, custom HW engines (FPGA)

·      Lab 5: Gathering data from sensors and sending summary data to the cloud

Week 6:
·      Lecture 6: Quantization, Floating-Point, Fixed-Point Architectures

·      Final Project Proposal Due

Week 7:
·      Lecture 7: Deep Learning

Week 8-10:
·      Final Project



Students in this course are required to comply with the policies found in the booklet, "Academic Integrity at Northwestern University: A Basic Guide". All papers submitted for credit in this course must be submitted electronically unless otherwise instructed by the professor. Your written work may be tested for plagiarized content. For details regarding academic integrity at Northwestern, please view or download the guide.


Northwestern University is committed to providing the most accessible learning environment as possible for students with disabilities. Should you anticipate or experience disability-related barriers in the academic setting, please contact AccessibleNU to move forward with the university’s established accommodation process (e:; p: 847-467-5530). If you already have established accommodations with AccessibleNU, please let me know as soon as possible, preferably within the first two weeks of the term, so we can work together to implement your disability accommodations. Disability information, including academic accommodations, is confidential under the Family Educational Rights and Privacy Act.


Class sessions for this course will occur in person. Individual students will not be granted permission to attend remotely except as the result of an Americans with Disabilities Act (ADA) accommodation as determined by AccessibleNU.

Maintaining the health of the community remains our priority. If you are experiencing any symptoms of COVID do not attend class and update your Symptom Tracker application right away to connect with Northwestern’s Case Management Team for guidance on next steps. Also contact the instructor as soon as possible to arrange to complete coursework.

 Students who experience a personal emergency should contact the instructor as soon as possible to arrange to complete coursework. Should public health recommendations prevent in person class from being held on a given day, the instructor or the university will notify students.


This class or portions of this class will be recorded by the instructor for educational purpose and available to the class during the quarter. Your instructor will communicate how you can access the recordings. Portions of the course that contain images, questions or commentary/discussion by students will be edited out of any recordings that are saved beyond the current term.


Unauthorized student recording of classroom or other academic activities (including advising sessions or office hours) is prohibited. Unauthorized recording is unethical and may also be a violation of University policy and state law. Students requesting the use of assistive technology as an accommodation should contact AccessibleNU. Unauthorized use of classroom recordings – including distributing or posting them – is also prohibited. Under the University’s Copyright Policy, faculty own the copyright to instructional materials – including those resources created specifically for the purposes of instruction, such as syllabi, lectures and lecture notes, and presentations. Students cannot copy, reproduce, display, or distribute these materials. Students who engage in unauthorized recording, unauthorized use of a recording, or unauthorized distribution of instructional materials will be referred to the appropriate University office for follow-up.


Northwestern University is committed to supporting the wellness of our students. Student Affairs has multiple resources to support student wellness and mental health. If you are feeling distressed or overwhelmed, please reach out for help. Students can access confidential resources through the Counseling and Psychological Services (CAPS), Religious and Spiritual Life (RSL) and the Center for Awareness, Response and Education (CARE).