• Course code:63776
  • Credits:6
  • Semester: winter
  • Contents

Some of the major challenges that the humanity faces are related to energy. These include the global warming, which is a direct consequence of the kind and the amount of energy we use, but also limitations related to transport, heating and cooling, agriculture, medicine, and other areas. Information and communication technology (ICT) has recently gained focus due to its potential for optimizing energy consumption. For instance, in a “smart” building Internet of things (IoT) sensors could provide detailed occupancy and temperature information, which could then be used for efficient fine-grain cooling and heating. However, ICTs have also came into focus due to an increasing amount of energy they consume. Blockchain, large AI models, and other computing technology-related advances already make ICTs one of the fastest growing consumers of global energy. Diving down to the level of a single device, energy consumption is crucial as computing becomes ubiquitous. Battery-powered devices’ utility is directly related to the way the battery power is used.

In this class we will build the basic knowledge of energy constrained device programming. More specifically, we will:

  • Introduce the electrical mechanisms that cause power to be dissipated, and then learn how to assess power consumption of both whole systems and specific components of IoT devices.
  • Present different techniques for resource-efficient computing at the level of operating system and applications.
  • Discuss adaptive duty cycling and hierarchical sensor activation for judicious use of battery energy in sensing, one of the most resource-demanding affordances of IoT devices.
  • Discuss wireless communication and present means of reducing energy consumption through intermittent connectivity and transmission rate adaptation.
  • Present the basics of energy management in mobile systems.
  • On the example of Android, the most popular mobile OS in the world, we demonstrate batching for resource-efficient background task processing.
  • Investigate human aspects of mobile usage and means of detecting a user’s involvement in order to prevent resource wastage in mobile computing.
  • Present an overview of the cutting-edge techniques in approximate mobile computing, a paradigm that allows a controlled reduction of computation accuracy, if the result achieved through such computation remains acceptable by the end user.

Two practical projects will be executed: one on Raspberry PIs, the other on Android smartphones. The programming language of choice is C for Raspberry PI (with some Python for data analysis) and Kotlin (no previous knowledge needed) for Android. The class is taught in English.

  • Study programmes
  • Distribution of hours per semester
45
hours
lectures
15
hours
laboratory work
15
hours
tutorials
  • Professor
Instructor
Room:R3.70 - Kabinet