This document presents an introduction to ubiquitous computing. It discusses how ubiquitous computing aims to make many computers available throughout the physical environment, yet make them effectively invisible to the user. It outlines the three waves of computing as mainframes, personal computers, and ubiquitous computing. It also covers key elements of ubiquitous computing including ubiquitous networking, sensing, access, and middleware. Issues with privacy, reliability, and social impact are discussed.