Adaptive systems have been a hot topic in various areas like hypermedia systems, e-commerce systems, e-learning environments and information retrieval. In order to provide adaptivity, these systems need to keep track of different types of information about their users. Therefore, user modeling is at the heart of the adaptation process. In this paper, different user modeling techniques will be reviewed with the focus on what needs to be modeled and how it will be modeled, i.e., the demographic information of the users are collected in most of these systems, however, how it will be used in the adaptation process depends on the methodology being followed. The evaluation of different user modeling approaches and examination of some recent adaptive e-learning systems' architectures will also be provided.