Information for current:

Principles and Design of IoT Systems


All students wishing to take this course should attend the first lecture at 10am, Tuesday 19th September in G.16 Seminar Room - Doorway 4 - Medical School, and the tutorial at 11am in Room AT 3.02.

Week 1 Update

Thanks to everyone who attended the introductory lecture and tutorial. These IoT Setup Instructions explain how to program the board with the provided example firmware images and provide some links for background reading.

Week 2 Update

Source code for interfacing with the sensor board and streaming gyro or accelerometer values is available as an mbed project. You can import into your online compiler workspace by clicking the Import into Compiler button.

Week 4 Update

Here are the slides from the tutorial on 10 October. Note that Android Studio 3 is available on the dice machines.

A Github repository has been set up to share walking sensor data. See the readme file for the agreed data format. Please email your github username to to gain access.

Week 5 Tutorial

By the end of this tutorial everyone should have an end-to-end system which can be used to collect walking motion data. We will cover the following:

Week 6 Tutorial

This week you should demonstrate a first prototype of your steptracking system. This should be an android app which communicates wirelessly with the mbed board to provide a step count.

Note that some groups have had problems with running mbed code when not connected to the PC. This appears to be an mbed bug and you won't be penalised for this. Long USB cables will be provided so you can still demonstrate your system, whilst remaining tethered to a PC or laptop.

The demonstration and feedback should take around 10 minutes per group. Note that any feedback is designed to help you and will not be marked at this point.

Week 7 Tutorial

The tutorial will cover ways to refine the systems that were demonstrated last week and will include the following:

Reminder: Please upload any test data you have collected to the group GitHub repository.

Pressure Sensor Update

The previous pressure sensors that we ordered are delayed, but we have ordered some replacements which should be here this week and will be left in the lockers on Level 3.

The sensor is a Bosch BMP2980 and is mounted on a Grove breakout board. There are mbed libraries already available, as this is a very common sensor. You can communicate with it via i2C in a similar way to the MPU sensor.

Week 8 Tutorial

This week we distributed the boxes, pressure sensors and I2C splitter cables. Here are some notes to help you integrate the sensor into your design.

Week 9 Update

Tomorrow's tutorial will focus on detecting stair climbing and preparing for the second integration demonstration in week 10. An updated coursework document has also been issued.

Course Description

PDIoT is a Level 11 course (worth 20 credits) offered for the first time in the academic year 2017-18. The principles underlying the design of Internet of Things are taught in a series of 10 lectures delivered in the first 5 weeks of Semester 1, and examined in the April diet of exams (30% of the marks). PDIoT has a major coursework component (70% of the marks) undertaken by students working in pairs, and involving the end-to-end design of an IoT system based on wireless sensors, from specification to its implementation, and the demonstration of a working prototype at the end of the semester.

Lecture times (Week 1 - 5 only)

Tuesdays 10:00 - 10:50 LG.11 David Hume Tower (week 1 lecture in G.16 Seminar Room - Doorway 4 - Medical School)

Fridays 10:00 - 10:50 G.08 1 GSQ

Tutorial times (Week 1 - 11)

One slot on Tuesdays, 11:00, 12:00 or 13:00 - Room 3.02, Appleton Tower


Introductory Machine Learning, Computer Communications and Networking courses. Please consult the lecturer in case you wish to take this course but don't have the necessary pre-requisites. We can waive them on a case-by-case basis.

Contact Details

Lecturer: Professor D K Arvind (

Course Tutor: Andrew Bates (


Week 1

Overview of IoT: industrial, wearable, environmental, healthcare, and digital media, illustrated with videos of case studies; architecture of a typical IoT system and its components; Overview of privacy and security issues; Sensors and actuators - Introduction to commonly-used sensors/actuators, mode of operation, and data format.

Week 2

Sensor fusion algorithms: data from homogeneous and heterogeneous sensors; examples include quaternion calculations with 6-DOF IMU sensor for 3D animation.

Lecture Slides Week 1 - 2

Week 3

Sensor data analytics: calibration of sensor data against reference sensors; use of Bland-Altman plots for sensor data comparisons, illustrated with examples in healthcare and environmental monitoring.

Lecture Slides Week 3

Week 4

Sensor data analytics: Methods for pre-processing and feature extraction methods in time-series sensor data - Time warp algorithm; Principal component analysis; feature extraction methods illustrated with examples of IoT for wellbeing, musical instrument tutoring.

Lecture Slides Week 4 (updated)

Week 5

Sensor data analytics: Classification methods using Machine Learning/Hidden Markov models (Naïve Bayes, k-NN, Decision Tree, Logistic Regression, Mulitlayer Perceptron, SVM) applied to features in time-series sensor data, illustrated with examples in sports, healthcare.

Lecture Slides Week 5


Issued on 19th September 2017; Deadline: 19th January 2018

The PDIoT coursework (worth 70% of the marks) is conducted by students working in pairs to develop an Internet of Things application based on wireless sensors. Students will experience the different stages in the design and implementation of a complex system, from its specification to the demonstration of a working prototype and evaluation of its performance. You will be exposed to aspects of embedded systems programming, sensor data analytics using machine learning techniques, wireless protocols, user interface design, system integration and testing.

More details are available on the coursework page.


On completion of this course, the student will have:

  1. An understanding of the constituent parts of a typical IoT system, the operation of a selection of sensors and actuators, and an appreciation of methods employed to address the security and privacy issues in IoT.
  2. Knowledge of a selection of sensor fusion algorithms, and data analytic methods for pre-processing of time-series sensor data, feature extraction and its classification, and illustrated with case studies.
  3. Gained expertise in the end-to-end design of a practical IoT system employing the principles taught in the lectures, and the quantitative evaluation of performance in terms of speed, memory usage and power consumption.
  4. Experience working with another team member with complimentary skill sets, and develop skills in requirements capture, user interface design, project management, negotiations and verbal and written presentations.
  5. Experience using tools such as compilers for IoT development board using inertial sensors.

Home : Teaching : Courses 

Informatics Forum, 10 Crichton Street, Edinburgh, EH8 9AB, Scotland, UK
Tel: +44 131 651 5661, Fax: +44 131 651 1426, E-mail:
Please contact our webadmin with any comments or corrections. Logging and Cookies
Unless explicitly stated otherwise, all material is copyright © The University of Edinburgh