{"id":2,"date":"2021-03-15T13:50:15","date_gmt":"2021-03-15T13:50:15","guid":{"rendered":"http:\/\/iotsoftware.neslab.it\/?page_id=2"},"modified":"2021-03-19T06:51:44","modified_gmt":"2021-03-19T06:51:44","slug":"sample-page","status":"publish","type":"page","link":"https:\/\/iotsoftware.neslab.it\/","title":{"rendered":"Overview"},"content":{"rendered":"\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p>Since 2017, I have been teaching the&nbsp;<strong>fundamentals of IoT software<\/strong>&nbsp;for resource-constrained devices in a number of different settings, from summer schools to full-fledged graduate courses. As colleagues more and more often asked to share the material I created over the years, I eventually decided to make the courseware I develop on this topic publicly available under a Creative Commons BY-NC 4.0 license.<\/p>\n\n\n\n<p>The material teaches the fundamentals of developing networked embedded IoT applications using a distinctly hands-on approach: concepts are briefly introduced abstractly and immediately put in practice. Short exercises placed at strategic points in the flow allow students to experiments as soon as possible with what they learn. The sequence of topics is also thought to allow one to slice the course based on time available and scheduling constraints.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-full is-resized is-style-default\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/B-L4S5I-IOT01A_SPL.jpg?resize=269%2C196\" alt=\"\" class=\"wp-image-66\" width=\"269\" height=\"196\" srcset=\"https:\/\/i0.wp.com\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/B-L4S5I-IOT01A_SPL.jpg?w=600&amp;ssl=1 600w, https:\/\/i0.wp.com\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/B-L4S5I-IOT01A_SPL.jpg?resize=300%2C220&amp;ssl=1 300w\" sizes=\"auto, (max-width: 269px) 100vw, 269px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>Programming is based on&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/www.contiki-ng.org\/\" target=\"_blank\">Contiki-NG<\/a>&nbsp;and&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/www.mbed.org\/\" target=\"_blank\">Mbed<\/a>, using simulations or real hardware. Should you want to adopt the entire material in your course, your students need to be equipped with:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>A reasonably modern machine to run&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/www.virtualbox.org\/\" target=\"_blank\">VirtualBox<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.ti.com\/tool\/LAUNCHXL-CC2650\" target=\"_blank\">Texas Instruments CC2650 or CC1350 Launchpads<\/a>&nbsp;for Contiki-NG<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.ti.com\/tool\/BOOSTXL-SENSORS\" target=\"_blank\">Texas Instruments BOOSTXL-SENSORS Sensors Booster Pack<\/a>&nbsp;for Contiki-NG<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.st.com\/en\/evaluation-tools\/b-l475e-iot01a.html\" target=\"_blank\">STMicroelectronics B-L475E-IOT01A Discovery Kit<\/a>&nbsp;for Mbed<\/li><\/ul>\n\n\n\n<p>The material I&#8217;m making available includes the complete slide decks in modifiable form, custom forks of the official repositories adapted to this course, a preconfigured virtual machine for running Contiki-NG, and (soon) an accompanying booklet. The hands-on part of Mbed uses the <a rel=\"noreferrer noopener\" href=\"http:\/\/os.mbed.\" data-type=\"URL\" data-id=\"os.mbed.\" target=\"_blank\">free online compiler<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><strong>Lecture Material<\/strong> (last update March 19th, 2021)<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/local\/1-Intro.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/local\/1-Intro.pptx\" target=\"_blank\">Introduction to IoT Software<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/2-Architectures.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/2-Architectures.pptx\" target=\"_blank\">IoT Software Architectures<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/3-Protothreads.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/3-Protothreads.pptx\" target=\"_blank\">Concurrency and Contiki-NG Protothreads<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/4-COOJA.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/4-COOJA.pptx\" target=\"_blank\">The COOJA Simulator<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/5-Timers.pptx\" data-type=\"URL\" target=\"_blank\">Contiki-NG Timers<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/6-Networking.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/6-Networking.pptx\" target=\"_blank\">IoT Networking<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/7-RPL.pptx\" target=\"_blank\">RPL in Contiki-NG<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/8-CC2650.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/8-CC2650.pptx\" target=\"_blank\">TI CC2650\/CC1350 with Contiki-NG<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/9-Shell.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/9-Shell.pptx\" target=\"_blank\">Contiki-NG Shell<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/10-HardSoftState.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/10-HardSoftState.pptx\" target=\"_blank\">Maintaining Distributed State<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/11-MQTT.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/11-MQTT.pptx\" target=\"_blank\">MQTT in Contiki-NG<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/12-Energy.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/12-Energy.pptx\" target=\"_blank\">Energy Management in Contiki-NG<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/13-Memory.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/13-Memory.pptx\" target=\"_blank\">Memory Handling in Contiki-NG<\/a> <\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/14-Mbed.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/14-Mbed.pptx\" target=\"_blank\">Introduction to Mbed<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/15-TimersThreads.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/15-TimersThreads.pptx\" target=\"_blank\">Mbed Timers and Threads<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/16-SensorsButtons.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/16-SensorsButtons.pptx\" target=\"_blank\">Mbed Sensors and Buttons<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/17-Advanced-Concurrency.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/17-Advanced-Concurrency.pptx\" target=\"_blank\">Advanced Concurrency in Mbed<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/18-BluetoothBLE.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/18-BluetoothBLE.pptx\" target=\"_blank\">Bluetooth and BLE<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/19-BLE.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/19-BLE.pptx\" target=\"_blank\">BLE in Mbed<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/20-Storage.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/20-Storage.pptx\" target=\"_blank\">Storage in Mbed<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/21-Production.pptx\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\/wp-content\/uploads\/2021\/03\/21-Production.pptx\" target=\"_blank\">Going into Production<\/a><\/li><li>Booklet (coming soon!)<\/li><\/ol>\n\n\n\n<p><strong>Hands-on Material<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a rel=\"noreferrer noopener\" href=\"http:\/\/owncloud.neslab.it\/owncloud\/s\/S6Bsf6wZzPYS23b\" target=\"_blank\">Preconfigured VM<\/a>&nbsp;for running Contiki-NG<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/bitbucket.org\/neslabpolimi\/contiki-ng-iot-software\/\" target=\"_blank\">GIT repository<\/a>&nbsp;for Contiki-NG source code<\/li><li><a href=\"https:\/\/os.mbed.com\/users\/lmottola\/code\/\" data-type=\"URL\" data-id=\"https:\/\/os.mbed.com\/users\/lmottola\/code\/\" target=\"_blank\" rel=\"noreferrer noopener\">Online repository<\/a> for Mbed source code (search for IOTSoftware-* projects)<\/li><\/ul>\n\n\n\n<p>I am also providing here the&nbsp;<strong>raw<\/strong>&nbsp;recordings of my lectures in the &#8220;Middleware Technologies&#8221; course at Politecnico di Milano in 2020, to give a taste of how I concretely use the material during lectures and about the interleaving between explanations and hands-on activities. The course was offered online because of the ongoing COVID19 pandemic and used only part of the material available here. Access to the recordings requires a (free) WebEx account.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a rel=\"noreferrer noopener\" href=\"https:\/\/politecnicomilano.webex.com\/politecnicomilano\/ldr.php?RCID=9dedce096c0c434c949805f2b9705784\" target=\"_blank\">Introduction to IoT Software, Architectures in IoT Software, Contiki-NG Protothreads<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/politecnicomilano.webex.com\/politecnicomilano\/ldr.php?RCID=b0f01231e91f4eaca9d8863baddba288\" target=\"_blank\">COOJA Simulator, Contiki-NG Timers, IoT Networking (1\/2)<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/politecnicomilano.webex.com\/politecnicomilano\/ldr.php?RCID=1757bb47f4784f808955b3d869ee9616\" target=\"_blank\">IoT Networking (2\/2), MQTT with Contiki-NG<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/politecnicomilano.webex.com\/politecnicomilano\/ldr.php?RCID=47d2036219994aa68087df516c605551\" target=\"_blank\">Energy and Contiki-NG<\/a><\/li><\/ul>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>I used this material at KTH, Uppsala University, TUD, University of Trento, and Politecnico di Milano in various courses, as well as in several summer schools. As far as I know, this material also was or is in use at these other institutions, in its entirety or partly. If you adopt it in your courses too, I&#8217;d appreciate it if you drop me an email and let me know how it goes!<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Universita della Svizzera Italiana (Switzerland), Dr. Alberto Ferrante<\/li><li>University of Murcia (Spain), Prof. Alexandra Jimborean<\/li><li>University of Cambridge (UK), Prof. Cecilia Mascolo<\/li><li>University College London (UK), Prof. Licia Capra<\/li><li>Shanghai Jiao Tong University (China), Prof. Yuan Hu<\/li><li>Chinese Academy of Science (China), Prof. Li Cui<\/li><li>University of Hong Kong (Hong Kong), Prof. Edith Ngai<\/li><li>Shanghai Technology Centre (China), Dr. Xin Lee<\/li><li>University of Virginia (US), Prof. Kamin Whitehouse<\/li><li>Politecnico di Milano (Italy), Prof. Tiziana Poli<\/li><li>Politecnico di Milano (Italy), Prof. Gianpaolo Cugola<\/li><li>University of Southern California (US), Prof. Viktor Prasanna<\/li><li>[to be completed, more to come&#8230;]<\/li><\/ul>\n\n\n\n<p>While I intend to continuously update the material, I cannot provide absolute guarantees on consistency or correctness and I am providing it &#8220;as-is&#8221;.<\/p>\n\n\n\n<p><a href=\"http:\/\/iotsoftware.neslab.it\" data-type=\"URL\" data-id=\"http:\/\/iotsoftware.neslab.it\">Fundamentals of IoT Software<\/a> by <a rel=\"cc:attributionURL dct:creator\" property=\"cc:attributionName\" href=\"http:\/\/mottola.faculty.polimi.it\">Luca Mottola<\/a> is licensed under <a rel=\"license noopener noreferrer\" style=\"display:inline-block;\" href=\"http:\/\/creativecommons.org\/licenses\/by-nc\/4.0\/?ref=chooser-v1\" target=\"_blank\">CC BY-NC 4.0<\/a>. <a rel=\"license noopener noreferrer\" style=\"display:inline-block;\" href=\"http:\/\/creativecommons.org\/licenses\/by-nc\/4.0\/?ref=chooser-v1\" target=\"_blank\"><img decoding=\"async\" style=\"height:22px!important;margin-left:3px;vertical-align:text-bottom;\" src=\"https:\/\/mirrors.creativecommons.org\/presskit\/icons\/cc.svg?ref=chooser-v1\"><img decoding=\"async\" style=\"height:22px!important;margin-left:3px;vertical-align:text-bottom;\" src=\"https:\/\/mirrors.creativecommons.org\/presskit\/icons\/by.svg?ref=chooser-v1\"><img decoding=\"async\" style=\"height:22px!important;margin-left:3px;vertical-align:text-bottom;\" src=\"https:\/\/mirrors.creativecommons.org\/presskit\/icons\/nc.svg?ref=chooser-v1\"><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Since 2017, I have been teaching the&nbsp;fundamentals of IoT software&nbsp;for resource-constrained devices in a number of different settings, from summer schools to full-fledged graduate courses. As colleagues more and more often asked to share the material I created over the years, I eventually decided to &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"open","template":"","meta":{"jetpack_post_was_ever_published":false,"footnotes":""},"class_list":["post-2","page","type-page","status-publish","hentry"],"jetpack_shortlink":"https:\/\/wp.me\/PcWJLD-2","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/iotsoftware.neslab.it\/index.php\/wp-json\/wp\/v2\/pages\/2","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iotsoftware.neslab.it\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/iotsoftware.neslab.it\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/iotsoftware.neslab.it\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iotsoftware.neslab.it\/index.php\/wp-json\/wp\/v2\/comments?post=2"}],"version-history":[{"count":52,"href":"https:\/\/iotsoftware.neslab.it\/index.php\/wp-json\/wp\/v2\/pages\/2\/revisions"}],"predecessor-version":[{"id":127,"href":"https:\/\/iotsoftware.neslab.it\/index.php\/wp-json\/wp\/v2\/pages\/2\/revisions\/127"}],"wp:attachment":[{"href":"https:\/\/iotsoftware.neslab.it\/index.php\/wp-json\/wp\/v2\/media?parent=2"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}