Skip to content

Latest commit

 

History

History
144 lines (95 loc) · 7.54 KB

syllabus.md

File metadata and controls

144 lines (95 loc) · 7.54 KB

Introduction to Connected Devices

Revised February 3, 2022

  • CWRU - ECSE / CSDS 377
  • CSU - CIS 493 / EEC 492

Spring 2022

Instructor

Course Logistics

  • Lecture Time: Monday & Wednesday 4:30-5:45
  • Location: White 324 (Zoom to start the semester)
  • TA: Christian Tingle [email protected]
    • TA Office Hours (tentative):
    • Tuesday 7:30-9:00 pm
    • Thursday 3:00-4:30 pm
  • Instructor Office Hours: By appointment (please email)
  • Slack https://intro-to-connecteddev.slack.com/

Course Description

This course provides students with a practical, hands-on introduction to connected devices and systems (aka Internet of Things - IoT). 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, system topics including analytics, scaling and load testing, remote device update, and essential security. The course has a heavy lab component.

The hands-on nature of this IoT course 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 major systems components and concepts.

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 systems 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 class have been developed specifically for this course. 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 twice 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 weekly quizzes, weekly lab assignment, and a final project.

Final grades will be based on:

  • 5% - Weekly Quizzes
  • 85% - Weekly Assignments
  • 10% - Final Project

The weekly 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.

  • Assignments grades 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.
  • The instructors have zero tolerance for plagiarism.
  • Any malacious use or misuse of the development servers or other resources will be dealt with most harshly.

CWRU

Academic Integrity Policy

All students in this course are expected to adhere to University standards of academic integrity. Cheating, plagiarism, misrepresentation, and other forms of academic dishonesty will not be tolerated. This includes, but is not limited to, consulting with another person during an exam, turning in written work that was prepared by someone other than you, making minor modifications to the work of someone else and turning it in as your own, or engaging in misrepresentation in seeking a postponement or extension. Ignorance will not be accepted as an excuse. If you are not sure whether something you plan to submit would be considered either cheating or plagiarism, it is your responsibility to ask for clarification. For complete information, please go to http://bulletin.case.edu/undergraduatestudies/academicintegrity/

CWRU Disability Resources

ESS Disability Resources is committed to assisting all CWRU students with disabilities by creating opportunities to take full advantage of the University's educational, academic, and residential programs. For further information, please go to https://students.case.edu/academic/disability/

Tentative Lecture Schedule

First Day of Class will be January 10th.

  1. Introduction to Connected Devices (Internet of Things) and LAMPi (1/10)
  2. User Experience, User Interfaces, and Touchscreens (Kivy) (1/19)
  3. Publish/Subscribe Architectures (MQTT) (1/26)
  4. The Cloud (AWS and MQTT) (2/7)
  5. Web User Interfaces (HTTP, NGINX, JavaScript) (2/14)
  6. Web Frameworks (Django) (2/21)
  7. Production Web Serving & User/Device Association (2/28)
  8. Native Mobile Development (3/14)
  9. Bluetooth Low Energy on Embedded and Mobile Devices (3/21)
  10. Analytics: Instrumentation, Querying, and Visualization (3/28)
  11. Updating Firmware in the Field (4/4)
  12. Dropping for Spring '22 System Loading and Load Testing ()
  13. Essential Security - Part 1 (4/11)
  14. Essential Security - Part 2 (4/18)
  15. IoT Platforms (4/25)

Final Projects Presentations - CWRU Students - Finals Week - likely 4/28 7:30-10:30PM

Final Projects Presentations - CSU Students - TBD

No classes will be held on:

  • Monday, January 17th - MLK
  • Monday, March 7th - CWRU Spring Break
  • Wednesday, March 9th - CWRU Spring Break (Zoom Lecture for CSU Students)

Last Day of Classes for all students is Monday, April 25th.

© 2015-2022 LeanDog, Inc. and Nick Barendt