Topic outline

  • Important Links 


    Course Overview

    The Internet of Things (IoT) is a key concept in the digitization of society since it allows 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 parts that are composed of several lectures, and a project work:

    1. Lecture 1: Introduction (on 10.01.2023 Tuesday @ 12:15 on the General channel of Course teams)
    2. Part I: Basics of C++ programming (3 weeks)
    3. Part II:  IoT device programming (5 weeks)

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

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


    Part I (Online)

    In Part 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 Part I.
    The lectures in this module and their deadlines are as follows:

    • Lecture 1 (A+): Getting Started (Deadline 15.01.2023 Sunday)
    • Lecture 2 (A+): Basics of C++ (Deadline 20.01.2023 Friday)
    • Lecture 3 (A+): Containers in C++ (Deadline 27.01.2022 Friday)
    • Lecture 4 (A+): Classes and object-oriented programming (Deadline 03.02.2022 Friday) 


    Part II (Hybrid)

    In Part 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 the 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 the 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 Part 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 Part II.

    The lectures are as follows:

    • Lecture 5 (Content on A+, exercises in classroom): IoT device hardware (Lecture 07.02.2022 Tuesday
    • Lecture 6 (Content on A+, exercises in classroom): IoT device software (Lecture 14.02.2022 Tuesday)
    • Lecture 7 (Content on A+, exercises in classroom): Introduction to Bluetooth Low Energy (Lecture 28.02.2022 Tuesday)
    • Lecture 8 (Content on A+, exercises in classroom): Bluetooth Low Energy Services (Lecture 07.03.2022 Tuesday)
    • Lecture 9 (Content on A+, exercises in classroom): Bluetooth Low Energy Security (Lecture 14.03.2022 Tuesday)

    Programming Project

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

    • You will be assigned a project topic after finishing Part II.
    • The topic will be a basic integration of the exercises in Part 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 Part 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 Part 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 Part 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 your solution 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 Part II, you will read the lecture contents on the 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. Part I weighs 20% 
    2. Part 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 Part I Points 
    • \(\text{MP}_2\) is Part 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 Lecture 1: Introduction on 10.01.2023 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 (top right corner). Once you have logged in, an account will be created for you. Then, send a message over course Teams by directly mentioning @Ali Yusein.