Skip to content

Latest commit

 

History

History
116 lines (79 loc) · 6.38 KB

syllabus.md

File metadata and controls

116 lines (79 loc) · 6.38 KB

Introduction to Connected Devices

  • CWRU - EECS377
  • CSU - CIS 493 / EEC 492

Spring, 2018

Instructors:

Course Logistics:

Course Description

This course provides students with a practical, hands-on introduction to connected devices and systems (aka Internet of Things). Student pairs design and build a complete connected device system, gaining hands-on experience with device (embedded), cloud/web, and mobile software development and wireless communication technologies. Students also develop experience with non-functional, systems topics including analytics, scaling and load testing, remote device update, and essential security. The course has a heavy lab component.

The course will be a hands-on introduction to building Connected Devices (aka Internet of Things) products and services. This will, by necessity, involve a wide variety of programming languages, systems, and technologies. Given the time constraints, none of these can be explored in detail, but we hope to impart an overall systems understanding of how Connected Device systems can be architected and built, as well as introduce students to each major systems component and concept.

We will be exploring this space through a simple hardware product, whose functionality will evolve throughout the semester, as we integrate it with "the cloud" and mobile applications, as well as explore related topics, such as security and analytics.

We hope that by the end of the semester students will:

  • have developed a systems level understanding of Connected Devices
  • have enough understanding to dive deeper into the technology of any of the components
  • have sufficient experience to prototype a product or concept idea of their own

This a 3 Credit Hour course.

Textbook

The materials for this course have been developed from scratch. Students will access the courseware (source code, configuration, hypertext textbook in Markdown) via Git.

Knowledge of Linux, Git, and Python are recommended.

As a starting point, here are a few Git resources that might be useful:

and a few Python resources that might be useful:

Course Content and Requirements

Lectures will be given once per week. Students are expected to attend all lectures and participate in discussions. Students will be responsible for all material covered in class.

We will be covering a wide variety of technologies, including Embedded Systems, Cloud (using Amazon Web Services - AWS), Bluetooth Low Energy (aka Bluetooth Smart) and native mobile applications, as well as non-functional systems topics including analytics, load testing, security, firmware update, etc.

Grading Policy

(A: 90-100%, B: 80-90%, C: 70-80%, D: 60-70%, F: 0-60%)
curve possible at instructor's discretion

There will be a weekly lab assignment, plus a Final Project, for a total of 14 assignments. The Final Project will make up 10% of your grade, with the other weekly assignments being 90%.

The assignments will be challenging.

We strongly believe in the concept of Pairing as a useful practice for learning - two developers/designers/engineers working closely together, sharing a keyboard, talking through problems and possible solutions, and teaching and learning from each other.

Students will be paired for each assignment.

  • Grading will be based on:
    1. A brief, in-class demonstration of the required functionality, plus a short video as a backup
    2. A brief write-up, capturing relevant output (e.g., source code, photos/videos demonstrating required functionality, etc.)
    3. Review of your software.
  • Late assignments will not be accepted.
  • All projects must conform to the guidelines given in the assignments (e.g., program name, particular function names, output format if specified, etc.).
  • Students will work in pairs, and will receive the same grade for each assignment.
  • If a student feel that their current pairing is not working, please contact the instructor immediately.

Course Ethics and Policies:

  • All work turned in should be that of your own pair.
  • Study groups are encouraged, but, again,
  • All work turned in should be your own pair.
  • Neither copy another student's work nor allow your work to be copied, other than your pair.
  • Please refer to:
  • Any malacious use or misuse of the development servers or other resources will be dealt with most harshly.

Tentative Lecture Schedule

  1. Introduction to Connected Devices (Internet of Things) and LAMPi (1/17)
  2. User Experience, User Interfaces, Touchscreens, and Kivy (1/22)
  3. Publish/Subscribe Architectures for Integration and MQTT (1/29)
  4. The Cloud (AWS and MQTT) (2/5)
  5. Web User Interfaces (HTTP, NGINX, Serving Static Pages, JavaScript) (2/12)
  6. Web Frameworks (Django) (2/21)
  7. Production Web Serving & User/Device Association (2/26)
  8. Native Mobile Development (3/5)
  9. Bluetooth Low Energy (aka Bluetooth Smart) on Embedded and Mobile Devices (3/19)
  10. Analytics: Instrumentation, Querying, and Visualization (3/26)
  11. Updating Firmware in the Field (4/2)
  12. System Loading and Load Testing (4/9)
  13. Essential Security - Part 1 (4/16)
  14. Essential Security - Part 2 (4/23)
  15. IoT Platforms & Final Project Assignment (4/30)
  16. Final Projects Presentations - Finals Week

Note: each week has an accompanying lab assignment to be completed by the following week.

Note: Monday, February 19, 2018 (President's Day) is a CSU holiday. No lecture will be held that day.

© 2015-18 LeanDog, Inc. and Nick Barendt