Home » Teaching » Programming context-aware systems

Programming context-aware systems

This page describes the short course “Programming context-aware systems” developed for and originally presented at the Swiss Doctoral Winter School at Ovronnaz outside Lausanne in January 2012. The course consisted of four 90-minute lectures (6 hours total) split evenly between discussing how to construct context models and their use by reasoning systems within a wider software engineering framework.


We are already seeing the emergence of services and mobile apps that demonstrate simple context awareness: the ability to change what they do, how they do it, and how they present themselves to their users, that varies depending on the circumstances of their use. Ensuring that such systems operate as expected, and in particular ensuring that their varying behaviour is “correct” in some sense with respect to the outside world, is a major challenge for software engineering. Not least among the issues to be addressed is the fact that the input data from sensors and other sources is often inaccurate, noisy and uncertain, whilst also being richly structured. These characteristics suggest that that we need to find a different style of programming for developing context-aware systems.

This course looks at context awareness “end-to-end”, covering the integration of sensors and other data sources, the structuring of data, data, its analysis and use within adaptive services — all within the framework of the semantic web. It will of interest to those looking at pervasive systems, sensor-driven e-science, mobile applications and user interfaces.


  1. Modelling and manipulating (990Kb PDF)
  2. Reasoning and maintaining (650Kb PDF)


This course gave rise to some thoughts on the inadequacy of the support available for programming with the semantic web. The ideas are mainly good and useful, but their integration into programming tools currently leaves a lot to be desired.


Academic literature

Claudio Bettini, Oliver Brdiczka, Karen Henricksen, Jadwiga Indulska, Daniela Nicklas, Anand Ranganathan and Daniele Riboni. A survey of context modelling and reasoning techniques. Pervasive and Mobile Computing 6(2), pp.161-180. 2010.

Juan Ye, Simon Dobson and Susan McKeever. Situation identification techniques in pervasive computing: a review. Pervasive and Mobile Computing 8(1), pp. 36-66. 2012.

Franz Baader, Diego Calvanese,Deborah McGuinness, Daniele Nardi and Peter Patel-Schneider. The description logic handbook: theory, implementations and applications. Cambridge University Press. 2003.

Graeme Stevenson and Simon Dobson. Sapphire: Generating Java runtime artefacts from OWL ontologies. In Proceedings of the 3rd International Workshop on Ontology-Driven Information Systems Engineering (ODISE 2011). London, UK. June 2011.

Adrian K. Clear, Thomas Holland, Simon Dobson, Aaron Quigley, Ross Shannon and Paddy Nixon. Situvis: a sensor data analysis and abstraction tool for pervasive computing systems. Pervasive and Mobile Computing 6(5), pages 575–589. 2010.

Thomas Bayes. Essay towards solving a problem in the doctrine of chances. Philosophical Transactions of the Royal Society. 1764.

Web sites and standards references

Frank Manola and Eric Miller. RDF Primer. Technical report, World Wide Web Consortium. 2004.

Michael Smith, Chris Welty and Deborah McGuinness. OWL Web Ontology Language guide. Technical report, World Wide Web Consortium. 2004.

Eric Prud’hommeaux and Andy Seaborne. SPARQL query language for RDF. Technical report, World Wide Web Consortium. 2008.

Linked data. Advocate site for linked scientific data using open standards.

Software for download

Situvis web site. Software for experimenting with predicate-based situation recognition.

Jena. The Apache project for building semantic web applications.

Pellet. An OWL reasoner.

Protégé. An ontology editor.

Leave a comment