The term “ubiquitous computing” describes the vision of incorporating sensing, computation, and communication into everyday things in order to make them and their surroundings “smart”. Smart things can detect where they are, sense what is around them, detect and communicate with other smart things, remember what they were used for previously, and reason about the kind of future actions they might likely be used for. The lectures will introduce the vision behind ubiquitous computing, describe the technological foundations for it, and discuss some of its social implications and technical challenges.