84401 - Context-Aware Systems

Academic Year 2023/2024

  • Moduli: Marco Di Felice (Modulo 1) Angelo Trotta (Modulo 2)
  • Teaching Mode: Traditional lectures (Modulo 1) Traditional lectures (Modulo 2)
  • Campus: Bologna
  • Corso: Second cycle degree programme (LM) in Computer Science (cod. 5898)

Learning outcomes

At the end of the course, the student is able to design, deploy and evaluate ubiquitous systems and mobile applications able to adapt their behaviors to the context characteristics and to the current location/activity of the user. At the end of the course, the student: -knows the fundamental concepts of context-aware computing, and the main techniques for the localization of users/devices and the human activity recognition; -knows the fundamental models of context-data representation and managing; - knows the main middleware and software architectures in order to deploy adaptive and ubiquitous applications and services

Course contents

The course addresses the design and deployment of ubiquitous and context-aware services and applications, made possible  by the pervasive diffusion on the market of devices able to sense the environment and to analyze the sensed data. The course program is structured in two main parts. The first part illustrates the definition of "context" and context-aware systems, focusing on the design and implementation of location-aware and activity-aware systems. Special focus will be given to the spatial data management, by illustrating the main technologies for indoor/outdoor positioning, mapping APIs,  geo-data storage and location intelligence.The second part will present the  lifecycle of distributed context-aware applications by focusing on mobile edge computing systems where the allocation of workloads take into account contextual data, such as the user position. To this aim, we will introduce edge-computing technologies and frameworks for software containerization (e.g., Docker), task orchestration (e.g., Docker Swarm and Kubernates), and workload/service migration based on users' mobility. In the following, we provide a brief summary of the course program:

Introduction and definition of context and context-awareness

Use case of context-aware systems

Location-aware systems

  • Location-based services (LBS)
  • Positioning technologies
  • Mapping APIs
  • Spatial database
  • Location intelligence
  • Privacy in LBS

Activity-aware systems

  • Human Activity Recognition (HAR): enabling technologies
  • Supervised AI/ML techniques for HAR systems

Mobile edge computing 

  • Architectures and applications of mobile edge computing
  • Software containerization (Docker)
  • Workload/service orchestration (Docker Swarm, Kubernates)
  • Metrics for context-aware/location-aware workload allocation

Readings/Bibliography

Slides are available on the course website:

https://site.unibo.it/iot/en/teaching-1/context-aware-systems

Suggested readings:

  • Richard Ferraro, Murat Aktihanoglu, Location Aware Applications, Manning Editions
  • Stefan Posland, Ubiquitous Computing: Smart Devices, Environments And Interactions, Wiley Edition

Teaching methods

The teaching methods include frontal lectures and classroom exercises.

Assessment methods

The course considers two assessment methods: a student seminar (mandatory) and a group project (mandatory). The seminar is scheduled on the last week of the course calendar, and it consists in a 20-30 minutes presentation, illustrating a specific research topic related to the course program; sources of the seminar can be research papers or software tools. The project consists in the deployment of a software application providing features of context-awareness and mobility support. The project specification are provided by the lecturer or by the students. The final score is computed as the average of the scores of the seminar and of the project. 

 

Teaching tools

Teaching materials (slides, code examples) are made available to students through the Virtuale platform.

Office hours

See the website of Marco Di Felice

See the website of Angelo Trotta