Recent advances in technology have enabled the development of low cost, low power and multi functional wireless sensing devices. These devices are networked through setting up a Wireless Sensor Network (WSN). Sensors that form a WSN are expected to be remotely deployed in large numbers and to self-organize to perform distributed sensing and acting tasks. WSNs are growing rapidly in both size and complexity, and it is becoming increasingly difficult to develop and investigate such large and complex systems. In this paper we provide a brief introduction to WSN applications, i.e., properties, limitations and basic issues related to WSN design and development. We focus on an important aspect of the design: accurate localization of devices that form the network. The paper presents an overview of localization strategies and attempts to classify different techniques. A set of properties by which localization systems are evaluated are examined. We then describe a number of existing localization systems, and discuss the results of performance evaluation of some of them through simulation and experiments using a testbed implementation.