About this course
Develop software for mobile, IoT, and edge devices where connectivity, power, and compute are constrained and data is processed close to where it is generated.
Teams deliver a connected system spanning an Android mobile app, one or more IoT sensors wired to a Raspberry Pi edge node, and an edge processing component that filters and aggregates sensor data locally. The system communicates device-to-edge over MQTT and edge-to-app over CoAP, operates fully offline, and synchronizes state reliably with automatic conflict resolution when connectivity resumes.
Expected outcomes
- Design and build Android applications using MVVM architecture, ViewModel and Repository patterns, Room for local persistence, and WorkManager for battery-aware background tasks within doze-mode constraints.
- Compose adaptive mobile UIs with Jetpack Compose, applying declarative state hoisting, material design components, and density-independent layouts for varying device form factors.
- Apply structured concurrency with Kotlin Coroutines, managing dispatcher pools for IO, CPU, and UI threads and integrating Retrofit for reactive REST API communication.
- Implement MQTT publish-subscribe messaging and CoAP constrained REST endpoints, configuring QoS levels, broker topology, persistent sessions, confirmable messages, and the Observe option for device-to-edge communication.
- Build and program edge nodes using Raspberry Pi and ESP32, orchestrate sensor-actuator pipelines with Node-RED, and integrate device state bidirectionally with AWS IoT Core using secure MQTT-over-TLS.
- Apply compact binary serialization (Protocol Buffers, CBOR, MessagePack), X.509 mutual TLS fleet provisioning, and offline-first conflict resolution to constrained IoT channels.
Key topics
- Android MVVM & Jetpack
- IoT protocols & sensors
- Edge computing
- Offline-first & sync
Theoretical foundations
The concepts and results this course rests on.
- MVVM presentation architecture: ViewModel lifecycle separation, reactive state streams (StateFlow/LiveData), repository abstraction layer, and back-stack navigation management
- Declarative reactive UI composition: state hoisting, recomposition model, adaptive layouts, and density-independent sizing for device form factors
- Structured cooperative concurrency: suspend/resume execution model, coroutine dispatcher pools (IO, CPU, Main), and backpressure-aware reactive streams
- MQTT publish-subscribe semantics: broker topology, QoS levels 0/1/2, persistent sessions, retained messages, and Last Will and Testament
- CoAP constrained REST: Observe option, block-wise transfer, confirmable messages, DTLS security, and OSCORE
- IoT cloud platform integration: device registration and provisioning, bidirectional shadow/twin state synchronization, rule-based event routing, and MQTT-over-TLS
- Edge computing and pre-aggregation: fog node processing, delta compression, offline buffering, and sync conflict resolution
- IoT device authentication: X.509 mutual TLS, fleet provisioning, certificate rotation, and zero-touch onboarding
- Flow-based IoT programming: visual pipeline composition for sensor-actuator orchestration, digital twin state modeling, and dashboard-driven device monitoring
- Constrained data serialization: compact binary formats (Protocol Buffers, CBOR, MessagePack) and schema evolution for bandwidth-limited channels
Prerequisites
Course-specific prerequisites:
- Programming fundamentals
- Operating systems and computer networks
Weekly schedule 13 weeks · lecture + practice
Students use AI assistants to scaffold Kotlin and Jetpack Compose screens, refactor ViewModel and Repository code, and generate Room entity mappings and WorkManager chains. They prompt tools to write MQTT and CoAP client code, simulate sensor streams, and produce Node-RED flow configurations, while connecting agents to broker and device MCP endpoints to inspect message flows. AI helps reason about offline-first state, protocol QoS trade-offs, and binary serialization schemas. Because generated sync code can corrupt data under partition or conflict, students test every suggestion against realistic offline and connectivity-resumption scenarios.
Student project
Teams build one connected system spanning an Android mobile app, one or more IoT sensors wired to a Raspberry Pi edge node, and an edge processing component that filters and aggregates sensor data locally. The system communicates device-to-edge over MQTT and edge-to-app over CoAP, operates fully offline, and synchronizes state reliably with automatic conflict resolution when connectivity resumes. Each increment extends the device-to-cloud pipeline.
Requirements
- Build a working system, not a set of disconnected exercises.
- Be original: a new system that solves a real problem, not a re-implementation of a tutorial or course demo.
- Show real depth: real data, real users or realistic load, and engineering trade-offs that are measured rather than assumed.
- Carry one running project from specification to a deployed, defensible result across the whole term.
- Work in a team of three or four and defend the design at each of the three presentations (weeks 5, 8, and 13).
Example projects
Assessment & grading
Grading is project-based, with no written exam. Teams of three or four present one running project three times.
| Component | What it covers | Weight |
|---|---|---|
| Project · Specification | Presentation 1 (week 5): problem, objectives, and architecture | 20% |
| Project · Interim | Presentation 2 (week 8): the working system demonstrated live | 30% |
| Project · Final | Presentation 3 (week 13): end-to-end demo with oral defense | 50% |
Career roles
Industry roles this course prepares students to enter.
Android Engineer
Builds Android applications in Kotlin with Jetpack Compose, structures projects around ViewModel and Repository patterns, implements local persistence with Room and DataStore, handles background work within battery and doze-mode constraints using WorkManager, integrates REST APIs with Retrofit and Kotlin Coroutines, and tests with Espresso and unit tests on the JVM.
IoT Platform Engineer
Designs and deploys device-to-cloud pipelines using MQTT brokers and CoAP endpoints, authors Node-RED flows for sensor-actuator orchestration, provisions Raspberry Pi edge nodes, defines QoS policies and broker topology for reliable delivery at scale, and implements secure device authentication with certificate provisioning.
Tools & platforms
- Kotlin: write Android applications with concise, null-safe JVM code
- Jetpack Compose: build declarative Android UIs with reactive state and material design
- Room (SQLite): persist structured data locally with DAO-backed entity mapping
- WorkManager: schedule battery-aware background tasks under doze-mode constraints
- Eclipse Mosquitto: deploy and configure a high-throughput MQTT broker
- paho-mqtt: publish and subscribe over MQTT from Python and Android clients
- aiocoap: build async CoAP servers and clients with Observe and DTLS
- Node-RED: compose visual IoT data flows and digital twin dashboards
- AWS IoT Core SDK: register devices, synchronize shadow state, and route events in AWS IoT Core
- Raspberry Pi / ESP32: host edge compute nodes and wire physical IoT sensors
Free online courses
Existing free, video-based courses this course can build on, for self-study or as a teaching basis.
In Hebrew · בעברית
Primary literature
Seminal works for advanced study.
- PaperThe Computer for the 21st Century
- PaperThe Case for VM-Based Cloudlets in Mobile Computing
- PaperFog Computing and Its Role in the Internet of Things
- PaperConflict-free Replicated Data Types
- PaperLocal-first Software: You Own Your Data, in Spite of the Cloud
- PaperRFC 7252: The Constrained Application Protocol (CoAP)
References
Books and resources link to an online or publisher page.
- DocumentationAndroid Developer Documentation
- TextbookDesigning the Internet of Things
- DocumentationMQTT Specification (OASIS Standard)
- DocumentationRFC 7252: The Constrained Application Protocol (CoAP)
- PaperEdge Computing: Vision and Challenges
- PaperLocal-first software: You own your data, in spite of the cloud
- PaperLocal-first software (ACM Onward! 2019 proceedings)
Role in each concentration
| Concentration | Role |
|---|---|
| Intelligent Software Systems | Core · Semester 2 |
| Networking & Cyber Security | Elective |
| AI & Robotics | Elective |
| AI and Quantum Computing for Finance | Elective |
| Immersive Systems & Game Development | Core · Semester 1 |
| Defense Technologies & Autonomous Systems | Core · Semester 2 |