Introducing
Your new presentation assistant.
Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.
Trending searches
Motivation & Goals
Approach
Big Picture & Semester Review
Possible Approaches
Choice
Goals
Focus on single aspect of IoT
(e.g., networking)
Survey of many topics
(breadth, but not depth)
Depth
(but not breadth)
Focus on development Applications of IoT
(depth approach) from a C.S. perspective
Why:
1. Exposure to many contemporary topics
2. Accessible & Exciting opportunities for you
Form a basic understanding of most major aspects of basic IoT systems
Challenges
Content
Studios
Assignments
Project
Quizzes
There are few existing IoT texts/course syllabi
Hardware (can't do traditional submission)
Topics cover many areas in C.S. & Comp.E.
All "Platforms" have serious flaws/limitations
Particle is "commercial ready"
APIs and documentation are acceptable
Connectivity compromises exist with most platforms
There are significant outside resources for technical content: Khan Academy, AdaFruit, MDN, etc.
Try to select a set of topics that allows construction of "real-world" IoT application by a person/small team.
Try to minimize languages/tools
Try to focus on real-world principles
Structured exploration of topic
Introduction of topic prior to assignment
Post studio summaries were intended to correct errors and provide review
Show some shortcuts / techniques
In-depth exploration of topic.
Attempt to mimic development approaches used in real products
Attempt to introduce some software engineering tools and concepts
Independent project
Opportunity to demonstrate significant mastery of concepts
Only required independent assessment
Tool to probe aspects of:
Breadth of knowledge
Depth of understanding
Domain specific critical thinking
Ability to generalize
Paced to:
Diffuse study
Coerce review soon after content
Traditional lectures are not effective for many students
Active learning / learning by doing
Social learning has been shown to have
some benefits
Some degree of self-learning from diverse resources is essential beyond academia.
Favor "broad exposure" to mastery
(for this course)
Include lightweight intro to many concepts needed for careers and larger projects
Goal:
Basic Course Skills: Markdown & GitHub
Exposure to breadth & variety of IoT
GitHub & Markdown Intro
IoT is poorly defined
Covers many different topics / technologies
Goal was to discover some of the diversity of IoT
(Potentially giving some insight into potential projects)
Goals: To see some of the breadth of IoT
Identify major aspects of IoT systems:
Things
Services
Interaction with IoT Systems:
Actions (by Humans)
Feedback (to Humans)
Evaluate IoT Systems:
"Criteria" for measuring potential benefit
Goal: "Minimial Viable Tools" for IoT
Introduce IoT with as few new skills as possible to cover full IoT system.
Cover significant, contemporary tools.
Development of a UI for an RGB LED
Software Engineering concepts:
User Stories are a way to identify/document features and needs
Usage scenarios can capture fine details of specific interaction
Paper Prototypes can help test user interaction early in development
Tools
Browser developer tools
Feedback: Display values (colors) & Status
Human Actions: Controls for interaction (on/off buttons, color picker/sliders)
Goal:
Foundation for an ongoing "real" project
Introduce concepts for project
Prototype features for later:
Login/Accounts
Basic Controls
Support for "advanced" features
Important contemporary concepts:
Responsive Web Design concepts
Tools:
HTML Validator
Goals:
Use most prominent web language.
Emphasize "event driven programming"
(Other examples: event listeners, cloud function call backs, timers, etc.)
Emphasize Object Oriented Design and callbacks
Software Engineering Concept:
UI Design Approaches: Model-View-Controller
& UI lifecycle
Stubs for partial implementations
Proxys to stand in for missing components
Tools:
JavaScript Console for interaction/inspection
Event Listeners
setTimeout() / setInterval()
Interacting with DOM via document object
Goal:
Practice JavaScript
Implement navigation
Introduce "Single Page Applications"
Introduce JavaScript Objects
Goal
Understand significant aspects of
firmware & devices used in "Things"
Goal
Understand the basics of configuring a device for Wi-Fi
Understand the Particle's model of cloud-based deployment.
Resistor review (current, voltage, engineering constraints)
Understand analogWrite() & RGB LEDs
Goal:
Review input issues / pullups
Safe Mode
Buttons
Practice debugging (Serial.println)
Time object / "clock time"
Understanding software timers
Build crossfade for RGB light
Goal
Explore common mistakes (floating input)
Debouncing (again)
Goals
Emphasize the importance of API for separating concerns
Challenging, but real-world logic
Emphasize the importance of timing and states in many real applications
Goal
Understand some approaches to networking (Transports, Protocols, and communication patterns)
Data Formats (JSON) & Protocols (HTTP)
Experience Publish-Subscribe and use of event names/channels
(Common IoT approaches)
Experience a few services
Service-to-Service integration & WebHooks
Goal
Complete a basic RGB LED lamp
Introduce use of Particle console for testing.
One-to-One communication & Polling: Particle.function() and Particle.variable()
Goals
Introduce pub-sub & events/topics (one-to-many communication)
Use JSON data format
JavaScript API for interacting with service
Goals
Sequence diagrams to convey interactions
See Cloud Service used for collecting and analyzing data
(ThingSpeak) / TCP based embedded
See Twitter integration
See multi-way communication via
Publish-Subscribe like model
See use of "Public" channel
Goals
Hardware:
OLED & External Libraries
Piezo / Sound
HTTP Requests (GET/POST, apitester.com/)
WebHooks and cross-service integrations
Goals
Data logging via IFTTT & Sheets
OneWire for "bus" of Temp. Sensors
PIR Sensor & Slack WebHook
Goal: Complete basic IoT project!
Combine
UI (Assignment 1)
Behavior (Assignment 2)
Hardware (Assignment 3)
into working project.
Goal
See device-to-device interaction
Practice prior concepts (i.e., new streams/approach for brightness)
Goals
Be able to create simple mobile apps for IoT
Introduction to "hybrid" approach to app development.
PhoneGap Desktop (server) and PhoneGap Mobile (client)
Bringing RGB LED app to mobile.
Goal
Short, simple assignment
Chance to catchup/fix errors on prior work
Goals
Cover topics that don't fit elsewhere
Include some breadth of IoT (AdaFruit)
Bluetooth low energy basics
Motors
IFTTT & Texting
Example "projects"
More webhooks / services
Languages: JavaScript, HTML, CSS, C++
Misc. Tech concepts:
Promise objects
Log-based debugging
Web consoles
Proxies/Stubs
Importance of APIs
State Machines / State
Sequence Diagrams
User Stories / Usage Scenarios
Incremental, Unit-based project development
Event Driven Programming
Responding to UI,
Responding to web traffic,
"Listener" approach
Basic UI concepts / lifecycle
Publish-Subscribe
Many platforms use pubsub
Get / Polling
Prevalence of JavaScript
Human-centric design / design thinking
Lightweight software engineering intro: Breaking a large project into logical sub-parts