Topic outline

  • Course Overview

    Internet of Things (IoT) is a key concept in the digitization of society, by allowing data acquisition of different physical phenomena without human intervention to reach the goals set by novel applications and services. It also refers to an extension of the Internet and other network connections toward simple devices (things)deployed in our daily living environment to allow the cyber world to interact with the physical world. This course focuses on Machine-type communications (MTC) technologies, which enable automated data communications among devices, but also must be extended toward core communication technologies using some data transport infrastructure. This course outlines the basic technologies required to develop an IoT application using simple devices.

    Block diagram of an IoT system

    The complete IoT system is very complex and requires several technologies to successfully interact with each other as shown in the figure above. This course covers the basic development concepts on the Device Side.

    Learning outcomes

    After the course, the student will be able to

    • learn basic concepts of C++ language 
    • use C++ language to develop simple object-oriented software
    • analyze the key requirements of a given IoT application on the device side 
    • use C++ language to develop device-side software to meet the requirements

    Organization


    Lectures

    The course is composed of an introductory lecture, two modules and a final recap lecture:

    1. Lecture 1: Introduction (on 11.01.2022 Tuesday @ 12:15 on General channel of Course teams)
    2. Module I: Basics of C++ programming (3 weeks)
    3. Module II:  IoT device programming (6 weeks)
    4. Lecture 10: Applications of Bluetooth Low Energy (29.03.2022 Tuesday @ 12:15 on General channel of Course teams )


    Lecture 1 (on 11.01.2022 Tuesday @ 12:15 on General channel of Course teams)

    The lecture covers an introduction to the course, scope, organization, and grading.


    Module I (Online)

    In module I, you will be required to complete 3 Lectures on the A+ instance of this course.

    • Each lecture has some programming tasks that you will be required to implement on your local machine and submit to the system for automatic grading. 
    • You can collect at most 100 points for each of the three lectures, max. total 300 points
    • You are required to get at least 50 points from each lecture of Module I.
    The lectures in this module and their deadlines are as follows:

    • Lecture 2 (A+): Basics of C++ (Deadline 21.01.20222)
    • Lecture 3 (A+): Containers in C++ (Deadline 28.01.2022)
    • Lecture 4 (A+): Classes and object-oriented programming (Deadline 04.02.2022) 


    Module II (Hybrid)

    In module II, we will have a hybrid teaching method, where you will be able to access the course material on A+ instance before coming to the exercise session.  The exercise sessions will be in a classroom.

    • You will be provided nRF52-DK boards in the exercises sessions
    • You will implement and test the defined exercise
    • You will be working as a group of 2 or 3 students
    • You will write a self-reflection report for the exercise. 

    1. Introduction
      • What was the purpose of Lecture
      • What was known and familiar beforehand?
    2. Method
      • What was the exercise about? Its purpose and relation to the content
      • What were you expecting to observe?
    3. Results
      • What have you observed? 
      • Why?
    4. Discussion
      • What did you learn?
    5. Conclusion
      • What did you learn, because you are in the course?
      • What remained unclear?
    • You will submit your report to A+ system.
    • You will receive an email with an attachment of another student's report and evaluate it. The evaluation guidelines will be announced before Module II starts.
    • Each lecture report can get a max of 100 points.  
    • You must get at least 50 points from 4 of 5 Lectures in Module II.

    The lectures are as follows:

    • Lecture 5 (Content on A+, exercises on classroom): IoT device hardware (15.02.2022 Tuesday @ 12:15
    • Lecture 6 (Content on A+, exercises on classroom): IoT device software (01.03.2022 Tuesday @ 12:15)
    • Lecture 7 (Content on A+, exercises on classroom): Introduction to Bluetooth Low Energy (08.03.2022 Tuesday @ 12:15)
    • Lecture 8 (Content on A+, exercises on classroom): Bluetooth Low Energy Services (15.03.2022 Tuesday @ 12:15)
    • Lecture 9 (Content on A+, exercises on classroom): Bluetooth Low Energy Security (22.03.2022 Tuesday @ 12:15)


    Lecture 10 (on 29.03.2022 Tuesday @ 12:15 on General channel of Course teams)

    The last lecture will be on IoT applications of Bluetooth Low Energy.


    Programming Project

    You will be assigned a programming project after completing Module II that aims at combining all covered aspects of Bluetooth Low Energy device programming. 

    • You will be assigned to a project topic after finishing Module II.
    • The topic will be a basic integration of the exercises in Module II.
    • You will be required to test your implementation on nRF52-DK boards.
    • You will write a report on the project following the same outline as the outline of Module II exercise reports.
    • You can collect at most 100 points for the project
    • You must get at least 50 points
    • You will be required to complete the project by 14.04.2022, and submit your report as a part of the learning diary.


    Learning Diary

    You will be required to write a learning diary for the course where you reflect on your learning from the course. 

    • Each report of Module II exercises will be a section of the diary.
    • The project report will also be a section of the diary.
    • The last section should reflect on the whole course, and especially on your own learning process.
      • How well did you learn the topics?
      • Did your learning process change during the course?
      • Did your expectations of the subject matter change, broaden, or narrow during the course?
      • What grade would you give yourself?
    • You can get a maximum of 100 points from the diary. 
    • You must submit a diary.
    • You should get at least 50 points.

    The evaluation of the diary sections will be announced later.

    Work Load

    • In module I, you will be reading material on the A+ instance of this course, where you will be assigned different C++ programming tasks. Once you submit to the system, your submission will be automatically graded. You will be able to collect 100 points for each Lecture. For each lecture, you must get at least 50 points.
    • In module II, you will read the lecture contents on A+ instance of this course, and you will find the exercise descriptions therein. After completing the exercises, you will be required to a short report (a section of the learning diary) to the system. We will randomly distribute the submitted reports between each other, and you will be required to evaluate each other's reports (We will describe the process in the lectures). For each lecture, you can collect 100 points. You must get 50 points or more from at least 4 Lectures.
    • The programming project report will be a part of the learning diary. You can collect a maximum of 100 points. You must get a minimum of 50 points.
    • Learning diary worth is at a maximum of 100 points. You must submit a learning diary and you should get at least 50 points.

    Grading

    1. Module I weighs 20% 
    2. Module II weighs 50% 
    3. Programming Project weighs 20%  
    4. Learning Diary weighs 10%

    Your grade will be calculated using the following formula

    \( 0.20 \times \frac{\text{MP}_1 - 150}{150} \times 5 + 0.50 \times\frac{\text{MP}_2}{500}\times 5 + 0.20 \times\frac{\text{PP}}{100}\times 5 + 0.10 \times\frac{\text{LDP}}{100}\times 5 \)

    where 
    • \(\text{MP}_1\) is Module I Points 
    • \(\text{MP}_2\) is Module II Points 
    • \(\text{PP}\) is Programming Project points
    • \(\text{LDP}\) is Learning Diary points 

    Communication

    The course uses Microsoft Teams as the primary communication method. If you are not added to the course Teams, please click the link to make a request to join it. 

    You will see different channels. If you have a question related to a certain lecture, check the proper channel name and post your question there. Otherwise, there is a high risk that your question will not be answered.

    Getting Started

    1. Check that you are a member of the course Teams.
    2. Check that you can access the A+ instance of this course.
    3. Attend the Lecture 1: Introduction on 11.01.2022 Tuesday @ 12:15 organized online at General channel of Course teams.

    Important

    If you are not able to login to A+ system, go to plus.cs.aalto.fi and login there. Once you have logged in, an account will be created for you. Then, send a message over course Teams by directly mentioning @Ali Yusein.