Fuzzy cognitive maps (FCMs) keep growing in popularity within the scientific community. However, despite substantial advances in the theory and applications of FCMs, there is a lack of an up-to-date, comprehensive presentation of the state-of-the-art in this domain. In this review study we are filling that gap. First, we present basic FCM concepts and analyze their static and dynamic properties, and next we elaborate on existing algorithms used for learning the FCM structure. Second, we provide a goal-driven overview of numerous theoretical developments recently reported in this area. Moreover, we consider the application of FCMs to time series forecasting and classification. Finally, in order to support the readers in their own research, we provide an overview of the existing software tools enabling the implementation of both existing FCM schemes as well as prospective theoretical and/or practical contributions.