Teaching the design of ubiquitous computing systems