Tutorial Description
To obtain the most benefit out of edge computing, we need to rethink how applications are developed, deployed, and orchestrated on to the cloud, edge, and IoT resource stack. This tutorial will have three parts. First part will examine the important issues introduced by edge computing for programming IoT applications. The IoT applications primarily want to use edge computing for low-latency resource accesses. Other benefits they seek from edge computing include context-sensitive processing (including machine learning at the edge) and reduced network loading. We will examine IoT with and without mobility (e.g., vehicular IoT). Also, in this part, we introduce many edge programming patterns that could be used in existing and future application scenarios. The second part will discuss a programming language expressly designed for programming the cloud, edge and IoT resource stack. We will introduce the language (JAMScript) in depth and illustrate how it supports edge processing. In particular, its support for handling high-speed data processing at the edge, adaptive placement of functions at the edge or cloud, and failover from edge to edge or edge to cloud will be examined. The language itself is a fusion of C and JavaScript with additional constructs to support remote procedure calls and coordinating the data placements. The third part of the tutorial will show example application designs and their implementations using JAMScript. These example applications will be deployed on a Docker container-based emulator and very large cloud, edge, and IoT configurations will be run. A hands-on exercise on JAMScript will be provided for the tutorial participants that will show how JAMScript and the emulator could be used for developing interesting large-scale edge applications.
Tutorial Outline (180 mins)
1. Rethinking applications for the edge
2. Edge programming patterns
3. A programming language design for cloud, edge (fogs), and IoT
4. Introducing JAMScript: A language for edge processing
5. Disconnection and fault tolerance in JAMScript
6. Running JAMScript experiments in a desktop, emulator, and IoT devices
7. Example edge computing application design
8. Hands-on session: deploying JAMScript, running example application, developing example applications
Presenter Bio
Muthucumaru Maheswaran is an associate professor in the School of Computer Science and Department of Electrical and Computer Engineering at McGill University. He got a PhD in Electrical and Computer Engineering from Purdue University, West Lafayette and a BScEng degree in Electrical and Electronic Engineering from the University of Peradeniya, Sri Lanka. He has researched various issues in scheduling, trust management, and scalable resource discovery mechanisms in Clouds and Grids. Many papers he co-authored in resource management systems have been highly cited by other researchers in the area. Recently, his research has focused in security, resource management, and programming frameworks for Cloud of Things. He has supervised the completion of 8 PhD theses in the above areas. He has published more than 120 technical papers in major journal, conferences, and workshops. He holds a US patent in wide-area content routing.
Previous Offering and Tools
This tutorial will be a revised version of the tutorial to be offered at IEEE NetSoft 2018 on June 29, 2018. For details, please see: http://netsoft2018.ieee-netsoft.org/program/tutorials/.
The software tool (JAMScript is available as open source at github. The documentation site (under construction) is available at: https://anrl.github.io/JAMScript-beta.